import { useState, useEffect, useContext } from 'react' import { Settings as SettingsIcon, Play, CheckCircle, Languages, Coins, Upload, Tag, Plus, Pencil, Trash2, X, Mail } from 'lucide-react' import { api } from '../utils/api' import { useLanguage } from '../i18n/LanguageContext' import { useToast } from '../components/ToastContainer' import { CURRENCIES } from '../i18n/LanguageContext' import { AppContext } from '../App' import { useAuth } from '../contexts/AuthContext' import Modal from '../components/Modal' const ROLE_COLORS = [ '#3B82F6', '#10B981', '#F59E0B', '#EF4444', '#8B5CF6', '#EC4899', '#06B6D4', '#F97316', '#6366F1', '#14B8A6', ] export default function Settings() { const { t, lang, setLang, currency, setCurrency } = useLanguage() const toast = useToast() const { user } = useAuth() const { roles, loadRoles } = useContext(AppContext) const [restarting, setRestarting] = useState(false) const [success, setSuccess] = useState(false) const [maxSizeMB, setMaxSizeMB] = useState(50) const [sizeSaving, setSizeSaving] = useState(false) const [sizeSaved, setSizeSaved] = useState(false) const [ceoEmail, setCeoEmail] = useState('') const [ceoSaving, setCeoSaving] = useState(false) const [ceoSaved, setCeoSaved] = useState(false) useEffect(() => { api.get('/settings/app').then(s => { setMaxSizeMB(s.uploadMaxSizeMB || 50) if (s.ceoEmail) setCeoEmail(s.ceoEmail) }).catch(() => {}) }, []) const handleSaveMaxSize = async () => { setSizeSaving(true) setSizeSaved(false) try { const res = await api.patch('/settings/app', { uploadMaxSizeMB: maxSizeMB }) setMaxSizeMB(res.uploadMaxSizeMB) setSizeSaved(true) setTimeout(() => setSizeSaved(false), 2000) } catch (err) { toast.error(err.message || t('settings.saveFailed')) } finally { setSizeSaving(false) } } const handleRestartTutorial = async () => { setRestarting(true) setSuccess(false) try { await api.patch('/users/me/tutorial', { completed: false }) setSuccess(true) setTimeout(() => { window.location.reload() // Reload to trigger tutorial }, 1500) } catch (err) { console.error('Failed to restart tutorial:', err) toast.error(t('settings.restartTutorialFailed')) } finally { setRestarting(false) } } return (
{t('settings.preferences')}
{/* General Settings */}{t('settings.currencyHint')}
{t('settings.maxFileSizeHint')}
{t('settings.tutorialDesc')}
{success && ({t('settings.reloadingPage')}
)}{t('settings.ceoEmailHint')}
{t('settings.rolesDesc')}
{t('settings.noRoles')}
)}