add mute filter to relay notes

This commit is contained in:
hzrd149 2023-11-23 13:28:03 -06:00
parent 684b0e458a
commit a3f49d5524

View File

@ -1,8 +1,8 @@
import { useCallback, useMemo } from "react";
import { Flex, Spacer } from "@chakra-ui/react";
import { Flex, Spacer, useDisclosure } from "@chakra-ui/react";
import { Kind } from "nostr-tools";
import { isReply } from "../../../helpers/nostr/events";
import { isReply, isRepost } from "../../../helpers/nostr/events";
import { useAppTitle } from "../../../hooks/use-app-title";
import useTimelineLoader from "../../../hooks/use-timeline-loader";
import { NostrEvent } from "../../../types/nostr-event";
@ -11,9 +11,13 @@ import TimelineViewTypeButtons from "../../../components/timeline-page/timeline-
import PeopleListSelection from "../../../components/people-list-selection/people-list-selection";
import { usePeopleListContext } from "../../../providers/people-list-provider";
import { NostrRequestFilter } from "../../../types/nostr-query";
import useClientSideMuteFilter from "../../../hooks/use-client-side-mute-filter";
import NoteFilterTypeButtons from "../../../components/note-filter-type-buttons";
export default function RelayNotes({ relay }: { relay: string }) {
useAppTitle(`${relay} - Notes`);
const showReplies = useDisclosure();
const showReposts = useDisclosure({ defaultIsOpen: true });
const { filter } = usePeopleListContext();
const kinds = [Kind.Text];
@ -23,18 +27,22 @@ export default function RelayNotes({ relay }: { relay: string }) {
}, [filter]);
const timelineEventFilter = useTimelinePageEventFilter();
const muteFilter = useClientSideMuteFilter();
const eventFilter = useCallback(
(event: NostrEvent) => {
if (isReply(event)) return false;
if (muteFilter(event)) return false;
if (!showReplies.isOpen && isReply(event)) return false;
if (!showReposts.isOpen && isRepost(event)) return false;
return timelineEventFilter(event);
},
[timelineEventFilter],
[timelineEventFilter, showReplies.isOpen, showReposts.isOpen, muteFilter],
);
const timeline = useTimelineLoader(`${relay}-notes`, [relay], query, { eventFilter, enabled: !!filter });
const header = (
<Flex gap="2" wrap="wrap" px={["2", 0]}>
<PeopleListSelection />
<NoteFilterTypeButtons showReplies={showReplies} showReposts={showReposts} />
<Spacer />
<TimelineViewTypeButtons />
</Flex>