From 38d7e5f262206612fa33e941b02d21fa495047f8 Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Mon, 22 Dec 2025 16:03:25 -0500 Subject: Add sidebar with chats list to /dm --- src/routes/(app)/dm/+page.svelte | 77 +++++++++++++++++++++++++++++----------- 1 file changed, 57 insertions(+), 20 deletions(-) diff --git a/src/routes/(app)/dm/+page.svelte b/src/routes/(app)/dm/+page.svelte index 31b083d7..f7215861 100644 --- a/src/routes/(app)/dm/+page.svelte +++ b/src/routes/(app)/dm/+page.svelte @@ -22,12 +22,12 @@ const nostrUserInfo = await getNostrUserInfo(pubkey); const valid = await isValid(pubkey, nostrUserInfo.nip05); const username = await usernameFromPubkey(pubkey); - return { name: username || nostrUserInfo.name, nip05: nostrUserInfo.nip05, valid }; + return { name: username || nostrUserInfo.name, nip05: nostrUserInfo.nip05, valid, pubkey }; } const updateSendersRecipients = async (rumours: object[]) => { - const senders = new Set(); - const recipients = new Set(); + const senders = new Set(); + const recipients = new Set(); for (const rumour of rumours) { if (rumour.pubkey !== user.pubkey) { senders.add(await userInfo(rumour.pubkey)); @@ -39,38 +39,75 @@ } messageSenders = Array.from(senders); messageRecipients = Array.from(recipients); + + const chatMap = new Map(); + for (const sender of senders) { + chatMap.set(sender.pubkey, sender); + } + for (const recipient of recipients) { + chatMap.set(recipient.pubkey, recipient); + } + chats = Array.from(chatMap.values()); }; let messageSenders = $state([]); let messageRecipients = $state([]); + let chats = $state([]); getMessageRumours(user).then(updateSendersRecipients); + + let selectedChat = $state(null); -
-
+
+ +

{$t("dm.header")}

-

Welcome to the DM homepage!

- -

The following people have sent messages to you:

-
    - {#each messageSenders as sender} -
  • {sender.name} ({sender.nip05}{#if sender.valid} ✓{/if})
  • - {/each} -
- -

The following people have received messages from you:

-
    - {#each messageRecipients as recipient} -
  • {recipient.name} ({recipient.nip05}{#if recipient.valid} ✓{/if})
  • - {/each} -
+ +

You are talking to {selectedChat}.

+ + {#if selectedChat} + + {/if}
-- cgit v1.2.3