import Explore from '@/components/Explore' import FollowingFavoriteRelayList from '@/components/FollowingFavoriteRelayList' import NoteList from '@/components/NoteList' 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 { 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' import { forwardRef, useCallback, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' type TExploreTabs = 'following' | 'explore' | 'reviews' const ExplorePage = forwardRef((_, ref) => { const { hideUntrustedNotes } = useUserTrust() const [tab, setTab] = useState('explore') const topRef = useRef(null) const relayReviewFilterFn = useCallback((evt: NostrEvent) => { const d = getReplaceableEventIdentifier(evt) if (!d) return false if (!isWebsocketUrl(d)) { return false } if (isLocalNetworkUrl(d)) { return false } if (storage.getFilterOutOnionRelays() && isOnionUrl(d)) { return false } return true }, []) const content = useMemo(() => { return tab === 'explore' ? ( ) : tab === 'reviews' ? ( ) : ( ) }, [tab, relayReviewFilterFn, hideUntrustedNotes]) return ( } displayScrollToTopButton > { setTab(tab as TExploreTabs) topRef.current?.scrollIntoView({ behavior: 'instant' }) }} />
{content} ) }) ExplorePage.displayName = 'ExplorePage' export default ExplorePage function ExplorePageTitlebar() { const { t } = useTranslation() return (
{t('Explore')}
) }