refactor phase 6

This commit is contained in:
alorig
2025-11-20 21:47:03 +05:00
parent b0409d965b
commit 45dc0d1fa2
5 changed files with 305 additions and 121 deletions

View File

@@ -19,7 +19,8 @@ import {
SeedKeyword,
fetchAccountSetting,
createAccountSetting,
updateAccountSetting
updateAccountSetting,
AccountSettingsError
} from '../../services/api';
import { Card } from '../../components/ui/card';
import Badge from '../../components/ui/badge/Badge';
@@ -53,6 +54,15 @@ const formatVolume = (volume: number): string => {
return volume.toString();
};
const getAccountSettingsPreferenceMessage = (error: AccountSettingsError): string => {
switch (error.type) {
case 'ACCOUNT_SETTINGS_VALIDATION_ERROR':
return error.message || 'The saved preferences could not be loaded because the data is invalid.';
default:
return error.message || 'Unable to load your saved preferences right now.';
}
};
export default function IndustriesSectorsKeywords() {
const toast = useToast();
const { pageSize } = usePageSizeStore();
@@ -98,9 +108,18 @@ export default function IndustriesSectorsKeywords() {
}
}
}
} catch (error) {
// If preferences don't exist yet, that's fine
console.log('No user preferences found');
} catch (error: any) {
if (error instanceof AccountSettingsError) {
if (error.type === 'ACCOUNT_SETTINGS_NOT_FOUND') {
console.debug('No saved user preferences yet.');
return;
}
console.warn('Failed to load user preferences:', error);
toast.error(getAccountSettingsPreferenceMessage(error));
return;
}
console.warn('Failed to load user preferences:', error);
toast.error('Unable to load your saved preferences right now.');
}
};
@@ -266,8 +285,7 @@ export default function IndustriesSectorsKeywords() {
is_active: true,
});
} catch (error: any) {
// If setting doesn't exist, create it
if (error.status === 404) {
if (error instanceof AccountSettingsError && error.type === 'ACCOUNT_SETTINGS_NOT_FOUND') {
await createAccountSetting({
key: 'user_preferences',
config: preferences,
@@ -280,7 +298,11 @@ export default function IndustriesSectorsKeywords() {
toast.success('Preferences saved successfully! These will be used when creating new sites.');
} catch (error: any) {
toast.error(`Failed to save preferences: ${error.message}`);
if (error instanceof AccountSettingsError) {
toast.error(getAccountSettingsPreferenceMessage(error));
} else {
toast.error(`Failed to save preferences: ${error.message}`);
}
} finally {
setSaving(false);
}