diff --git a/src/lib/chat/adapters/nip-10-adapter.ts b/src/lib/chat/adapters/nip-10-adapter.ts index 07b8959..ad46271 100644 --- a/src/lib/chat/adapters/nip-10-adapter.ts +++ b/src/lib/chat/adapters/nip-10-adapter.ts @@ -110,7 +110,11 @@ export class Nip10Adapter extends ChatProtocolAdapter { } const pointer = identifier.value; - const relayHints = identifier.relays || []; + // Merge relay hints from both top-level and value (nevent encoding includes both) + const relayHints = [ + ...(identifier.relays || []), + ...(pointer.relays || []), + ]; // 1. Fetch the provided event const providedEvent = await this.fetchEvent(pointer.id, relayHints); @@ -792,6 +796,9 @@ export class Nip10Adapter extends ChatProtocolAdapter { sub.unsubscribe(); resolve(); }, + complete: () => { + clearTimeout(timeout); + }, }); }); diff --git a/src/lib/chat/adapters/nip-22-adapter.ts b/src/lib/chat/adapters/nip-22-adapter.ts index d649057..f4a9ab6 100644 --- a/src/lib/chat/adapters/nip-22-adapter.ts +++ b/src/lib/chat/adapters/nip-22-adapter.ts @@ -136,7 +136,11 @@ export class Nip22Adapter extends ChatProtocolAdapter { } const pointer = identifier.value; - const relayHints = identifier.relays || []; + // Merge relay hints from both top-level and value (nevent encoding includes both) + const relayHints = [ + ...(identifier.relays || []), + ...(pointer.relays || []), + ]; // 1. Fetch the root event let rootEvent: NostrEvent; @@ -544,6 +548,15 @@ export class Nip22Adapter extends ChatProtocolAdapter { resolve(response); } }, + error: (err) => { + clearTimeout(timeout); + sub.unsubscribe(); + console.error("[NIP-22] Subscription error:", err); + resolve(null); + }, + complete: () => { + clearTimeout(timeout); + }, }); }); } @@ -599,6 +612,15 @@ export class Nip22Adapter extends ChatProtocolAdapter { resolve(response); } }, + error: (err) => { + clearTimeout(timeout); + sub.unsubscribe(); + console.error("[NIP-22] Subscription error:", err); + resolve(null); + }, + complete: () => { + clearTimeout(timeout); + }, }); }); }