summaryrefslogtreecommitdiff
path: root/ui/routes/(app)/+layout.svelte
diff options
context:
space:
mode:
authorKit La Touche <kit@transneptune.net>2024-12-03 13:44:05 -0500
committerKit La Touche <kit@transneptune.net>2024-12-03 13:44:05 -0500
commitc6fbd21c27277dd76c4dbabf5f1bf24f58142a1a (patch)
tree94392c1cafc88e91b14ebbb5a1e39eb86df41bc8 /ui/routes/(app)/+layout.svelte
parentd89d64a1bd71bbb0f545818794f574fc80046c0f (diff)
parent4e3ad13aca163e733724b205c250bdb67cc56c29 (diff)
Merge branch 'main' into wip/stylize
Diffstat (limited to 'ui/routes/(app)/+layout.svelte')
-rw-r--r--ui/routes/(app)/+layout.svelte32
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 />