refactor phase 6
This commit is contained in:
@@ -18,8 +18,20 @@ import {
|
||||
AccountSetting,
|
||||
ModuleSetting,
|
||||
ModuleEnableSettings,
|
||||
AccountSettingsError,
|
||||
} from '../services/api';
|
||||
|
||||
const getAccountSettingsErrorMessage = (error: AccountSettingsError): string => {
|
||||
switch (error.type) {
|
||||
case 'ACCOUNT_SETTINGS_NOT_FOUND':
|
||||
return 'No account-level settings have been created yet.';
|
||||
case 'ACCOUNT_SETTINGS_VALIDATION_ERROR':
|
||||
return error.message || 'The account settings request contained invalid data.';
|
||||
default:
|
||||
return error.message || 'Unexpected error while loading account settings.';
|
||||
}
|
||||
};
|
||||
|
||||
interface SettingsState {
|
||||
accountSettings: Record<string, AccountSetting>;
|
||||
moduleSettings: Record<string, Record<string, ModuleSetting>>;
|
||||
@@ -58,7 +70,17 @@ export const useSettingsStore = create<SettingsState>()(
|
||||
});
|
||||
set({ accountSettings: settingsMap, loading: false });
|
||||
} catch (error: any) {
|
||||
set({ error: error.message, loading: false });
|
||||
if (error instanceof AccountSettingsError) {
|
||||
const message = getAccountSettingsErrorMessage(error);
|
||||
// Not found should not be treated as failure – just indicate no settings yet
|
||||
if (error.type === 'ACCOUNT_SETTINGS_NOT_FOUND') {
|
||||
set({ accountSettings: {}, loading: false, error: null });
|
||||
} else {
|
||||
set({ error: message, loading: false });
|
||||
}
|
||||
} else {
|
||||
set({ error: error.message, loading: false });
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -69,6 +91,14 @@ export const useSettingsStore = create<SettingsState>()(
|
||||
accountSettings: { ...state.accountSettings, [key]: setting }
|
||||
}));
|
||||
} catch (error: any) {
|
||||
if (error instanceof AccountSettingsError) {
|
||||
if (error.type === 'ACCOUNT_SETTINGS_NOT_FOUND') {
|
||||
// Silently ignore missing setting – it just hasn't been created yet
|
||||
return;
|
||||
}
|
||||
set({ error: getAccountSettingsErrorMessage(error) });
|
||||
return;
|
||||
}
|
||||
set({ error: error.message });
|
||||
}
|
||||
},
|
||||
@@ -90,6 +120,11 @@ export const useSettingsStore = create<SettingsState>()(
|
||||
loading: false
|
||||
}));
|
||||
} catch (error: any) {
|
||||
if (error instanceof AccountSettingsError) {
|
||||
const message = getAccountSettingsErrorMessage(error);
|
||||
set({ error: message, loading: false });
|
||||
throw error;
|
||||
}
|
||||
set({ error: error.message, loading: false });
|
||||
throw error;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user