diff --git a/src/components/NoteList/index.tsx b/src/components/NoteList/index.tsx index b289188d..4378f412 100644 --- a/src/components/NoteList/index.tsx +++ b/src/components/NoteList/index.tsx @@ -46,7 +46,8 @@ const NoteList = forwardRef( hideUntrustedNotes = false, areAlgoRelays = false, showRelayCloseReason = false, - pinnedEventIds = [] + pinnedEventIds = [], + filterFn }: { subRequests: TFeedSubRequest[] showKinds: number[] @@ -56,6 +57,7 @@ const NoteList = forwardRef( areAlgoRelays?: boolean showRelayCloseReason?: boolean pinnedEventIds?: string[] + filterFn?: (event: Event) => boolean }, ref ) => { @@ -102,10 +104,13 @@ const NoteList = forwardRef( ) { return true } + if (filterFn && !filterFn(evt)) { + return true + } return false }, - [hideReplies, hideUntrustedNotes, mutePubkeySet, pinnedEventIds, isEventDeleted] + [hideReplies, hideUntrustedNotes, mutePubkeySet, pinnedEventIds, isEventDeleted, filterFn] ) const filteredEvents = useMemo(() => { diff --git a/src/pages/primary/ExplorePage/index.tsx b/src/pages/primary/ExplorePage/index.tsx index 242da526..281ebe19 100644 --- a/src/pages/primary/ExplorePage/index.tsx +++ b/src/pages/primary/ExplorePage/index.tsx @@ -5,9 +5,11 @@ import Tabs from '@/components/Tabs' import { Button } from '@/components/ui/button' import { BIG_RELAY_URLS, ExtendedKind } from '@/constants' import PrimaryPageLayout from '@/layouts/PrimaryPageLayout' +import { getReplaceableEventIdentifier } from '@/lib/event' import { useUserTrust } from '@/providers/UserTrustProvider' import { Compass, Plus } from 'lucide-react' -import { forwardRef, useState } from 'react' +import { NostrEvent } from 'nostr-tools' +import { forwardRef, useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' type TExploreTabs = 'following' | 'explore' | 'reviews' @@ -16,6 +18,34 @@ const ExplorePage = forwardRef((_, ref) => { const { hideUntrustedNotes } = useUserTrust() const [tab, setTab] = useState('explore') + const relayReviewFilterFn = useCallback((evt: NostrEvent) => { + const d = getReplaceableEventIdentifier(evt) + if (!d) return false + + try { + const url = new URL(d) + return url.hostname !== 'localhost' + } catch { + return false + } + }, []) + + const content = useMemo(() => { + return tab === 'explore' ? ( + + ) : tab === 'reviews' ? ( + + ) : ( + + ) + }, [tab, relayReviewFilterFn, hideUntrustedNotes]) + return ( { ]} onTabChange={(tab) => setTab(tab as TExploreTabs)} /> - {tab === 'explore' ? ( - - ) : tab === 'reviews' ? ( - - ) : ( - - )} + {content} ) })