From 10c12c3c48cb3fa59a8faaeef5b58d3428da0c80 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Thu, 4 Dec 2025 14:27:43 -0800 Subject: [PATCH] Improve time based chat partitioning --- CHANGELOG.md | 1 + src/routes/spaces/[relay]/[h]/+page.svelte | 6 ++++-- src/routes/spaces/[relay]/chat/+page.svelte | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48694f2..00bee03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Fix skinny profile images * Custom handler for relay urls +* Improve time based chat partitioning # 1.6.0 diff --git a/src/routes/spaces/[relay]/[h]/+page.svelte b/src/routes/spaces/[relay]/[h]/+page.svelte index 068dc88..ef0924a 100644 --- a/src/routes/spaces/[relay]/[h]/+page.svelte +++ b/src/routes/spaces/[relay]/[h]/+page.svelte @@ -5,7 +5,7 @@ import {page} from "$app/stores" import type {Readable} from "svelte/store" import type {MakeNonOptional} from "@welshman/lib" - import {now, formatTimestampAsDate, ago, MINUTE} from "@welshman/lib" + import {now, int, formatTimestampAsDate, ago, MINUTE} from "@welshman/lib" import type {TrustedEvent, EventContent} from "@welshman/util" import { makeEvent, @@ -213,6 +213,7 @@ let previousDate let previousKind let previousPubkey + let previousCreatedAt = 0 let newMessagesSeen = false if (events) { @@ -249,14 +250,15 @@ type: "note", value: event, showPubkey: - date !== previousDate || previousPubkey !== event.pubkey || + event.created_at - previousCreatedAt > int(3, MINUTE) || [ROOM_ADD_MEMBER, ROOM_REMOVE_MEMBER].includes(previousKind!), }) previousDate = date previousKind = event.kind previousPubkey = event.pubkey + previousCreatedAt = event.created_at seen.add(event.id) } } diff --git a/src/routes/spaces/[relay]/chat/+page.svelte b/src/routes/spaces/[relay]/chat/+page.svelte index 24d6fae..0fca049 100644 --- a/src/routes/spaces/[relay]/chat/+page.svelte +++ b/src/routes/spaces/[relay]/chat/+page.svelte @@ -3,7 +3,7 @@ import {page} from "$app/stores" import type {Readable} from "svelte/store" import {readable} from "svelte/store" - import {now, formatTimestampAsDate, MINUTE, ago} from "@welshman/lib" + import {now, int, formatTimestampAsDate, MINUTE, ago} from "@welshman/lib" import type {TrustedEvent, EventContent} from "@welshman/util" import {makeEvent, MESSAGE, RELAY_ADD_MEMBER, RELAY_REMOVE_MEMBER} from "@welshman/util" import {pubkey, publishThunk} from "@welshman/app" @@ -138,6 +138,7 @@ let previousDate let previousKind let previousPubkey + let previousCreatedAt = 0 let newMessagesSeen = false if (events) { @@ -174,14 +175,15 @@ type: "note", value: event, showPubkey: - date !== previousDate || previousPubkey !== event.pubkey || + event.created_at - previousCreatedAt > int(3, MINUTE) || [RELAY_ADD_MEMBER, RELAY_REMOVE_MEMBER].includes(previousKind!), }) previousDate = date previousKind = event.kind previousPubkey = event.pubkey + previousCreatedAt = event.created_at seen.add(event.id) } }