diff options
| author | Adrien Hopkins <[email protected]> | 2025-10-02 10:01:12 -0500 |
|---|---|---|
| committer | Adrien Hopkins <[email protected]> | 2025-10-02 10:01:12 -0500 |
| commit | 8f161a474d7dba438289d5dbe93684325560f85f (patch) | |
| tree | 52b35c09831cddbb321fd095d5e4bb4ac87ca796 /src | |
| parent | c6b94b9ac035bf7cc27aa441d1675cb15a1f2fd3 (diff) | |
| download | coinos-ui-8f161a474d7dba438289d5dbe93684325560f85f.tar.gz coinos-ui-8f161a474d7dba438289d5dbe93684325560f85f.zip | |
Send copy of messages to sender
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/nip17.ts | 18 | ||||
| -rw-r--r-- | src/routes/(app)/dm/[recipient]/+page.svelte | 14 |
2 files changed, 22 insertions, 10 deletions
diff --git a/src/lib/nip17.ts b/src/lib/nip17.ts index 495f897e..6cb8f9e3 100644 --- a/src/lib/nip17.ts +++ b/src/lib/nip17.ts @@ -7,17 +7,23 @@ const randomTimestamp = () => Math.floor( Date.now() / 1000 - Math.random() * TWO_DAYS); // Create a NIP-17 message using a provided sender secret key. -export const createNIP17MessageSK = (text: string, senderSK: Uint8Array, receiverPK: string) => { +// If wrapPK is specified and different than receiverPK, +// the message will be gift-wrapped to wrapPK +// but the rumour will be sent to receiverPK. +export const createNIP17MessageSK = (text: string, senderSK: Uint8Array, receiverPK: string, wrapPK: string = null) => { const rumour = createRumour(text, getPublicKey(senderSK), receiverPK); - const sealed = sealRumourSK(rumour, senderSK, receiverPK); - return giftWrap(sealed, receiverPK); + const sealed = sealRumourSK(rumour, senderSK, wrapPK || receiverPK); + return giftWrap(sealed, wrapPK || receiverPK); } // Create a NIP-17 message using NIP-07, requiring no sender secret key. -export const createNIP17MessageNIP07 = async (text: string, senderPK: string, receiverPK: string) => { +// If wrapPK is specified and different than receiverPK, +// the message will be gift-wrapped to wrapPK +// but the rumour will be sent to receiverPK. +export const createNIP17MessageNIP07 = async (text: string, senderPK: string, receiverPK: string, wrapPK: string = null) => { const rumour = createRumour(text, senderPK, receiverPK); - const sealed = await sealRumourNip07(rumour, receiverPK); - return giftWrap(sealed, receiverPK); + const sealed = await sealRumourNip07(rumour, wrapPK || receiverPK); + return giftWrap(sealed, wrapPK || receiverPK); } const createRumour = (text: string, senderPK: string, receiverPK: string) => { diff --git a/src/routes/(app)/dm/[recipient]/+page.svelte b/src/routes/(app)/dm/[recipient]/+page.svelte index 75e55eea..a4334ff5 100644 --- a/src/routes/(app)/dm/[recipient]/+page.svelte +++ b/src/routes/(app)/dm/[recipient]/+page.svelte @@ -27,16 +27,22 @@ })); const btnCreateMessage = async () => { - let event; + let event1, event2; if (window.nostr) { - event = await libnip17.createNIP17MessageNIP07( + event1 = await libnip17.createNIP17MessageNIP07( text, user.pubkey, recipient.pubkey); + event2 = await libnip17.createNIP17MessageNIP07( + text, user.pubkey, recipient.pubkey, user.pubkey); } else { const sk = await getPrivateKey(user); - event = libnip17.createNIP17MessageSK(text, sk, recipient.pubkey); + event1 = libnip17.createNIP17MessageSK(text, sk, recipient.pubkey); + event2 = libnip17.createNIP17MessageSK( + text, sk, recipient.pubkey, user.pubkey); } - await Promise.any(pool.publish(DM_RELAYS_LIST, event)); + const p1 = Promise.any(pool.publish(DM_RELAYS_LIST, event1)); + const p2 = Promise.any(pool.publish(DM_RELAYS_LIST, event2)); + await Promise.all([p1, p2]); } const decryptMessage = async (event: object): object => { |
