diff --git a/packages/app/src/Element/Feed/UsersFeed.tsx b/packages/app/src/Element/Feed/UsersFeed.tsx new file mode 100644 index 00000000..03d42de5 --- /dev/null +++ b/packages/app/src/Element/Feed/UsersFeed.tsx @@ -0,0 +1,31 @@ +import { useCallback, useMemo } from "react"; +import { TaggedNostrEvent } from "@snort/system"; + +import useTimelineFeed, { TimelineFeed } from "@/Feed/TimelineFeed"; +import FollowListBase from "@/Element/User/FollowListBase"; +import PageSpinner from "@/Element/PageSpinner"; +import useModeration from "@/Hooks/useModeration"; + +export default function UsersFeed({ keyword, sortPopular = true }: { keyword: string; sortPopular?: boolean }) { + const feed: TimelineFeed = useTimelineFeed( + { + type: "profile_keyword", + items: [keyword + (sortPopular ? " sort:popular" : "")], + discriminator: keyword, + }, + { method: "LIMIT_UNTIL" }, + ); + + const { muted, isEventMuted } = useModeration(); + const filterPosts = useCallback( + (nts: readonly TaggedNostrEvent[]) => { + return nts.filter(a => !isEventMuted(a)); + }, + [muted], + ); + const usersFeed = useMemo(() => filterPosts(feed.main ?? []).map(p => p.pubkey), [feed, filterPosts]); + + if (!usersFeed) return ; + + return ; +} diff --git a/packages/app/src/Pages/SearchPage.tsx b/packages/app/src/Pages/SearchPage.tsx index a7a16bfb..f48f6fe6 100644 --- a/packages/app/src/Pages/SearchPage.tsx +++ b/packages/app/src/Pages/SearchPage.tsx @@ -8,6 +8,7 @@ import { router } from "@/index"; import TrendingUsers from "@/Element/Trending/TrendingUsers"; import TrendingNotes from "@/Element/Trending/TrendingPosts"; +import UsersFeed from "@/Element/Feed/UsersFeed"; const NOTES = 0; const PROFILES = 1; @@ -49,6 +50,11 @@ const SearchPage = () => { return null; } + if (tab.value == PROFILES ) { + // render UsersFeed + return ; + } + const pf = tab.value == PROFILES; return ( <>