diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/nip17.ts | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/src/lib/nip17.ts b/src/lib/nip17.ts index 9a6d01f6..b8352d1e 100644 --- a/src/lib/nip17.ts +++ b/src/lib/nip17.ts @@ -313,6 +313,19 @@ const publishToPreferred = async (event: object, pubkey: string, expiryEnabled: } } +const createAndPublishMessageEvent = async (sk: Uint8Array, message: string, userPK: string, recipientPK: string, eventFor: string, expiryDays?: number) => { + let event; + if (sk === null) { // Use NIP-07 extension + event = await createNIP17MessageNIP07( + message, userPK, recipientPK, eventFor, expiryDays); + } else { + event1 = createNIP17MessageSK( + message, sk, recipientPK, eventFor, expiryDays); + } + + return publishToPreferred(event, eventFor, expiryDays != null); +} + // Sends a NIP-17 message from `user` to `recipient`. // If expiryDays is set, messages will expire after that many days. export const send = async (message: string, user: object, recipient: object, expiryDays?: number) => { @@ -322,20 +335,14 @@ export const send = async (message: string, user: object, recipient: object, exp // Store sk for auth handler currentSk = sk; - if (sk === null) { - // Use NIP-07 extension - event1 = await createNIP17MessageNIP07( - message, user.pubkey, recipient.pubkey, recipient.pubkey, expiryDays); - event2 = await createNIP17MessageNIP07( - message, user.pubkey, recipient.pubkey, user.pubkey, expiryDays); + if (user.pubkey === recipient.pubkey) { + return createAndPublishMessageEvent( + sk, message, user.pubkey, recipient.pubkey, user.pubkey, expiryDays); } else { - event1 = createNIP17MessageSK( - message, sk, recipient.pubkey, recipient.pubkey, expiryDays); - event2 = createNIP17MessageSK( - message, sk, recipient.pubkey, user.pubkey, expiryDays); + const p1 = createAndPublishMessageEvent( + sk, message, user.pubkey, recipient.pubkey, recipient.pubkey, expiryDays); + const p2 = createAndPublishMessageEvent( + sk, message, user.pubkey, recipient.pubkey, user.pubkey, expiryDays); + return Promise.all([p1, p2]); } - - const p1 = publishToPreferred(event1, recipient.pubkey, expiryDays != null); - const p2 = publishToPreferred(event2, user.pubkey, expiryDays != null); - return Promise.all([p1, p2]); } |
