From 89a9d373791682a5042b36a1f42c7246345cd387 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 12 Nov 2024 16:44:34 -0800 Subject: [PATCH] Only load messages on message page, avoid duplicates --- src/app/components/ChannelMessage.svelte | 2 +- src/routes/+layout.svelte | 6 ---- src/routes/chat/+layout.svelte | 36 +++++++++++++++++++----- src/routes/chat/+page.svelte | 18 +----------- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/app/components/ChannelMessage.svelte b/src/app/components/ChannelMessage.svelte index 48241d52..10c75c99 100644 --- a/src/app/components/ChannelMessage.svelte +++ b/src/app/components/ChannelMessage.svelte @@ -70,7 +70,7 @@ class="group relative flex w-full flex-col gap-1 p-2 text-left transition-colors {inert ? 'hover:bg-base-300' : ''}"> -
+
{#if showPubkey} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 32ef2c55..a6552f46 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -130,12 +130,6 @@ tracker: storageAdapters.fromTracker(tracker, {throttle: 1000}), }).then(() => sleep(300)) - repository.on("update", ({added}) => { - for (const event of added) { - state.ensureUnwrapped(event) - } - }) - for (const url of INDEXER_RELAYS) { loadRelay(url) } diff --git a/src/routes/chat/+layout.svelte b/src/routes/chat/+layout.svelte index c73a4599..3681518e 100644 --- a/src/routes/chat/+layout.svelte +++ b/src/routes/chat/+layout.svelte @@ -3,32 +3,49 @@ import {page} from "$app/stores" import {WEEK, ctx, ago} from "@welshman/lib" import {WRAP} from "@welshman/util" - import {pubkey, subscribe} from "@welshman/app" + import type {TrustedEvent} from "@welshman/util" + import {pubkey, repository, subscribe} from "@welshman/app" import Icon from "@lib/components/Icon.svelte" import Page from "@lib/components/Page.svelte" import Button from "@lib/components/Button.svelte" + import Spinner from "@lib/components/Spinner.svelte" import SecondaryNav from "@lib/components/SecondaryNav.svelte" import SecondaryNavHeader from "@lib/components/SecondaryNavHeader.svelte" import SecondaryNavSection from "@lib/components/SecondaryNavSection.svelte" import ChatStart from "@app/components/ChatStart.svelte" import ChatItem from "@app/components/ChatItem.svelte" - import {chatSearch, pullConservatively} from "@app/state" + import {chatSearch, pullConservatively, ensureUnwrapped} from "@app/state" import {pushModal} from "@app/modal" const startChat = () => pushModal(ChatStart) + const promise = pullConservatively({ + filters: [{kinds: [WRAP], "#p": [$pubkey!], until: ago(WEEK)}], + relays: ctx.app.router.UserInbox().getUrls(), + }) + + const onUpdate = ({added}: {added: TrustedEvent[]}) => { + for (const event of added) { + ensureUnwrapped(event) + } + } + let term = "" $: chats = $chatSearch.searchOptions(term).filter(c => c.pubkeys.length > 1) onMount(() => { - const filter = {kinds: [WRAP], "#p": [$pubkey!]} - const relays = ctx.app.router.UserInbox().getUrls() - const sub = subscribe({filters: [{...filter, since: ago(WEEK)}], relays}) + const sub = subscribe({ + filters: [{kinds: [WRAP], "#p": [$pubkey!], since: ago(WEEK)}], + relays: ctx.app.router.UserInbox().getUrls(), + }) - pullConservatively({filters: [filter], relays}) + repository.on("update", onUpdate) - return () => sub.close() + return () => { + sub.close() + repository.off("update", onUpdate) + } }) @@ -50,6 +67,11 @@ {#each chats as { id, pubkeys, messages } (id)} {/each} + {#await promise} +
+ Loading conversations... +
+ {/await}
{/key} diff --git a/src/routes/chat/+page.svelte b/src/routes/chat/+page.svelte index 571d4617..f8ac56b6 100644 --- a/src/routes/chat/+page.svelte +++ b/src/routes/chat/+page.svelte @@ -1,14 +1,10 @@