From 5aee73fb6f625bc00499c64465860172dc70203c Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 21 Oct 2024 10:30:12 -0700 Subject: [PATCH] Drop nrelay, fix space threads --- src/app/components/MenuSpaces.svelte | 4 ++-- src/app/routes.ts | 6 +++--- src/app/state.ts | 5 ++++- src/lib/transition.ts | 3 ++- .../spaces/{[nrelay] => [relay]}/+layout.svelte | 4 ++-- .../{[nrelay] => [relay]}/[[room]]/+page.svelte | 6 +++--- .../{[nrelay] => [relay]}/calendar/+page.svelte | 4 ++-- .../spaces/{[nrelay] => [relay]}/threads/+page.svelte | 11 ++++++----- 8 files changed, 24 insertions(+), 19 deletions(-) rename src/routes/spaces/{[nrelay] => [relay]}/+layout.svelte (98%) rename src/routes/spaces/{[nrelay] => [relay]}/[[room]]/+page.svelte (97%) rename src/routes/spaces/{[nrelay] => [relay]}/calendar/+page.svelte (95%) rename src/routes/spaces/{[nrelay] => [relay]}/threads/+page.svelte (85%) diff --git a/src/app/components/MenuSpaces.svelte b/src/app/components/MenuSpaces.svelte index 5b11ea32..ccfd0427 100644 --- a/src/app/components/MenuSpaces.svelte +++ b/src/app/components/MenuSpaces.svelte @@ -17,7 +17,7 @@ import { GENERAL, userMembership, - decodeNRelay, + decodeRelay, getMembershipRoomsByUrl, getMembershipUrls, roomsByUrl, @@ -25,7 +25,7 @@ import {makeSpacePath} from "@app/routes" import {pushModal} from "@app/modal" - let space = $page.params?.nrelay ? decodeNRelay($page.params?.nrelay) : undefined + let space = $page.params?.relay ? decodeRelay($page.params?.relay) : undefined let showSettings = false const assertNotNil = (x: T) => x! diff --git a/src/app/routes.ts b/src/app/routes.ts index a140f5d0..0d544eff 100644 --- a/src/app/routes.ts +++ b/src/app/routes.ts @@ -1,9 +1,9 @@ import {nip19} from "nostr-tools" import type {Page} from "@sveltejs/kit" -import {userMembership, makeChatId, decodeNRelay, getMembershipUrls} from "@app/state" +import {userMembership, makeChatId, decodeRelay, encodeRelay, getMembershipUrls} from "@app/state" export const makeSpacePath = (url: string, extra = "") => { - let path = `/spaces/${nip19.nrelayEncode(url)}` + let path = `/spaces/${encodeRelay(url)}` if (extra) { path += "/" + encodeURIComponent(extra) @@ -23,7 +23,7 @@ export const getPrimaryNavItemIndex = ($page: Page) => { case "discover": return urls.length + 2 case "spaces": { - const routeUrl = decodeNRelay($page.params.nrelay) + const routeUrl = decodeRelay($page.params.relay) return urls.findIndex(url => url === routeUrl) + 1 } diff --git a/src/app/state.ts b/src/app/state.ts index 61e085ea..f18392e8 100644 --- a/src/app/state.ts +++ b/src/app/state.ts @@ -31,6 +31,7 @@ import { asDecryptedEvent, isSignedEvent, hasValidSignature, + normalizeRelayUrl, } from "@welshman/util" import type {TrustedEvent, SignedEvent, PublishedList, List} from "@welshman/util" import {Nip59} from "@welshman/signer" @@ -473,7 +474,9 @@ export const userMembership = withGetter( // Other utils -export const decodeNRelay = (nevent: string) => nip19.decode(nevent).data as string +export const encodeRelay = (url: string) => encodeURIComponent(normalizeRelayUrl(url)) + +export const decodeRelay = (url: string) => normalizeRelayUrl(decodeURIComponent(url)) export const displayReaction = (content: string) => { if (content === "+") return "❤️" diff --git a/src/lib/transition.ts b/src/lib/transition.ts index 45d8a7c4..b0576961 100644 --- a/src/lib/transition.ts +++ b/src/lib/transition.ts @@ -77,4 +77,5 @@ export function slideAndFade( export const conditionalTransition = (condition: any, transition: any) => (node: any, args?: any) => - condition ? transtion(node, args) : null + condition ? transition(node, args) : null + diff --git a/src/routes/spaces/[nrelay]/+layout.svelte b/src/routes/spaces/[relay]/+layout.svelte similarity index 98% rename from src/routes/spaces/[nrelay]/+layout.svelte rename to src/routes/spaces/[relay]/+layout.svelte index f8314569..32dc12d8 100644 --- a/src/routes/spaces/[nrelay]/+layout.svelte +++ b/src/routes/spaces/[relay]/+layout.svelte @@ -21,7 +21,7 @@ getMembershipUrls, userMembership, roomsByUrl, - decodeNRelay, + decodeRelay, GENERAL, } from "@app/state" import {checkRelayConnection, checkRelayAuth} from "@app/commands" @@ -58,7 +58,7 @@ let delay = 0 let showMenu = false - $: url = decodeNRelay($page.params.nrelay) + $: url = decodeRelay($page.params.relay) $: rooms = getMembershipRoomsByUrl(url, $userMembership) $: otherRooms = ($roomsByUrl.get(url) || []).filter(room => !rooms.concat(GENERAL).includes(room)) diff --git a/src/routes/spaces/[nrelay]/[[room]]/+page.svelte b/src/routes/spaces/[relay]/[[room]]/+page.svelte similarity index 97% rename from src/routes/spaces/[nrelay]/[[room]]/+page.svelte rename to src/routes/spaces/[relay]/[[room]]/+page.svelte index c1108f96..3fb13bd2 100644 --- a/src/routes/spaces/[nrelay]/[[room]]/+page.svelte +++ b/src/routes/spaces/[relay]/[[room]]/+page.svelte @@ -26,7 +26,7 @@ import ChannelCompose from "@app/components/ChannelCompose.svelte" import { userMembership, - decodeNRelay, + decodeRelay, makeChannelId, deriveChannel, GENERAL, @@ -36,8 +36,8 @@ } from "@app/state" import {addRoomMembership, removeRoomMembership} from "@app/commands" - const {nrelay, room = GENERAL} = $page.params - const url = decodeNRelay(nrelay) + const {room = GENERAL} = $page.params + const url = decodeRelay($page.params.relay) const channel = deriveChannel(makeChannelId(url, room)) const thunks = writable({} as Record) diff --git a/src/routes/spaces/[nrelay]/calendar/+page.svelte b/src/routes/spaces/[relay]/calendar/+page.svelte similarity index 95% rename from src/routes/spaces/[nrelay]/calendar/+page.svelte rename to src/routes/spaces/[relay]/calendar/+page.svelte index a3f205d0..6dbf8500 100644 --- a/src/routes/spaces/[nrelay]/calendar/+page.svelte +++ b/src/routes/spaces/[relay]/calendar/+page.svelte @@ -13,9 +13,9 @@ import EventItem from "@app/components/EventItem.svelte" import EventCreate from "@app/components/EventCreate.svelte" import {pushModal} from "@app/modal" - import {deriveEventsForUrl, pullConservatively, decodeNRelay} from "@app/state" + import {deriveEventsForUrl, pullConservatively, decodeRelay} from "@app/state" - const url = decodeNRelay($page.params.nrelay) + const url = decodeRelay($page.params.relay) const kinds = [EVENT_DATE, EVENT_TIME] const events = deriveEventsForUrl(url, kinds) diff --git a/src/routes/spaces/[nrelay]/threads/+page.svelte b/src/routes/spaces/[relay]/threads/+page.svelte similarity index 85% rename from src/routes/spaces/[nrelay]/threads/+page.svelte rename to src/routes/spaces/[relay]/threads/+page.svelte index c2849687..bb39fd28 100644 --- a/src/routes/spaces/[nrelay]/threads/+page.svelte +++ b/src/routes/spaces/[relay]/threads/+page.svelte @@ -2,7 +2,7 @@ import {onMount} from "svelte" import {page} from "$app/stores" import {NOTE} from "@welshman/util" - import {feedFromFilter} from "@welshman/feeds" + import {feedFromFilter, makeIntersectionFeed, makeRelayFeed} from "@welshman/feeds" import {nthEq} from "@welshman/lib" import {feedLoader} from "@welshman/app" import {createScroller} from "@lib/html" @@ -13,12 +13,13 @@ import ThreadItem from "@app/components/ThreadItem.svelte" import ThreadCreate from "@app/components/ThreadCreate.svelte" import {pushModal} from "@app/modal" - import {deriveEventsForUrl, decodeNRelay} from "@app/state" + import {deriveEventsForUrl, decodeRelay} from "@app/state" - const url = decodeNRelay($page.params.nrelay) + const url = decodeRelay($page.params.relay) const kinds = [NOTE] + const feed = makeIntersectionFeed(makeRelayFeed(url), feedFromFilter({kinds})) const events = deriveEventsForUrl(url, kinds) - const loader = feedLoader.getLoader(feedFromFilter({kinds}), {}) + const loader = feedLoader.getLoader(feed, {}) const createThread = () => pushModal(ThreadCreate, {url}) @@ -32,7 +33,7 @@ onScroll: async () => { const $loader = await loader - $loader(5) + await $loader(5) limit += 5 }, })