From ca2cb76380fd0db523e70b1d7b4fa6b63068ac1b Mon Sep 17 00:00:00 2001 From: Martti Malmi Date: Mon, 8 Jan 2024 16:33:03 +0200 Subject: [PATCH] constant onClick param in some Notes --- packages/app/src/Components/Event/Thread.tsx | 13 ++++++----- packages/app/src/Db/FuzzySearch.ts | 2 +- packages/app/src/Pages/DeckLayout.tsx | 11 ++++++++-- packages/app/src/Pages/Layout/Header.tsx | 10 ++++----- .../app/src/Pages/Profile/ProfilePage.tsx | 2 +- packages/app/src/Pages/Root.tsx | 22 +++++++++---------- packages/app/src/Utils/Notifications.ts | 2 +- packages/app/src/Utils/index.ts | 2 +- packages/app/src/system.ts | 2 +- 9 files changed, 38 insertions(+), 28 deletions(-) diff --git a/packages/app/src/Components/Event/Thread.tsx b/packages/app/src/Components/Event/Thread.tsx index 6a190383..10df9fc2 100644 --- a/packages/app/src/Components/Event/Thread.tsx +++ b/packages/app/src/Components/Event/Thread.tsx @@ -2,7 +2,7 @@ import "./Thread.css"; import { EventExt, NostrPrefix, parseNostrLink, TaggedNostrEvent, u256 } from "@snort/system"; import classNames from "classnames"; -import { Fragment, ReactNode, useContext, useMemo, useState } from "react"; +import { Fragment, ReactNode, useCallback, useContext, useMemo, useState } from "react"; import { useIntl } from "react-intl"; import { useNavigate, useParams } from "react-router-dom"; @@ -233,10 +233,13 @@ export function Thread(props: { onBack?: () => void; disableSpotlight?: boolean [props.disableSpotlight], ); - function navigateThread(e: TaggedNostrEvent) { - thread.setCurrent(e.id); - //router.navigate(`/${NostrLink.fromEvent(e).encode()}`, { replace: true }) - } + const navigateThread = useCallback( + (e: TaggedNostrEvent) => { + thread.setCurrent(e.id); + // navigate(`/${NostrLink.fromEvent(e).encode()}`, { replace: true }); + }, + [thread], + ); const parent = useMemo(() => { if (thread.root) { diff --git a/packages/app/src/Db/FuzzySearch.ts b/packages/app/src/Db/FuzzySearch.ts index 5b559ebb..64558334 100644 --- a/packages/app/src/Db/FuzzySearch.ts +++ b/packages/app/src/Db/FuzzySearch.ts @@ -1,5 +1,5 @@ -import Fuse from "fuse.js"; import { CachedMetadata } from "@snort/system"; +import Fuse from "fuse.js"; export type FuzzySearchResult = { pubkey: string; diff --git a/packages/app/src/Pages/DeckLayout.tsx b/packages/app/src/Pages/DeckLayout.tsx index d74eed75..e561383f 100644 --- a/packages/app/src/Pages/DeckLayout.tsx +++ b/packages/app/src/Pages/DeckLayout.tsx @@ -1,7 +1,7 @@ import "./Deck.css"; import { NostrLink, TaggedNostrEvent } from "@snort/system"; -import { createContext, useEffect, useState } from "react"; +import { createContext, useCallback, useEffect, useState } from "react"; import { FormattedMessage } from "react-intl"; import { Link, Outlet, useNavigate } from "react-router-dom"; @@ -176,6 +176,13 @@ function ArticlesCol() { } function MediaCol({ setThread }: { setThread: (e: NostrLink) => void }) { + const noteOnClick = useCallback( + e => { + setThread(NostrLink.fromEvent(e)); + }, + [setThread], + ); + return (
@@ -192,7 +199,7 @@ function MediaCol({ setThread }: { setThread: (e: NostrLink) => void }) { }} displayAs="grid" showDisplayAsSelector={false} - noteOnClick={e => setThread(NostrLink.fromEvent(e))} + noteOnClick={noteOnClick} />
); diff --git a/packages/app/src/Pages/Layout/Header.tsx b/packages/app/src/Pages/Layout/Header.tsx index 826a3d9a..1e640562 100644 --- a/packages/app/src/Pages/Layout/Header.tsx +++ b/packages/app/src/Pages/Layout/Header.tsx @@ -102,17 +102,17 @@ export function Header() { function NoteTitle({ link }: { link: NostrLink }) { const ev = useEventFeed(link); + const values = useMemo(() => { + return { name: }; + }, [ev.data?.pubkey]); + if (!ev.data?.pubkey) { return ; } return ( <> - }} - /> + ); } diff --git a/packages/app/src/Pages/Profile/ProfilePage.tsx b/packages/app/src/Pages/Profile/ProfilePage.tsx index 6c4efe93..6f514c6f 100644 --- a/packages/app/src/Pages/Profile/ProfilePage.tsx +++ b/packages/app/src/Pages/Profile/ProfilePage.tsx @@ -2,9 +2,9 @@ import "./ProfilePage.css"; import { fetchNip05Pubkey, LNURL } from "@snort/shared"; import { + CachedMetadata, encodeTLVEntries, EventKind, - CachedMetadata, NostrPrefix, TLVEntryType, tryParseNostrLink, diff --git a/packages/app/src/Pages/Root.tsx b/packages/app/src/Pages/Root.tsx index 0a316e0f..af9ce64d 100644 --- a/packages/app/src/Pages/Root.tsx +++ b/packages/app/src/Pages/Root.tsx @@ -1,7 +1,7 @@ import { unixNow } from "@snort/shared"; import { NostrLink } from "@snort/system"; import { SnortContext } from "@snort/system-react"; -import { lazy, useContext, useEffect, useState } from "react"; +import { lazy, useContext, useEffect, useMemo, useState } from "react"; import { FormattedMessage } from "react-intl"; import { Link, Outlet, RouteObject, useParams } from "react-router-dom"; @@ -164,20 +164,20 @@ export const NotesTab = () => { // eslint-disable-next-line @typescript-eslint/no-unused-vars const deckContext = useContext(DeckContext); + const noteOnClick = useMemo(() => { + if (deckContext) { + return ev => { + deckContext.setThread(NostrLink.fromEvent(ev)); + }; + } + return undefined; + }, [deckContext]); + return ( <> - { - deckContext.setThread(NostrLink.fromEvent(ev)); - } - : undefined - } - /> + ); }; diff --git a/packages/app/src/Utils/Notifications.ts b/packages/app/src/Utils/Notifications.ts index 30999541..e6340539 100644 --- a/packages/app/src/Utils/Notifications.ts +++ b/packages/app/src/Utils/Notifications.ts @@ -1,6 +1,6 @@ import { base64 } from "@scure/base"; import { removeUndefined, unwrap } from "@snort/shared"; -import { EventKind, EventPublisher, CachedMetadata, TaggedNostrEvent } from "@snort/system"; +import { CachedMetadata, EventKind, EventPublisher, TaggedNostrEvent } from "@snort/system"; import { UserCache } from "@/Cache"; import SnortApi from "@/External/SnortApi"; diff --git a/packages/app/src/Utils/index.ts b/packages/app/src/Utils/index.ts index 812d6e21..2928761d 100644 --- a/packages/app/src/Utils/index.ts +++ b/packages/app/src/Utils/index.ts @@ -6,10 +6,10 @@ import { bytesToHex } from "@noble/hashes/utils"; import { base32hex, bech32 } from "@scure/base"; import { isHex, isOffline } from "@snort/shared"; import { + CachedMetadata, encodeTLV, EventKind, HexKey, - CachedMetadata, NostrEvent, NostrLink, NostrPrefix, diff --git a/packages/app/src/system.ts b/packages/app/src/system.ts index 8552a47f..e8552673 100644 --- a/packages/app/src/system.ts +++ b/packages/app/src/system.ts @@ -2,7 +2,7 @@ import { removeUndefined, throwIfOffline } from "@snort/shared"; import { mapEventToProfile, NostrEvent, NostrSystem, ProfileLoaderService, socialGraphInstance } from "@snort/system"; import { RelayMetrics, SystemDb, UserCache, UserRelays } from "@/Cache"; -import { addEventToFuzzySearch, addProfileToFuzzySearch } from "@/Db/FuzzySearch"; +import { addEventToFuzzySearch } from "@/Db/FuzzySearch"; import { LoginStore } from "@/Utils/Login"; import { hasWasm, WasmOptimizer } from "@/Utils/wasm";