From caf59f4078f3033341c542b6ea9078ed1be195c4 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 1 Apr 2025 19:49:31 -0500 Subject: [PATCH] Insert NIP-89 "client" tags when users post statuses --- packages/ditto/controllers/api/statuses.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/ditto/controllers/api/statuses.ts b/packages/ditto/controllers/api/statuses.ts index e80441b6..9d44ac56 100644 --- a/packages/ditto/controllers/api/statuses.ts +++ b/packages/ditto/controllers/api/statuses.ts @@ -17,6 +17,7 @@ import { languageSchema } from '@/schema.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; import { assertAuthenticated, createEvent, parseBody, updateListEvent } from '@/utils/api.ts'; import { getCustomEmojis } from '@/utils/custom-emoji.ts'; +import { getInstanceMetadata } from '@/utils/instance.ts'; import { getInvoice, getLnurl } from '@/utils/lnurl.ts'; import { purifyEvent } from '@/utils/purify.ts'; import { getZapSplits } from '@/utils/zap-split.ts'; @@ -25,6 +26,7 @@ import { accountFromPubkey, renderAccount } from '@/views/mastodon/accounts.ts'; import { renderReblog, renderStatus } from '@/views/mastodon/statuses.ts'; const createStatusSchema = z.object({ + disclose_client: z.boolean().nullish(), in_reply_to_id: n.id().nullish(), language: languageSchema.nullish(), media_ids: z.string().array().nullish(), @@ -265,6 +267,11 @@ const createStatusController: AppController = async (c) => { content += mediaUrls.join('\n'); } + if (data.disclose_client) { + const { name } = await getInstanceMetadata(c.var); + tags.push(['client', name, `31990:${await conf.signer.getPublicKey()}:ditto`, conf.relay]); + } + const event = await createEvent({ kind: 1, content,