fix(config): locale panel show active language/keyboard, add save button
All checks were successful
Beta Release / beta (push) Successful in 41s
All checks were successful
Beta Release / beta (push) Successful in 41s
- Fix language prop passing keyboard value instead of language - Add save button that persists language + keyboard_layout via API - Add local toast for save confirmation 💘 Generated with Crush Assisted-by: GLM-5.1 via Crush <crush@charm.land>
This commit is contained in:
@@ -183,8 +183,8 @@ export default function Config({ api }) {
|
||||
)}
|
||||
{activePanel === 'locale' && (
|
||||
<PanelLocale
|
||||
language={keyboard} layouts={layouts}
|
||||
setLanguage={setLanguage} setKeyboard={setKeyboard}
|
||||
language={language} keyboard={keyboard} layouts={layouts}
|
||||
api={api}
|
||||
t={t}
|
||||
/>
|
||||
)}
|
||||
@@ -392,7 +392,8 @@ function PanelProviders({ providers, editProvider, providerForm, setProviderForm
|
||||
</div>
|
||||
</div>
|
||||
<div className="provider-card-meta" style={{ marginTop: 8 }}>
|
||||
<span className="mono">{p.model || '—'}</span>
|
||||
{p.active && <span className="badge ok" style={{ marginRight: 6 }}>active</span>}
|
||||
{p.model && p.model !== p.name && <span className="mono">{p.model}</span>}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -460,9 +461,29 @@ function PanelUpdates({ updates, checking, updating, needsUpdateCount, installed
|
||||
)
|
||||
}
|
||||
|
||||
function PanelLocale({ language, keyboard, layouts, setLanguage, setKeyboard, t }) {
|
||||
function PanelLocale({ language, keyboard, layouts, api, t }) {
|
||||
const [saving, setSaving] = useState(false)
|
||||
const [toast, setToast] = useState(null)
|
||||
|
||||
const showToast = (msg) => {
|
||||
setToast(msg)
|
||||
setTimeout(() => setToast(null), 2500)
|
||||
}
|
||||
|
||||
const handleSave = async () => {
|
||||
setSaving(true)
|
||||
try {
|
||||
await api.savePreferences({ language, keyboard_layout: keyboard })
|
||||
showToast(t('config.saved'))
|
||||
} catch (err) {
|
||||
showToast(`${t('config.error')}: ${err.message}`)
|
||||
}
|
||||
setSaving(false)
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="config-card">
|
||||
{toast && <div className="config-toast">{toast}</div>}
|
||||
<div className="config-card-group">
|
||||
<span className="config-card-group-label">{t('config.language')}</span>
|
||||
<div className="chip-row">
|
||||
@@ -491,6 +512,11 @@ function PanelLocale({ language, keyboard, layouts, setLanguage, setKeyboard, t
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<div className="config-card-actions">
|
||||
<button className="primary sm" onClick={handleSave} disabled={saving}>
|
||||
{saving ? t('config.saving') : t('config.save')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user