From 9a220fafd5e5ef88cee43f3dc286057bb03a9cd4 Mon Sep 17 00:00:00 2001 From: Kieran Date: Thu, 25 Jan 2024 20:07:43 +0000 Subject: [PATCH] refactor: revert LocalSearch --- .../app/src/Components/Feed/LocalSearch.tsx | 45 ------------------- packages/app/src/Components/Feed/Timeline.tsx | 15 +++---- packages/app/src/Pages/SearchPage.tsx | 13 +++++- 3 files changed, 18 insertions(+), 55 deletions(-) delete mode 100644 packages/app/src/Components/Feed/LocalSearch.tsx diff --git a/packages/app/src/Components/Feed/LocalSearch.tsx b/packages/app/src/Components/Feed/LocalSearch.tsx deleted file mode 100644 index 9eb5206c..00000000 --- a/packages/app/src/Components/Feed/LocalSearch.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { EventKind, RequestBuilder, TaggedNostrEvent } from "@snort/system"; -import { useRequestBuilder } from "@snort/system-react"; -import { useEffect, useMemo, useState } from "react"; - -import { Relay } from "@/Cache"; -import { SearchRelays } from "@/Utils/Const"; - -import PageSpinner from "../PageSpinner"; -import { TimelineFragment } from "./TimelineFragment"; - -export function LocalSearch({ term, kind }: { term: string; kind: EventKind }) { - const [frag, setFrag] = useState(); - - const r = useMemo(() => { - const rb = new RequestBuilder("search"); - rb.withFilter().search(term).kinds([kind]).relay(SearchRelays).limit(100); - return rb; - }, [term]); - useRequestBuilder(r); - - useEffect(() => { - setFrag(undefined); - if (term) { - Relay.query([ - "REQ", - "local-search", - { - kinds: [kind], - limit: 100, - search: term, - }, - ]).then(res => { - setFrag({ - refTime: 0, - events: res as Array, - }); - }); - } - }, [term, kind]); - - if (frag) { - return ; - } - return ; -} diff --git a/packages/app/src/Components/Feed/Timeline.tsx b/packages/app/src/Components/Feed/Timeline.tsx index cc44326f..997eb074 100644 --- a/packages/app/src/Components/Feed/Timeline.tsx +++ b/packages/app/src/Components/Feed/Timeline.tsx @@ -1,7 +1,6 @@ import "./Timeline.css"; -import { unixNow } from "@snort/shared"; -import { EventKind, socialGraphInstance, TaggedNostrEvent } from "@snort/system"; +import { socialGraphInstance, TaggedNostrEvent } from "@snort/system"; import { useCallback, useMemo, useState } from "react"; import { FormattedMessage } from "react-intl"; @@ -50,20 +49,20 @@ const Timeline = (props: TimelineProps) => { const followDistance = socialGraphInstance.getFollowDistance(a.pubkey); return followDistance === props.followDistance; }; - const a = [...nts.filter(a => a.kind !== EventKind.LiveEvent)]; - return a + return nts ?.filter(a => (props.postsOnly ? !a.tags.some(b => b[0] === "e") : true)) - .filter(a => props.ignoreModeration && checkFollowDistance(a)); + .filter(a => props.ignoreModeration || checkFollowDistance(a)); }, [props.postsOnly, props.ignoreModeration, props.followDistance], ); + const mainFeed = useMemo(() => { return filterPosts(feed.main ?? []); - }, [feed, filterPosts]); + }, [feed.main, filterPosts]); const latestFeed = useMemo(() => { return filterPosts(feed.latest ?? []).filter(a => !mainFeed.some(b => b.id === a.id)); - }, [feed, filterPosts]); + }, [feed.latest, feed.main, filterPosts]); const latestAuthors = useMemo(() => { return dedupeByPubkey(latestFeed).map(e => e.pubkey); @@ -87,7 +86,7 @@ const Timeline = (props: TimelineProps) => { frags={[ { events: mainFeed, - refTime: mainFeed.at(0)?.created_at ?? unixNow(), + refTime: 0, }, ]} latest={latestAuthors} diff --git a/packages/app/src/Pages/SearchPage.tsx b/packages/app/src/Pages/SearchPage.tsx index 072e3670..67aa5364 100644 --- a/packages/app/src/Pages/SearchPage.tsx +++ b/packages/app/src/Pages/SearchPage.tsx @@ -2,11 +2,12 @@ import { useEffect, useMemo, useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { useNavigate, useParams } from "react-router-dom"; -import { LocalSearch } from "@/Components/Feed/LocalSearch"; +import Timeline from "@/Components/Feed/Timeline"; import TabSelectors, { Tab } from "@/Components/TabSelectors/TabSelectors"; import TrendingNotes from "@/Components/Trending/TrendingPosts"; import TrendingUsers from "@/Components/Trending/TrendingUsers"; import FollowListBase from "@/Components/User/FollowListBase"; +import { TimelineSubject } from "@/Feed/TimelineFeed"; import useProfileSearch from "@/Hooks/useProfileSearch"; import { debounce } from "@/Utils"; @@ -53,6 +54,14 @@ const SearchPage = () => { return debounce(500, () => setKeyword(search)); }, [search]); + const searchTimeline = useMemo(() => { + return { + type: "post_keyword", + discriminator: keyword, + items: [keyword] + } as TimelineSubject; + }, [keyword]); + function tabContent() { if (tab.value === PROFILES) { return ; @@ -65,7 +74,7 @@ const SearchPage = () => { return ( <> {sortOptions()} - + ); }