snort/packages/app/src/Components/Feed/UsersFeed.tsx

32 lines
1.1 KiB
TypeScript
Raw Normal View History

import { TaggedNostrEvent } from "@snort/system";
2024-01-04 17:01:18 +00:00
import { useCallback, useMemo } from "react";
import PageSpinner from "@/Components/PageSpinner";
2024-01-04 17:01:18 +00:00
import FollowListBase from "@/Components/User/FollowListBase";
import useTimelineFeed, { TimelineFeed } from "@/Feed/TimelineFeed";
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" },
);
2024-04-22 13:38:14 +00:00
const { isEventMuted } = useModeration();
const filterPosts = useCallback(
(nts: readonly TaggedNostrEvent[]) => {
return nts.filter(a => !isEventMuted(a));
},
2024-04-22 13:38:14 +00:00
[isEventMuted],
);
const usersFeed = useMemo(() => filterPosts(feed.main ?? []).map(p => p.pubkey), [feed, filterPosts]);
if (!usersFeed) return <PageSpinner />;
return <FollowListBase pubkeys={usersFeed} showAbout={true} />;
}