diff --git a/src/app/components/NotePage.svelte b/src/app/components/NoteDetail.svelte similarity index 63% rename from src/app/components/NotePage.svelte rename to src/app/components/NoteDetail.svelte index de390877..e4646768 100644 --- a/src/app/components/NotePage.svelte +++ b/src/app/components/NoteDetail.svelte @@ -6,8 +6,8 @@ import Reply from "@assets/icons/reply-2.svg?dataurl" import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" - import Page from "@lib/components/Page.svelte" - import PageContent from "@lib/components/PageContent.svelte" + import Modal from "@lib/components/Modal.svelte" + import ModalBody from "@lib/components/ModalBody.svelte" import Spinner from "@lib/components/Spinner.svelte" import CommentCompose from "@app/components/CommentCompose.svelte" import CommentTree from "@app/components/CommentTree.svelte" @@ -38,38 +38,34 @@ onDestroy(context.cleanup) - - + + {#if $event} {@const note = $event} {@const replyToNote = () => setReplyTo(note)} -
-
- - {#if replyTo?.id !== note.id} - - {/if} - -
-
-
+
+ + {#if replyTo?.id !== note.id} + + {/if} + {#if replyTo?.id === note.id} -
- -
+ {/if} +
+
{#each $replies as node (node.comment.id)} {/each} - {#if $replies.length === 0 && replyTo?.id !== note.id} -

No replies yet.

+ {#if $replies.length === 0} +

No replies yet.

{/if}
{:else} @@ -81,5 +77,5 @@ {/await}
{/if} -
-
+ + diff --git a/src/app/routes.ts b/src/app/routes.ts index 1e8ca7de..8dc7e833 100644 --- a/src/app/routes.ts +++ b/src/app/routes.ts @@ -25,7 +25,9 @@ import {entityLink, PLATFORM_URL, PLATFORM_RELAYS} from "@app/env" import {decodeRelay, encodeRelay} from "@app/relays" import {DM_KINDS} from "@app/content" import {navigate, pushModal} from "@app/modal" +import type {NotePointer} from "@app/social" import ChatEnable from "@app/components/ChatEnable.svelte" +import NoteDetail from "@app/components/NoteDetail.svelte" // State @@ -267,8 +269,23 @@ export const scrollToEvent = (id: string) => { return element instanceof HTMLElement } +// A note opens over whatever is on screen rather than on a page of its own. +export const pushNote = (pointer: NotePointer) => pushModal(NoteDetail, {pointer}, {size: "large"}) + +// A url resolving to a note has nothing on screen to open it over, so the app goes behind it. +export const goToNote = (pointer: NotePointer) => { + pushNote(pointer) + + return goToHome() +} + export const goToEvent = (event: TrustedEvent, options: Record = {}) => { const urls = Array.from(app.get().tracker.getRelays(event.id)) + + if (event.kind === NOTE) { + return pushNote({id: event.id, pubkey: event.pubkey, relays: urls}) + } + const path = makeEventPath(event, urls) if (path.includes("://")) { diff --git a/src/routes/[bech32]/+page.svelte b/src/routes/[bech32]/+page.svelte index 7740f1d2..1a442e89 100644 --- a/src/routes/[bech32]/+page.svelte +++ b/src/routes/[bech32]/+page.svelte @@ -2,13 +2,13 @@ import {onMount} from "svelte" import * as nip19 from "nostr-tools/nip19" import type {TrustedEvent} from "@welshman/util" - import {Address, getIdFilters} from "@welshman/util" + import {Address, NOTE, getIdFilters} from "@welshman/util" import {LOCAL_RELAY_URL} from "@welshman/net" import {goto} from "$app/navigation" import {decodePubkey} from "@lib/util" import Spinner from "@lib/components/Spinner.svelte" import {network} from "@app/core" - import {goToEvent, makeProfilePath} from "@app/routes" + import {goToEvent, goToNote, makeProfilePath} from "@app/routes" import type {PageProps} from "./$types" const {params}: PageProps = $props() @@ -35,7 +35,12 @@ filters: getIdFilters([type === "nevent" ? data.id : Address.fromNaddr(bech32).toString()]), onEvent: (event: TrustedEvent) => { found = true - goToEvent(event, {replaceState: true}) + + if (event.kind === NOTE) { + goToNote({id: event.id, pubkey: event.pubkey, relays: data.relays}) + } else { + goToEvent(event, {replaceState: true}) + } }, onClose: () => { if (!found) { diff --git a/src/routes/notes/[nevent]/+layout.svelte b/src/routes/notes/[nevent]/+layout.svelte deleted file mode 100644 index 3ad37d50..00000000 --- a/src/routes/notes/[nevent]/+layout.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -{#key params.nevent} - {@render children?.()} -{/key} diff --git a/src/routes/notes/[nevent]/+page.svelte b/src/routes/notes/[nevent]/+page.svelte index d6ca63fc..a9042c85 100644 --- a/src/routes/notes/[nevent]/+page.svelte +++ b/src/routes/notes/[nevent]/+page.svelte @@ -1,7 +1,7 @@ -{#if pointer} - -{/if} +