aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrien Hopkins <[email protected]>2025-10-18 20:53:47 -0500
committerAdrien Hopkins <[email protected]>2025-10-18 20:53:47 -0500
commit56e45190fd535f5f6c06914a8b9985e07bd7458c (patch)
tree94e2de847fd6386fd85e2c252976aa0fdff46ae3
parent38a691cd6004adde24c913f69b2bbd01b2541fb9 (diff)
downloadcoinos-ui-56e45190fd535f5f6c06914a8b9985e07bd7458c.tar.gz
coinos-ui-56e45190fd535f5f6c06914a8b9985e07bd7458c.zip
Add DM expiry UI
-rw-r--r--src/routes/(app)/dm/[recipient]/+page.svelte25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/routes/(app)/dm/[recipient]/+page.svelte b/src/routes/(app)/dm/[recipient]/+page.svelte
index e0702bc3..4f4d4061 100644
--- a/src/routes/(app)/dm/[recipient]/+page.svelte
+++ b/src/routes/(app)/dm/[recipient]/+page.svelte
@@ -20,6 +20,8 @@
let messageRumours = $state([]);
let dates = $state([]);
let warning = $state(undefined);
+ let expiryEnabled = $state(false);
+ let expiryDays = $state(7);
const appendMultimap = (map: Map, key: string, value: object) => {
if (map.has(key)) {
@@ -110,18 +112,19 @@
});
const sendMessage = async (message: string) => {
+ const expiry = expiryEnabled ? expiryDays : null;
let event1, event2;
if (await window.nostr.getPublicKey() === user.pubkey) {
event1 = await libnip17.createNIP17MessageNIP07(
- message, user.pubkey, recipient.pubkey);
+ message, user.pubkey, recipient.pubkey, recipient.pubkey, expiry);
event2 = await libnip17.createNIP17MessageNIP07(
- message, user.pubkey, recipient.pubkey, user.pubkey);
+ message, user.pubkey, recipient.pubkey, user.pubkey, expiry);
} else {
const sk = await getPrivateKey(user);
event1 = libnip17.createNIP17MessageSK(
- message, sk, recipient.pubkey);
+ message, sk, recipient.pubkey, recipient.pubkey, expiry);
event2 = libnip17.createNIP17MessageSK(
- message, sk, recipient.pubkey, user.pubkey);
+ message, sk, recipient.pubkey, user.pubkey, expiry);
}
console.log(Date.now() / 1000);
@@ -159,6 +162,19 @@
.warning {
color: #ff7f00;
}
+
+ .inline {
+ white-space: nowrap;
+ }
+
+ .short {
+ width: 6em;
+ height: 2em;
+ }
+
+ .tiny {
+ width: 2em;
+ }
</style>
<div class="container">
@@ -189,6 +205,7 @@
<textarea id="message-contents" bind:value={text}></textarea>
+ <input type="checkbox" class="tiny" bind:checked={expiryEnabled}>Enable message expiry in <input type="number" class="short" bind:value={expiryDays} disabled={!expiryEnabled} min="1" step="1" max="99999"> days.
<input id="send-message" type="button" class="btn" value="Send Message" on:click={async () => sendMessage(text)}>
<em><p class="warning" bind:this={warning}></p></em>
</div>