From a3f49d5524d3fbc636c04435b90cbc2b708180e4 Mon Sep 17 00:00:00 2001 From: hzrd149 Date: Thu, 23 Nov 2023 13:28:03 -0600 Subject: [PATCH] add mute filter to relay notes --- src/views/relays/relay/relay-notes.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/views/relays/relay/relay-notes.tsx b/src/views/relays/relay/relay-notes.tsx index a570423e5..95d4ac18e 100644 --- a/src/views/relays/relay/relay-notes.tsx +++ b/src/views/relays/relay/relay-notes.tsx @@ -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 = ( +