import { toRelaySettings } from '@/lib/link' import { simplifyUrl } from '@/lib/url' import { cn } from '@/lib/utils' import { SecondaryPageLink } from '@/PageManager' import { useFavoriteRelays } from '@/providers/FavoriteRelaysProvider' import { useFeed } from '@/providers/FeedProvider' import { useNostr } from '@/providers/NostrProvider' import { usePinnedUsers } from '@/providers/PinnedUsersProvider' import { Settings2, Star, UsersRound } from 'lucide-react' import { useMemo } from 'react' import { useTranslation } from 'react-i18next' import RelayIcon from '../RelayIcon' import RelaySetCard from '../RelaySetCard' export default function FeedSwitcher({ close }: { close?: () => void }) { const { t } = useTranslation() const { pubkey } = useNostr() const { relaySets, favoriteRelays } = useFavoriteRelays() const { feedInfo, switchFeed } = useFeed() const { pinnedPubkeySet } = usePinnedUsers() const filteredRelaySets = useMemo( () => relaySets.filter((set) => set.relayUrls.length > 0), [relaySets] ) const hasRelays = filteredRelaySets.length > 0 || favoriteRelays.length > 0 return (
{/* Personal Feeds Section */}
{ if (!pubkey) return switchFeed('following', { pubkey }) close?.() }} >
{t('Following')}
{ if (!pubkey) return switchFeed('pinned', { pubkey }) close?.() }} >
{t('Special Follow')}
{/* Relay Feeds Section */} {hasRelays && (
close?.()} > {t('edit')} } />
{filteredRelaySets.map((set) => ( { if (!select) return switchFeed('relays', { activeRelaySetId: set.id }) close?.() }} /> ))} {favoriteRelays.map((relay) => ( { switchFeed('relay', { relay }) close?.() }} >
{simplifyUrl(relay)}
))}
)}
) } function SectionHeader({ title, action }: { title: string; action?: React.ReactNode }) { return (

{title}

{action}
) } function FeedSwitcherItem({ children, isActive, disabled, onClick }: { children: React.ReactNode isActive: boolean disabled?: boolean onClick: () => void }) { return (
{ if (disabled) return onClick() }} >
{children}
) }