diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-05-14 00:46:13 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-05-14 00:46:59 -0400 |
| commit | ae93188f0f4f36086622636ba9ae4810cbd1f8c9 (patch) | |
| tree | 3187eaaf5b6391bfe8e135c829bcee47feed41ea /ui/routes/(app) | |
| parent | 63291a543aac293d91f2f64faf47bb48886b59c4 (diff) | |
Move derivation of the synthesized view of channels (and messages) into `session`.
Diffstat (limited to 'ui/routes/(app)')
| -rw-r--r-- | ui/routes/(app)/+layout.svelte | 26 | ||||
| -rw-r--r-- | ui/routes/(app)/ch/[channel]/+page.svelte | 2 |
2 files changed, 3 insertions, 25 deletions
diff --git a/ui/routes/(app)/+layout.svelte b/ui/routes/(app)/+layout.svelte index 90fa82e..c7e1f22 100644 --- a/ui/routes/(app)/+layout.svelte +++ b/ui/routes/(app)/+layout.svelte @@ -22,29 +22,7 @@ let pageContext = getContext('page'); let channel = $derived(page.params.channel); - let rawChannels = $derived(session.channels); - let rawChannelsMeta = $derived(session.local.all); - let rawMessages = $derived(session.messages); - - function enrichChannels(channels, channelsMeta, messages) { - const enrichedChannels = []; - for (const ch of channels.values()) { - const createdAt = ch.at; - const channelMessages = messages.filter((message) => message.channel === ch.id); - const sentAt = channelMessages.map((message) => message.at); - const lastEventAt = Math.max(createdAt, ...sentAt); - - const lastReadAt = channelsMeta.get(ch.id)?.lastReadAt; - const hasUnreads = lastReadAt === undefined || lastEventAt > lastReadAt; - enrichedChannels.push({ - ...ch, - hasUnreads - }); - } - return enrichedChannels; - } - - const enrichedChannels = $derived(enrichChannels(rawChannels, rawChannelsMeta, rawMessages)); + let channels = $derived(session.channels); function setUpGestures() { if (!browser) { @@ -136,7 +114,7 @@ <div id="interface"> <nav id="sidebar" data-expanded={pageContext.showMenu}> - <ChannelList active={channel} channels={enrichedChannels} /> + <ChannelList active={channel} {channels} /> <div class="create-channel"> <CreateChannelForm {createChannel} /> </div> diff --git a/ui/routes/(app)/ch/[channel]/+page.svelte b/ui/routes/(app)/ch/[channel]/+page.svelte index 1130cd4..ea8cca6 100644 --- a/ui/routes/(app)/ch/[channel]/+page.svelte +++ b/ui/routes/(app)/ch/[channel]/+page.svelte @@ -11,7 +11,7 @@ let activeChannel; const channelId = $derived(page.params.channel); - const channel = $derived(session.channels.get(channelId)); + const channel = $derived(session.channels.find((channel) => channel.id === channelId)); const messages = $derived(session.messages.filter((message) => message.channel === channelId)); const unsent = $derived(outbox.messages.filter((message) => message.channel === channelId)); const deleted = $derived(outbox.deleted.map((message) => message.messageId)); |
