reduce duplication (#12302)

This commit is contained in:
Matthias Mair 2026-07-05 14:52:37 +02:00 committed by GitHub
parent 5df2adae6d
commit c56fe7f612
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 22 additions and 57 deletions

View File

@ -15,15 +15,28 @@ import type {
import { api } from '../App'; import { api } from '../App';
import { useUserState } from './UserState'; import { useUserState } from './UserState';
const createDefaultSettingsSetup = (get: () => SettingsStateProps) => ({
settings: [] as Setting[],
lookup: {} as SettingsLookup,
loaded: false,
isError: false,
getSetting: (key: string, default_value?: string) => {
return get().lookup[key] ?? default_value ?? '';
},
isSet: (key: string, default_value?: boolean) => {
const value = get().lookup[key] ?? default_value ?? 'false';
return isTrue(value);
},
getSettingLength: () => {
return Object.keys(get().lookup).length;
}
});
/** /**
* State management for global (server side) settings * State management for global (server side) settings
*/ */
export const useGlobalSettingsState = create<SettingsStateProps>( export const useGlobalSettingsState = create<SettingsStateProps>(
(set, get) => ({ (set, get) => ({
settings: [],
loaded: false,
isError: false,
lookup: {},
endpoint: ApiEndpoints.settings_global_list, endpoint: ApiEndpoints.settings_global_list,
fetchSettings: async () => { fetchSettings: async () => {
let success = true; let success = true;
@ -59,16 +72,7 @@ export const useGlobalSettingsState = create<SettingsStateProps>(
return success; return success;
}, },
getSetting: (key: string, default_value?: string) => { ...createDefaultSettingsSetup(get)
return get().lookup[key] ?? default_value ?? '';
},
isSet: (key: string, default_value?: boolean) => {
const value = get().lookup[key] ?? default_value ?? 'false';
return isTrue(value);
},
getSettingLength: () => {
return Object.keys(get().lookup).length;
}
}) })
); );
@ -76,10 +80,6 @@ export const useGlobalSettingsState = create<SettingsStateProps>(
* State management for user (server side) settings * State management for user (server side) settings
*/ */
export const useUserSettingsState = create<SettingsStateProps>((set, get) => ({ export const useUserSettingsState = create<SettingsStateProps>((set, get) => ({
settings: [],
lookup: {},
loaded: false,
isError: false,
endpoint: ApiEndpoints.settings_user_list, endpoint: ApiEndpoints.settings_user_list,
fetchSettings: async () => { fetchSettings: async () => {
let success = true; let success = true;
@ -111,16 +111,7 @@ export const useUserSettingsState = create<SettingsStateProps>((set, get) => ({
return success; return success;
}, },
getSetting: (key: string, default_value?: string) => { ...createDefaultSettingsSetup(get)
return get().lookup[key] ?? default_value ?? '';
},
isSet: (key: string, default_value?: boolean) => {
const value = get().lookup[key] ?? default_value ?? 'false';
return isTrue(value);
},
getSettingLength: () => {
return Object.keys(get().lookup).length;
}
})); }));
/** /**
@ -138,11 +129,7 @@ export const createPluginSettingsState = ({
const pathParams: PathParams = { plugin }; const pathParams: PathParams = { plugin };
return createStore<SettingsStateProps>()((set, get) => ({ return createStore<SettingsStateProps>()((set, get) => ({
settings: [], endpoint,
lookup: {},
loaded: false,
isError: false,
endpoint: endpoint,
pathParams, pathParams,
fetchSettings: async () => { fetchSettings: async () => {
let success = true; let success = true;
@ -185,16 +172,7 @@ export const createPluginSettingsState = ({
return success; return success;
}, },
getSetting: (key: string, default_value?: string) => { ...createDefaultSettingsSetup(get)
return get().lookup[key] ?? default_value ?? '';
},
isSet: (key: string, default_value?: boolean) => {
const value = get().lookup[key] ?? default_value ?? 'false';
return isTrue(value);
},
getSettingLength: () => {
return Object.keys(get().lookup).length;
}
})); }));
}; };
@ -213,10 +191,6 @@ export const createMachineSettingsState = ({
const pathParams: PathParams = { machine, config_type: configType }; const pathParams: PathParams = { machine, config_type: configType };
return createStore<SettingsStateProps>((set, get) => ({ return createStore<SettingsStateProps>((set, get) => ({
settings: [],
lookup: {},
loaded: false,
isError: false,
endpoint: ApiEndpoints.machine_setting_detail, endpoint: ApiEndpoints.machine_setting_detail,
pathParams, pathParams,
fetchSettings: async () => { fetchSettings: async () => {
@ -249,16 +223,7 @@ export const createMachineSettingsState = ({
return success; return success;
}, },
getSetting: (key: string, default_value?: string) => { ...createDefaultSettingsSetup(get)
return get().lookup[key] ?? default_value ?? '';
},
isSet: (key: string, default_value?: boolean) => {
const value = get().lookup[key] ?? default_value ?? 'false';
return isTrue(value);
},
getSettingLength: () => {
return Object.keys(get().lookup).length;
}
})); }));
}; };