import { useEffect, useMemo, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; import { useAppContext } from '../context/AppContext'; import { SettingsTab } from '../tabs/SettingsTab'; import { AdminTab } from '../tabs/AdminTab'; import { ConfigTab } from '../tabs/ConfigTab'; import { PageHeader } from '../components/ui/page-header'; import { Button } from '../components/ui/Primitives'; type SettingsSection = 'Account' | 'Bot Config' | 'Admin Panel'; export function SettingsView() { const { botState, isAdmin, socket } = useAppContext(); const [searchParams, setSearchParams] = useSearchParams(); const sections: SettingsSection[] = [ 'Account', ...(isAdmin ? ['Bot Config' as SettingsSection] : []), ...(isAdmin ? ['Admin Panel' as SettingsSection] : []), ]; const requestedSection = searchParams.get('section'); const initialSection = useMemo(() => { if (requestedSection === 'Bot Config' && isAdmin) return 'Bot Config'; if (requestedSection === 'Admin Panel' && isAdmin) return 'Admin Panel'; return 'Account'; }, [requestedSection, isAdmin]); const [section, setSection] = useState(initialSection); useEffect(() => { setSection(initialSection); }, [initialSection]); const handleSectionChange = (nextSection: SettingsSection) => { setSection(nextSection); setSearchParams(nextSection === 'Account' ? {} : { section: nextSection }); }; return (
{sections.map(s => ( ))}
{section === 'Account' && } {section === 'Bot Config' && isAdmin && } {section === 'Admin Panel' && isAdmin && }
); }