()
| 174 | ); |
| 175 | |
| 176 | const handleSave = async () => { |
| 177 | if (!hasChanges) return; |
| 178 | setSaving(true); |
| 179 | setMessage(null); |
| 180 | try { |
| 181 | const result = await updateConfig(editedKeys, needsReinit); |
| 182 | setMessage({ |
| 183 | type: 'success', |
| 184 | text: `Saved ${result.updated?.length ?? 0} setting(s).${needsReinit ? ' LLM reinitialized.' : ''}`, |
| 185 | }); |
| 186 | // Merge into config |
| 187 | setConfig((prev) => ({ ...prev, ...editedKeys })); |
| 188 | setEditedKeys({}); |
| 189 | } catch (err) { |
| 190 | setMessage({ type: 'error', text: err.message }); |
| 191 | } finally { |
| 192 | setSaving(false); |
| 193 | } |
| 194 | }; |
| 195 | |
| 196 | const handleDiscard = () => { |
| 197 | setEditedKeys({}); |
nothing calls this directly
no test coverage detected