mirror of
https://github.com/hzrd149/nostrudel.git
synced 2025-10-08 20:09:17 +02:00
add mute filter to relay notes
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
import { useCallback, useMemo } from "react";
|
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 { 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 { useAppTitle } from "../../../hooks/use-app-title";
|
||||||
import useTimelineLoader from "../../../hooks/use-timeline-loader";
|
import useTimelineLoader from "../../../hooks/use-timeline-loader";
|
||||||
import { NostrEvent } from "../../../types/nostr-event";
|
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 PeopleListSelection from "../../../components/people-list-selection/people-list-selection";
|
||||||
import { usePeopleListContext } from "../../../providers/people-list-provider";
|
import { usePeopleListContext } from "../../../providers/people-list-provider";
|
||||||
import { NostrRequestFilter } from "../../../types/nostr-query";
|
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 }) {
|
export default function RelayNotes({ relay }: { relay: string }) {
|
||||||
useAppTitle(`${relay} - Notes`);
|
useAppTitle(`${relay} - Notes`);
|
||||||
|
const showReplies = useDisclosure();
|
||||||
|
const showReposts = useDisclosure({ defaultIsOpen: true });
|
||||||
|
|
||||||
const { filter } = usePeopleListContext();
|
const { filter } = usePeopleListContext();
|
||||||
const kinds = [Kind.Text];
|
const kinds = [Kind.Text];
|
||||||
@@ -23,18 +27,22 @@ export default function RelayNotes({ relay }: { relay: string }) {
|
|||||||
}, [filter]);
|
}, [filter]);
|
||||||
|
|
||||||
const timelineEventFilter = useTimelinePageEventFilter();
|
const timelineEventFilter = useTimelinePageEventFilter();
|
||||||
|
const muteFilter = useClientSideMuteFilter();
|
||||||
const eventFilter = useCallback(
|
const eventFilter = useCallback(
|
||||||
(event: NostrEvent) => {
|
(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);
|
return timelineEventFilter(event);
|
||||||
},
|
},
|
||||||
[timelineEventFilter],
|
[timelineEventFilter, showReplies.isOpen, showReposts.isOpen, muteFilter],
|
||||||
);
|
);
|
||||||
const timeline = useTimelineLoader(`${relay}-notes`, [relay], query, { eventFilter, enabled: !!filter });
|
const timeline = useTimelineLoader(`${relay}-notes`, [relay], query, { eventFilter, enabled: !!filter });
|
||||||
|
|
||||||
const header = (
|
const header = (
|
||||||
<Flex gap="2" wrap="wrap" px={["2", 0]}>
|
<Flex gap="2" wrap="wrap" px={["2", 0]}>
|
||||||
<PeopleListSelection />
|
<PeopleListSelection />
|
||||||
|
<NoteFilterTypeButtons showReplies={showReplies} showReposts={showReposts} />
|
||||||
<Spacer />
|
<Spacer />
|
||||||
<TimelineViewTypeButtons />
|
<TimelineViewTypeButtons />
|
||||||
</Flex>
|
</Flex>
|
||||||
|
Reference in New Issue
Block a user