summaryrefslogtreecommitdiff
path: root/ui/routes/(app)
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-05-14 00:46:13 -0400
committerOwen Jacobson <owen@grimoire.ca>2025-05-14 00:46:59 -0400
commitae93188f0f4f36086622636ba9ae4810cbd1f8c9 (patch)
tree3187eaaf5b6391bfe8e135c829bcee47feed41ea /ui/routes/(app)
parent63291a543aac293d91f2f64faf47bb48886b59c4 (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.svelte26
-rw-r--r--ui/routes/(app)/ch/[channel]/+page.svelte2
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));