import { useState, useEffect } from 'react'; import { Link, useLocation, useSearchParams } from 'react-router-dom'; import { useAuth } from '../../hooks/useAuth'; import { useChannels } from '../../hooks/useChannels'; import { APPS } from '../../config/apps'; import { OptimizedImage } from '../OptimizedImage/OptimizedImage'; export function Navbar() { const { isAuthenticated, logout, isAdmin } = useAuth(); const location = useLocation(); const [searchParams, setSearchParams] = useSearchParams(); const { channels } = useChannels(); // Detect current app from registry const getCurrentApp = (pathname: string) => { return APPS.find(app => pathname === app.link || pathname.startsWith(app.link + '/')); }; const currentApp = getCurrentApp(location.pathname); const isVideoApp = currentApp?.id === 'videos'; const [searchInput, setSearchInput] = useState(searchParams.get('search') || ''); // Sync search input with URL params useEffect(() => { setSearchInput(searchParams.get('search') || ''); }, [searchParams]); const handleLogout = async () => { await logout(); }; const handleSearchSubmit = (e: React.FormEvent) => { e.preventDefault(); const newParams = new URLSearchParams(searchParams); if (searchInput) { newParams.set('search', searchInput); } else { newParams.delete('search'); } newParams.set('page', '1'); setSearchParams(newParams); }; const handleSortChange = (e: React.ChangeEvent) => { const newParams = new URLSearchParams(searchParams); newParams.set('sort', e.target.value); newParams.set('page', '1'); setSearchParams(newParams); }; const handleChannelChange = (e: React.ChangeEvent) => { const newParams = new URLSearchParams(searchParams); if (e.target.value) { newParams.set('channel', e.target.value); } else { newParams.delete('channel'); } newParams.set('page', '1'); setSearchParams(newParams); }; const handleClearFilters = () => { setSearchInput(''); setSearchParams(new URLSearchParams()); }; const hasFilters = searchParams.get('search') || searchParams.get('channel') || (searchParams.get('sort') && searchParams.get('sort') !== 'newest'); return ( <>

Rainbows, Cupcakes & Unicorns

Home {!isAuthenticated && ( Sign In / Register )} {isAdmin && ( Admin )} {isAuthenticated && ( )}
{isVideoApp && (
setSearchInput(e.target.value)} className="flex-1 px-4 py-2 border border-border rounded-full bg-white text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent" />
{hasFilters && ( )}
)} ); }