diff options
| author | Kit La Touche <kit@transneptune.net> | 2024-12-03 13:44:05 -0500 |
|---|---|---|
| committer | Kit La Touche <kit@transneptune.net> | 2024-12-03 13:44:05 -0500 |
| commit | c6fbd21c27277dd76c4dbabf5f1bf24f58142a1a (patch) | |
| tree | 94392c1cafc88e91b14ebbb5a1e39eb86df41bc8 /ui/routes/(app)/+layout.svelte | |
| parent | d89d64a1bd71bbb0f545818794f574fc80046c0f (diff) | |
| parent | 4e3ad13aca163e733724b205c250bdb67cc56c29 (diff) | |
Merge branch 'main' into wip/stylize
Diffstat (limited to 'ui/routes/(app)/+layout.svelte')
| -rw-r--r-- | ui/routes/(app)/+layout.svelte | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/ui/routes/(app)/+layout.svelte b/ui/routes/(app)/+layout.svelte index 7d3a9eb..a82d302 100644 --- a/ui/routes/(app)/+layout.svelte +++ b/ui/routes/(app)/+layout.svelte @@ -19,6 +19,35 @@ let loading = $state(true); let channel = $derived($page.params.channel); + let rawChannels; + channelsList.subscribe((val) => { + rawChannels = val.channels; + }); + let rawMessages; + messages.subscribe((val) => { + rawMessages = val; + }); + + let enrichedChannels = $derived.by(() => { + const channels = rawChannels; + const messages = rawMessages; + const enrichedChannels = []; + if (channels && messages) { + for (let ch of channels) { + let runs = messages.inChannel(ch.id); + let lastRun = runs?.slice(-1)[0]; + let lastMessage = lastRun?.messages.slice(-1)[0]; + let lastMessageAt = lastMessage?.at; + let hasUnreads = lastMessageAt > ch.lastReadAt; + enrichedChannels.push({ + ...ch, + hasUnreads, + }); + } + } + return enrichedChannels; + }); + function onBooted(boot) { currentUser.set({ id: boot.login.id, @@ -90,6 +119,7 @@ <svelte:window on:beforeunload={beforeUnload}/> <svelte:head> + <!-- TODO: unread count? --> <title>pilcrow</title> </svelte:head> @@ -99,7 +129,7 @@ <div id="interface" class="p-2"> <nav id="sidebar" data-expanded={pageContext.showMenu}> <div class="channel-list"> - <ChannelList active={channel} channels={$channelsList.channels} /> + <ChannelList active={channel} channels={enrichedChannels} /> </div> <div class="create-channel"> <CreateChannelForm /> |
