diff --git a/src/components/ChatViewer.tsx b/src/components/ChatViewer.tsx index 92e2e17..41dac26 100644 --- a/src/components/ChatViewer.tsx +++ b/src/components/ChatViewer.tsx @@ -191,13 +191,13 @@ const MessageItem = memo(function MessageItem({ return (
-
+
{ if (typeof response === "string") { - console.log("[NIP-29] EOSE received for messages"); + console.log("[NIP-29] EOSE received"); } else { console.log( - `[NIP-29] Received message: ${response.id.slice(0, 8)}...`, + `[NIP-29] Received event k${response.kind}: ${response.id.slice(0, 8)}...`, ); } }, }); - pool - .subscription([relayUrl], [nutzapFilter], { - eventStore, - }) - .subscribe({ - next: (response) => { - if (typeof response === "string") { - console.log("[NIP-29] EOSE received for nutzaps"); - } else { - console.log( - `[NIP-29] Received nutzap: ${response.id.slice(0, 8)}...`, - ); + // Return observable from EventStore which will update automatically + return eventStore.timeline(filter).pipe( + map((events) => { + const messages = events.map((event) => { + // Convert nutzaps (kind 9321) using nutzapToMessage + if (event.kind === 9321) { + return this.nutzapToMessage(event, conversation.id); } - }, - }); + // All other events use eventToMessage + return this.eventToMessage(event, conversation.id); + }); - // Combine chat messages and nutzaps from EventStore - const chatMessages$ = eventStore.timeline(chatFilter); - const nutzapMessages$ = eventStore.timeline(nutzapFilter); - - return combineLatest([chatMessages$, nutzapMessages$]).pipe( - map(([chatEvents, nutzapEvents]) => { - const chatMsgs = chatEvents.map((event) => - this.eventToMessage(event, conversation.id), - ); - - const nutzapMsgs = nutzapEvents.map((event) => - this.nutzapToMessage(event, conversation.id), - ); - - const allMessages = [...chatMsgs, ...nutzapMsgs]; - console.log( - `[NIP-29] Timeline has ${chatMsgs.length} messages, ${nutzapMsgs.length} nutzaps`, - ); - - return allMessages.sort((a, b) => a.timestamp - b.timestamp); + console.log(`[NIP-29] Timeline has ${messages.length} events`); + return messages.sort((a, b) => a.timestamp - b.timestamp); }), ); }