feat: filter out reviews about localhost relays

This commit is contained in:
codytseng
2025-10-28 22:21:28 +08:00
parent cb19d8256b
commit ca22d405bf
2 changed files with 39 additions and 15 deletions

View File

@@ -46,7 +46,8 @@ const NoteList = forwardRef(
hideUntrustedNotes = false, hideUntrustedNotes = false,
areAlgoRelays = false, areAlgoRelays = false,
showRelayCloseReason = false, showRelayCloseReason = false,
pinnedEventIds = [] pinnedEventIds = [],
filterFn
}: { }: {
subRequests: TFeedSubRequest[] subRequests: TFeedSubRequest[]
showKinds: number[] showKinds: number[]
@@ -56,6 +57,7 @@ const NoteList = forwardRef(
areAlgoRelays?: boolean areAlgoRelays?: boolean
showRelayCloseReason?: boolean showRelayCloseReason?: boolean
pinnedEventIds?: string[] pinnedEventIds?: string[]
filterFn?: (event: Event) => boolean
}, },
ref ref
) => { ) => {
@@ -102,10 +104,13 @@ const NoteList = forwardRef(
) { ) {
return true return true
} }
if (filterFn && !filterFn(evt)) {
return true
}
return false return false
}, },
[hideReplies, hideUntrustedNotes, mutePubkeySet, pinnedEventIds, isEventDeleted] [hideReplies, hideUntrustedNotes, mutePubkeySet, pinnedEventIds, isEventDeleted, filterFn]
) )
const filteredEvents = useMemo(() => { const filteredEvents = useMemo(() => {

View File

@@ -5,9 +5,11 @@ import Tabs from '@/components/Tabs'
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
import { BIG_RELAY_URLS, ExtendedKind } from '@/constants' import { BIG_RELAY_URLS, ExtendedKind } from '@/constants'
import PrimaryPageLayout from '@/layouts/PrimaryPageLayout' import PrimaryPageLayout from '@/layouts/PrimaryPageLayout'
import { getReplaceableEventIdentifier } from '@/lib/event'
import { useUserTrust } from '@/providers/UserTrustProvider' import { useUserTrust } from '@/providers/UserTrustProvider'
import { Compass, Plus } from 'lucide-react' 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' import { useTranslation } from 'react-i18next'
type TExploreTabs = 'following' | 'explore' | 'reviews' type TExploreTabs = 'following' | 'explore' | 'reviews'
@@ -16,6 +18,34 @@ const ExplorePage = forwardRef((_, ref) => {
const { hideUntrustedNotes } = useUserTrust() const { hideUntrustedNotes } = useUserTrust()
const [tab, setTab] = useState<TExploreTabs>('explore') const [tab, setTab] = useState<TExploreTabs>('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' ? (
<Explore />
) : tab === 'reviews' ? (
<NoteList
showKinds={[ExtendedKind.RELAY_REVIEW]}
subRequests={[{ urls: BIG_RELAY_URLS, filter: {} }]}
filterMutedNotes
hideUntrustedNotes={hideUntrustedNotes}
filterFn={relayReviewFilterFn}
/>
) : (
<FollowingFavoriteRelayList />
)
}, [tab, relayReviewFilterFn, hideUntrustedNotes])
return ( return (
<PrimaryPageLayout <PrimaryPageLayout
ref={ref} ref={ref}
@@ -32,18 +62,7 @@ const ExplorePage = forwardRef((_, ref) => {
]} ]}
onTabChange={(tab) => setTab(tab as TExploreTabs)} onTabChange={(tab) => setTab(tab as TExploreTabs)}
/> />
{tab === 'explore' ? ( {content}
<Explore />
) : tab === 'reviews' ? (
<NoteList
showKinds={[ExtendedKind.RELAY_REVIEW]}
subRequests={[{ urls: BIG_RELAY_URLS, filter: {} }]}
filterMutedNotes
hideUntrustedNotes={hideUntrustedNotes}
/>
) : (
<FollowingFavoriteRelayList />
)}
</PrimaryPageLayout> </PrimaryPageLayout>
) )
}) })