From 018401a084e1be87998147e7427bee5abe0d6415 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Jan 2026 20:18:19 +0000 Subject: [PATCH] fix: Use kind 10050 (DM relay list) for gift wrap syncing NIP-17 specifies kind 10050 for DM relay list, not kind 10002. **Changes:** - Fetch kind 10050 (DM relay list) instead of kind 10002 - Parse relay tags with read marker for inbox relays - These relays are used for: - Syncing gift wraps on inbox load - Subscribing to new gift wraps - (Future) Sending gift wraps to recipient's DM relays Kind 10050 format: - ['relay', '', 'read'] - for receiving DMs - ['relay', '', 'write'] - for sending DMs - ['relay', ''] - for both --- src/components/InboxViewer.tsx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/components/InboxViewer.tsx b/src/components/InboxViewer.tsx index ea6a283..6cc73b1 100644 --- a/src/components/InboxViewer.tsx +++ b/src/components/InboxViewer.tsx @@ -48,19 +48,22 @@ export default function InboxViewer({ action }: InboxViewerProps) { const syncGiftWraps = async () => { setLoading(true); try { - // Get inbox relays from user's kind 10002 relay list event - const relayListEvent = await firstValueFrom( - eventStore.replaceable({ kind: 10002, pubkey }), + // Get DM relays from user's kind 10050 relay list (NIP-17) + const dmRelayListEvent = await firstValueFrom( + eventStore.replaceable({ kind: 10050, pubkey }), ); - const inboxRelays = relayListEvent - ? Array.from(getInboxes(relayListEvent)) + // Kind 10050 uses read/write relay tags + const dmRelays = dmRelayListEvent + ? dmRelayListEvent.tags + .filter((t) => t[0] === "relay" && (!t[2] || t[2] === "read")) + .map((t) => t[1]) : []; - // Fallback to default relays if no inbox relays + // Fallback to default relays if no DM relays configured const relays = - inboxRelays.length > 0 - ? inboxRelays + dmRelays.length > 0 + ? dmRelays : [ "wss://relay.damus.io", "wss://nos.lol",