summaryrefslogtreecommitdiff
path: root/ui/routes/(app)/+layout.svelte
diff options
context:
space:
mode:
authorKit La Touche <kit@transneptune.net>2025-02-16 22:00:57 -0500
committerKit La Touche <kit@transneptune.net>2025-02-20 21:53:25 -0500
commitdaaf37a1ed3760f03fceb1123ebe80de3a2f280c (patch)
treee823603aa1683a2c07fd08dde724780147822348 /ui/routes/(app)/+layout.svelte
parent43af74832f9a2fa7f40dc71985eec9b0ada087dd (diff)
Separate channel metadata out into its own store
This is stored locally, and, while parallel to channel info, is not the same as. Eventually, this may hold info about moot/decayed channels, and grow unbounded. That'll need to be addressed.
Diffstat (limited to 'ui/routes/(app)/+layout.svelte')
-rw-r--r--ui/routes/(app)/+layout.svelte10
1 files changed, 8 insertions, 2 deletions
diff --git a/ui/routes/(app)/+layout.svelte b/ui/routes/(app)/+layout.svelte
index cbfef54..9ade399 100644
--- a/ui/routes/(app)/+layout.svelte
+++ b/ui/routes/(app)/+layout.svelte
@@ -6,7 +6,7 @@
import TinyGesture from 'tinygesture';
import { boot, subscribeToEvents } from '$lib/apiServer';
- import { currentUser, logins, channelsList, messages } from '$lib/store';
+ import { currentUser, logins, channelsList, channelsMetaList, messages } from '$lib/store';
import ChannelList from '$lib/components/ChannelList.svelte';
import CreateChannelForm from '$lib/components/CreateChannelForm.svelte';
@@ -23,6 +23,10 @@
channelsList.subscribe((val) => {
rawChannels = val.channels;
});
+ let rawChannelsMeta;
+ channelsMetaList.subscribe((val) => {
+ rawChannelsMeta = val.channelsMeta;
+ });
let rawMessages;
messages.subscribe((val) => {
rawMessages = val;
@@ -30,7 +34,9 @@
let enrichedChannels = $derived.by(() => {
const channels = rawChannels;
+ const channelsMeta = rawChannelsMeta;
const messages = rawMessages;
+
const enrichedChannels = [];
if (channels && messages) {
for (let ch of channels) {
@@ -38,7 +44,7 @@
let lastRun = runs?.slice(-1)[0];
let lastMessage = lastRun?.messages.slice(-1)[0];
let lastMessageAt = lastMessage?.at;
- let hasUnreads = lastMessageAt > ch.lastReadAt;
+ let hasUnreads = lastMessageAt > channelsMeta[ch.id]?.lastReadAt;
enrichedChannels.push({
...ch,
hasUnreads