-
-
Notifications
You must be signed in to change notification settings - Fork 310
/
settings.reducer.ts
28 lines (25 loc) · 1001 Bytes
/
settings.reducer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import * as settings from './settings.action';
import { jsonc } from '../../utils';
import { SettingsLanguage, SettingsState } from 'altair-graphql-core/build/types/state/settings.interfaces';
import { getAltairConfig } from 'altair-graphql-core/build/config';
export const getInitialState = (): SettingsState => {
const altairConfig = getAltairConfig();
const initialSettings = altairConfig.initialData.settings || {};
return {
theme: altairConfig.defaultTheme,
language: <SettingsLanguage>altairConfig.default_language,
addQueryDepthLimit: altairConfig.add_query_depth_limit,
tabSize: altairConfig.tab_size,
"editor.shortcuts": {},
...initialSettings,
};
};
export function settingsReducer(state = getInitialState(), action: settings.Action): SettingsState {
switch (action.type) {
case settings.SET_SETTINGS_JSON:
const newState = { ...getInitialState(), ...jsonc(action.payload.value) };
return newState;
default:
return state;
}
}