feat: filter out reviews about localhost relays
This commit is contained in:
@@ -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(() => {
|
||||||
|
|||||||
@@ -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>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user