fix: filter out onion relay reviews on browsers without onion support

This commit is contained in:
codytseng
2025-11-22 00:19:54 +08:00
parent a6a8ac04ac
commit a8fa3e1ecd
2 changed files with 16 additions and 5 deletions

View File

@@ -1,5 +1,10 @@
export function isWebsocketUrl(url: string): boolean {
return /^wss?:\/\/.+$/.test(url)
try {
const protocol = new URL(url).protocol
return protocol === 'ws:' || protocol === 'wss:'
} catch {
return false
}
}
export function isOnionUrl(url: string): boolean {

View File

@@ -6,7 +6,9 @@ import { Button } from '@/components/ui/button'
import { BIG_RELAY_URLS, ExtendedKind } from '@/constants'
import PrimaryPageLayout from '@/layouts/PrimaryPageLayout'
import { getReplaceableEventIdentifier } from '@/lib/event'
import { isLocalNetworkUrl, isOnionUrl, isWebsocketUrl } from '@/lib/url'
import { useUserTrust } from '@/providers/UserTrustProvider'
import storage from '@/services/local-storage.service'
import { TPageRef } from '@/types'
import { Compass, Plus } from 'lucide-react'
import { NostrEvent } from 'nostr-tools'
@@ -24,12 +26,16 @@ const ExplorePage = forwardRef<TPageRef>((_, ref) => {
const d = getReplaceableEventIdentifier(evt)
if (!d) return false
try {
const url = new URL(d)
return url.hostname !== 'localhost'
} catch {
if (!isWebsocketUrl(d)) {
return false
}
if (isLocalNetworkUrl(d)) {
return false
}
if (storage.getFilterOutOnionRelays() && isOnionUrl(d)) {
return false
}
return true
}, [])
const content = useMemo(() => {