From 952ebd38bf7b968cedc84b4388d66c342e9ce045 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 12 Nov 2024 13:32:54 -0800 Subject: [PATCH] Update router methods --- src/app/commands.ts | 12 ++++---- src/lib/editor/util.ts | 6 ++-- src/routes/settings/+page.svelte | 4 +-- src/routes/settings/profile/+page.svelte | 2 +- .../spaces/[relay]/threads/+page.svelte | 29 ++++++++++++------- 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/app/commands.ts b/src/app/commands.ts index d9e1d052..b2b3ac7b 100644 --- a/src/app/commands.ts +++ b/src/app/commands.ts @@ -196,7 +196,7 @@ export const broadcastUserData = async (relays: string[]) => { export const addSpaceMembership = async (url: string) => { const list = get(userMembership) || makeList({kind: MEMBERSHIPS}) const event = await addToListPublicly(list, ["r", url]).reconcile(nip44EncryptToSelf) - const relays = uniq([...ctx.app.router.WriteRelays().getUrls(), ...getRelayTagValues(event.tags)]) + const relays = uniq([...ctx.app.router.FromUser().getUrls(), ...getRelayTagValues(event.tags)]) return publishThunk({event, relays}).result } @@ -205,7 +205,7 @@ export const removeSpaceMembership = async (url: string) => { const list = get(userMembership) || makeList({kind: MEMBERSHIPS}) const pred = (t: string[]) => t[t[0] === "r" ? 1 : 2] === url const event = await removeFromListByPredicate(list, pred).reconcile(nip44EncryptToSelf) - const relays = uniq([...ctx.app.router.WriteRelays().getUrls(), ...getRelayTagValues(event.tags)]) + const relays = uniq([...ctx.app.router.FromUser().getUrls(), ...getRelayTagValues(event.tags)]) return publishThunk({event, relays}).result } @@ -213,7 +213,7 @@ export const removeSpaceMembership = async (url: string) => { export const addRoomMembership = async (url: string, room: string) => { const list = get(userMembership) || makeList({kind: MEMBERSHIPS}) const event = await addToListPublicly(list, tagRoom(room, url)).reconcile(nip44EncryptToSelf) - const relays = uniq([...ctx.app.router.WriteRelays().getUrls(), ...getRelayTagValues(event.tags)]) + const relays = uniq([...ctx.app.router.FromUser().getUrls(), ...getRelayTagValues(event.tags)]) return publishThunk({event, relays}).result } @@ -222,7 +222,7 @@ export const removeRoomMembership = async (url: string, room: string) => { const list = get(userMembership) || makeList({kind: MEMBERSHIPS}) const pred = (t: string[]) => equals(tagRoom(room, url), t) const event = await removeFromListByPredicate(list, pred).reconcile(nip44EncryptToSelf) - const relays = uniq([...ctx.app.router.WriteRelays().getUrls(), ...getRelayTagValues(event.tags)]) + const relays = uniq([...ctx.app.router.FromUser().getUrls(), ...getRelayTagValues(event.tags)]) return publishThunk({event, relays}).result } @@ -241,7 +241,7 @@ export const setRelayPolicy = (url: string, read: boolean, write: boolean) => { return publishThunk({ event: createEvent(list.kind, {tags}), - relays: ctx.app.router.WriteRelays().getUrls(), + relays: ctx.app.router.FromUser().getUrls(), }).result } @@ -258,7 +258,7 @@ export const setInboxRelayPolicy = (url: string, enabled: boolean) => { return publishThunk({ event: createEvent(list.kind, {tags}), - relays: ctx.app.router.WriteRelays().getUrls(), + relays: ctx.app.router.FromUser().getUrls(), }).result } } diff --git a/src/lib/editor/util.ts b/src/lib/editor/util.ts index 207fd72b..815e533a 100644 --- a/src/lib/editor/util.ts +++ b/src/lib/editor/util.ts @@ -65,21 +65,21 @@ export const getEditorTags = (editor: Editor) => { ({attrs: {kind, pubkey, identifier, relays = []}}: any) => { const address = new Address(kind, pubkey, identifier).toString() - return ["q", address, ctx.app.router.fromRelays(relays).getUrl(), pubkey] + return ["q", address, ctx.app.router.FromRelays(relays).getUrl(), pubkey] }, ) const neventTags = findNodes("nevent", json).map(({attrs: {id, author, relays = []}}: any) => [ "q", id, - ctx.app.router.fromRelays(relays).getUrl(), + ctx.app.router.FromRelays(relays).getUrl(), author || "", ]) const mentionTags = findNodes("nprofile", json).map(({attrs: {pubkey, relays = []}}: any) => [ "p", pubkey, - ctx.app.router.fromRelays(relays).getUrl(), + ctx.app.router.FromRelays(relays).getUrl(), "", ]) diff --git a/src/routes/settings/+page.svelte b/src/routes/settings/+page.svelte index 7e2e41ce..decf62ca 100644 --- a/src/routes/settings/+page.svelte +++ b/src/routes/settings/+page.svelte @@ -19,12 +19,12 @@ event: createEvent(SETTINGS, { content: await $signer!.nip04.encrypt($pubkey!, JSON.stringify(settings)), }), - relays: ctx.app.router.WriteRelays().getUrls(), + relays: ctx.app.router.FromUser().getUrls(), }) publishThunk({ event: createEvent(MUTES, {tags: mutedPubkeys.map(tagPubkey)}), - relays: ctx.app.router.WriteRelays().getUrls(), + relays: ctx.app.router.FromUser().getUrls(), }) pushToast({message: "Your settings have been saved!"}) diff --git a/src/routes/settings/profile/+page.svelte b/src/routes/settings/profile/+page.svelte index c4cdef5a..1fafb080 100644 --- a/src/routes/settings/profile/+page.svelte +++ b/src/routes/settings/profile/+page.svelte @@ -48,7 +48,7 @@ } const saveEdit = () => { - const relays = ctx.app.router.WriteRelays().getUrls() + const relays = ctx.app.router.FromUser().getUrls() const template = isPublishedProfile(values) ? editProfile(values) : createProfile(values) const event = createEvent(template.kind, template) diff --git a/src/routes/spaces/[relay]/threads/+page.svelte b/src/routes/spaces/[relay]/threads/+page.svelte index a6b54a26..5faa9e58 100644 --- a/src/routes/spaces/[relay]/threads/+page.svelte +++ b/src/routes/spaces/[relay]/threads/+page.svelte @@ -32,8 +32,11 @@ let limit = 5 let loading = true let element: Element + let scroller onMount(() => { + let unmounted = false + const ctrl = createFeedController({ feed, onExhausted: () => { @@ -46,20 +49,26 @@ relays: [url], }) - const scroller = createScroller({ - element, - delay: 300, - threshold: 3000, - onScroll: async () => { - limit += 5 + // Element is frequently not defined. I don't know why + setTimeout(() => { + if (!unmounted) { + scroller = createScroller({ + element, + delay: 300, + threshold: 3000, + onScroll: async () => { + limit += 5 - await ctrl.load(5) - }, - }) + await ctrl.load(5) + }, + }) + } + }, 1000) return () => { + unmounted = true unsub() - scroller.stop() + scroller?.stop() } })