fix(ui): error-handle fire-and-forget mutations in settings panels

This commit is contained in:
Gabriel Brown
2026-07-11 16:59:16 -04:00
parent 8c579d060a
commit bca86196fb
5 changed files with 185 additions and 34 deletions
@@ -160,13 +160,17 @@ export const DotfilesManager = () => {
const saveSelected = async (next: string) => {
if (!selected) return;
await putFile({
path: selected.path,
content: next,
isExecutable: selected.isExecutable,
});
setSavedContent(next);
toast.success('Saved.');
try {
await putFile({
path: selected.path,
content: next,
isExecutable: selected.isExecutable,
});
setSavedContent(next);
toast.success('Saved.');
} catch (error) {
toast.error(error instanceof Error ? error.message : 'Save failed.');
}
};
const importAll = async (incoming: UploadFile[]) => {
@@ -231,11 +235,15 @@ export const DotfilesManager = () => {
const deleteSelected = async () => {
if (!selected) return;
await removeFile({ fileId: selected._id as never });
setSelected(undefined);
setContent('');
setSavedContent('');
toast.success('Deleted.');
try {
await removeFile({ fileId: selected._id as never });
setSelected(undefined);
setContent('');
setSavedContent('');
toast.success('Deleted.');
} catch (error) {
toast.error(error instanceof Error ? error.message : 'Delete failed.');
}
};
return (
@@ -345,8 +353,12 @@ export const DotfilesManager = () => {
<RepoPanel
settings={settings}
onSave={async (values) => {
await updateEnv(values);
toast.success('Saved.');
try {
await updateEnv(values);
toast.success('Saved.');
} catch (error) {
toast.error(error instanceof Error ? error.message : 'Save failed.');
}
}}
/>