mirror of
https://github.com/hzrd149/nostrudel.git
synced 2025-04-09 20:29:17 +02:00
add mute filter to relay notes
This commit is contained in:
parent
684b0e458a
commit
a3f49d5524
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user