From 2f2348f459e3b6683284975e63df356e8c821bdc Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Wed, 1 Oct 2025 11:13:09 -0500 Subject: Fetch & display received DMs from relays --- src/lib/nip17.ts | 6 ++---- src/routes/(app)/dm/[recipient]/+page.svelte | 27 +++++++++++++++++++-------- 2 files changed, 21 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/lib/nip17.ts b/src/lib/nip17.ts index 84790275..495f897e 100644 --- a/src/lib/nip17.ts +++ b/src/lib/nip17.ts @@ -79,13 +79,11 @@ const giftWrap = (event: object, receiverPK: string) => { return finalizeEvent(giftWrapEvent, secretKey); } -export const decryptNIP17MessageNIP07 = async (text: string): string => { - const wrapped = JSON.parse(text); +export const decryptNIP17MessageNIP07 = async (wrapped: object): object => { const sealedText = await window.nostr.nip44.decrypt( wrapped.pubkey, wrapped.content); const sealed = JSON.parse(sealedText); const rumourText = await window.nostr.nip44.decrypt( sealed.pubkey, sealed.content); - const rumour = JSON.parse(rumourText); - return rumour.content; + return JSON.parse(rumourText); } diff --git a/src/routes/(app)/dm/[recipient]/+page.svelte b/src/routes/(app)/dm/[recipient]/+page.svelte index 4f02829d..971c0cd5 100644 --- a/src/routes/(app)/dm/[recipient]/+page.svelte +++ b/src/routes/(app)/dm/[recipient]/+page.svelte @@ -12,8 +12,16 @@ const pool = new SimplePool(); import { PUBLIC_DM_RELAYS } from '$env/static/public'; const DM_RELAYS_LIST = PUBLIC_DM_RELAYS.split(','); + const DM_FETCH_LIMIT = 256; let text = $state(""); + let events = $state([]); + + pool.querySync(DM_RELAYS_LIST, + { kinds: [1059], "#p": [user.pubkey], limit: DM_FETCH_LIMIT }) + .then(wrapped => + Promise.all(wrapped.map(decryptMessage)) + .then(rumours => events = rumours)); const btnCreateMessage = async () => { let event; @@ -28,15 +36,12 @@ await Promise.any(pool.publish(DM_RELAYS_LIST, event)); } - const btnDecryptMessage = async () => { + const decryptMessage = async (event: object): object => { if (window.nostr) { - text = await libnip17.decryptNIP17MessageNIP07(text); + return await libnip17.decryptNIP17MessageNIP07(event); } else { - // TODO get events from relays instead of the text box - const wrapped = JSON.parse(text); const sk = await getPrivateKey(user); - const rumour = toolsnip17.unwrapEvent(wrapped, sk); - text = rumour.content; + return toolsnip17.unwrapEvent(event, sk); } } @@ -56,9 +61,15 @@ >Direct Messages

You are sending nostr messages to {recipient.username}.

+

Received Messages:

+ + - - + -- cgit v1.2.3