aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/nip17.ts35
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]);
}