Skip to content

Commit d7dd85e

Browse files
fix: return default from hook instead of api
1 parent c9989ef commit d7dd85e

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

src/store/reducers/settings/api.ts

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,27 @@ import {serializeError} from '../../utils';
88
import {api} from '../api';
99

1010
import {SETTINGS_OPTIONS} from './constants';
11-
import {getSettingDefault, parseSettingValue, stringifySettingValue} from './utils';
11+
import {parseSettingValue, stringifySettingValue} from './utils';
1212

1313
export const settingsApi = api.injectEndpoints({
1414
endpoints: (builder) => ({
1515
getSingleSetting: builder.query<unknown, Partial<GetSingleSettingParams>>({
1616
queryFn: async ({name, user}) => {
1717
try {
18-
if (!name || !window.api?.metaSettings) {
18+
if (!name || !user || !window.api?.metaSettings) {
1919
throw new Error(
2020
'Cannot get setting, no MetaSettings API or necessary params are missing',
2121
);
2222
}
2323

24-
const defaultValue = getSettingDefault(name) as unknown;
25-
26-
if (!user) {
27-
return {data: defaultValue};
28-
}
29-
3024
const data = await window.api.metaSettings.getSingleSetting({
3125
name,
3226
user,
3327
// Directly access options here to avoid them in cache key
3428
preventBatching: SETTINGS_OPTIONS[name]?.preventBatching,
3529
});
3630

37-
return {data: parseSettingValue(data?.value) ?? defaultValue};
31+
return {data: parseSettingValue(data?.value)};
3832
} catch (error) {
3933
return {error: serializeError(error)};
4034
}
@@ -97,14 +91,11 @@ export const settingsApi = api.injectEndpoints({
9791
name.forEach((settingName) => {
9892
const settingData = data[settingName];
9993

100-
const defaultValue = getSettingDefault(settingName);
101-
10294
const cacheEntryParams: GetSingleSettingParams = {
10395
name: settingName,
10496
user,
10597
};
106-
const newSettingValue =
107-
parseSettingValue(settingData?.value) ?? defaultValue;
98+
const newSettingValue = parseSettingValue(settingData?.value);
10899

109100
const patch = dispatch(
110101
settingsApi.util.upsertQueryData(

src/store/reducers/settings/useSetting.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {useTypedSelector} from '../../../utils/hooks/useTypedSelector';
77
import {selectMetaUser} from '../authentication/authentication';
88

99
import {settingsApi} from './api';
10+
import {getSettingDefault} from './utils';
1011

1112
type SaveSettingValue<T> = (value: T | undefined) => void;
1213

@@ -30,10 +31,16 @@ export function useSetting<T>(name?: string): {
3031
if (!name) {
3132
return undefined;
3233
}
34+
const defaultValue = getSettingDefault(name) as unknown;
35+
36+
let value;
37+
3338
if (window.api?.metaSettings) {
34-
return settingFromMeta;
39+
value = settingFromMeta;
40+
} else {
41+
value = settingFromLS;
3542
}
36-
return settingFromLS;
43+
return value ?? defaultValue;
3744
}, [name, settingFromMeta, settingFromLS]);
3845

3946
const saveValue = React.useCallback<SaveSettingValue<T>>(

0 commit comments

Comments
 (0)