fix(ui): error-handle fire-and-forget mutations in settings panels
This commit is contained in:
@@ -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.');
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user