fix(ui): stale closure in executeSave, type mismatch, modal dismiss during save

- Use functional state updater in executeSave to avoid stale settings closure
- Widen handleTextInputChange key param to string (schema keys are dynamic)
- Block Esc/backdrop dismiss on confirmation modal during confirmLoading
This commit is contained in:
Ryan Crabbe 2026-03-21 12:39:34 -07:00
parent 94c22707a2
commit bcfa665e82
2 changed files with 5 additions and 3 deletions

View file

@ -174,7 +174,7 @@ const DefaultUserSettings: React.FC<DefaultUserSettingsProps> = ({
setSaving(true);
try {
const updatedSettings = await updateInternalUserSettings(accessToken, processedValues);
setSettings({ ...settings, values: updatedSettings.settings });
setSettings((prev) => prev ? { ...prev, values: updatedSettings.settings } : null);
setIsEditing(false);
return true;
} catch (error) {
@ -222,7 +222,7 @@ const DefaultUserSettings: React.FC<DefaultUserSettingsProps> = ({
}
};
const handleTextInputChange = (key: keyof DefaultUserSettingsValues, value: DefaultUserSettingsValues[typeof key]) => {
const handleTextInputChange = (key: string, value: any) => {
setEditedValues((prev) => ({ ...prev, [key]: value }));
};

View file

@ -55,12 +55,14 @@ export default function ConfirmSettingsChangeModal({
title="Review Changes"
open={isOpen}
onOk={onConfirm}
onCancel={onCancel}
onCancel={() => { if (!confirmLoading) onCancel(); }}
confirmLoading={confirmLoading}
okText={confirmLoading ? "Saving..." : "Confirm Changes"}
cancelText="Cancel"
okButtonProps={{ disabled: confirmLoading }}
cancelButtonProps={{ disabled: confirmLoading }}
keyboard={!confirmLoading}
maskClosable={!confirmLoading}
>
<div className="space-y-4">
<div className="space-y-2">