From c7a19e1c2dabc75fc5b09c5fcefd32b586e8bc88 Mon Sep 17 00:00:00 2001 From: Patrick PReis Date: Thu, 4 Dec 2025 22:08:49 -0300 Subject: [PATCH 1/3] feat: return diVine videos only --- packages/ditto/controllers/api/search.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/ditto/controllers/api/search.ts b/packages/ditto/controllers/api/search.ts index f4fade5b..fb009642 100644 --- a/packages/ditto/controllers/api/search.ts +++ b/packages/ditto/controllers/api/search.ts @@ -18,6 +18,7 @@ const searchQuerySchema = z.object({ following: z.boolean().default(false), account_id: n.id().optional(), offset: z.coerce.number().nonnegative().catch(0), + short_videos_only: z.coerce.boolean().default(false), }); type SearchQuery = z.infer & { since?: number; until?: number; limit: number }; @@ -66,7 +67,14 @@ const searchController: AppController = async (c) => { ), Promise.all( events - .filter((event) => event.kind === 1) + .filter((event) => { + // If short_videos_only is true, only return kinds 22 and 34236 + if (result.data.short_videos_only) { + return [22, 34236].includes(event.kind); + } + // Otherwise return all status kinds + return [1, 21, 22, 34235, 34236].includes(event.kind); + }) .map((event) => renderStatus(relay, event, { viewerPubkey })) .filter(Boolean), ), @@ -141,9 +149,9 @@ function typeToKinds(type: SearchQuery['type']): number[] { case 'accounts': return [0]; case 'statuses': - return [1]; + return [1, 21, 22, 34235, 34236]; default: - return [0, 1]; + return [0, 1, 21, 22, 34235, 34236]; } } From f5f954e4c4b5af2cea5d71d39f5ba6243935c053 Mon Sep 17 00:00:00 2001 From: Patrick PReis Date: Thu, 4 Dec 2025 23:17:04 -0300 Subject: [PATCH 2/3] feat: index reply in kinds 20, 21, 22, 34235, 34236 --- packages/ditto/storages/DittoPgStore.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/ditto/storages/DittoPgStore.ts b/packages/ditto/storages/DittoPgStore.ts index b13d7a23..f4b1679b 100644 --- a/packages/ditto/storages/DittoPgStore.ts +++ b/packages/ditto/storages/DittoPgStore.ts @@ -490,6 +490,8 @@ export class DittoPgStore extends NPostgres { ext.reply = event.tags.some(([name]) => ['e', 'E'].includes(name)).toString(); } else if (event.kind === 6) { ext.reply = 'false'; + } else if ([21, 22, 34235, 34236].includes(event.kind)) { + ext.reply = event.tags.some(([name]) => name === 'e').toString(); } if ([1, 20, 30023].includes(event.kind)) { From 49f983f9489f054ac28c23d29202609a964da12f Mon Sep 17 00:00:00 2001 From: Patrick PReis Date: Fri, 5 Dec 2025 18:37:20 -0300 Subject: [PATCH 3/3] fix: reply now is always false for kinds 21, 22, 34235, 34236 --- packages/ditto/storages/DittoPgStore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ditto/storages/DittoPgStore.ts b/packages/ditto/storages/DittoPgStore.ts index f4b1679b..e226d785 100644 --- a/packages/ditto/storages/DittoPgStore.ts +++ b/packages/ditto/storages/DittoPgStore.ts @@ -491,7 +491,7 @@ export class DittoPgStore extends NPostgres { } else if (event.kind === 6) { ext.reply = 'false'; } else if ([21, 22, 34235, 34236].includes(event.kind)) { - ext.reply = event.tags.some(([name]) => name === 'e').toString(); + ext.reply = 'false' // reply must be handled in another way: https://github.com/nostr-protocol/nips/issues/2146 } if ([1, 20, 30023].includes(event.kind)) {