47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
import * as actions from '../actions';
|
|
import {
|
|
JSONTextSettings, FormSettings, SettingSource,
|
|
} from '../../shared/SettingData';
|
|
|
|
export interface State {
|
|
source: SettingSource;
|
|
json?: JSONTextSettings;
|
|
form?: FormSettings;
|
|
error: string;
|
|
}
|
|
|
|
const defaultState: State = {
|
|
source: SettingSource.JSON,
|
|
json: JSONTextSettings.fromText(''),
|
|
error: '',
|
|
};
|
|
|
|
export default function reducer(
|
|
state = defaultState,
|
|
action: actions.SettingAction,
|
|
): State {
|
|
switch (action.type) {
|
|
case actions.SETTING_SET_SETTINGS:
|
|
return { ...state,
|
|
source: action.source,
|
|
json: action.json,
|
|
form: action.form,
|
|
error: '', };
|
|
case actions.SETTING_SHOW_ERROR:
|
|
return { ...state,
|
|
error: action.error,
|
|
json: action.json, };
|
|
case actions.SETTING_SWITCH_TO_FORM:
|
|
return { ...state,
|
|
error: '',
|
|
source: SettingSource.Form,
|
|
form: action.form, };
|
|
case actions.SETTING_SWITCH_TO_JSON:
|
|
return { ...state,
|
|
error: '',
|
|
source: SettingSource.JSON,
|
|
json: action.json, };
|
|
default:
|
|
return state;
|
|
}
|
|
}
|