A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
49 lines
1.2 KiB
import * as actions from '../actions'; |
|
import { |
|
JSONTextSettings, FormSettings, SettingSource, |
|
} from '../../shared/SettingData'; |
|
import { DefaultSetting } from '../../shared/settings/Settings'; |
|
|
|
export interface State { |
|
source: SettingSource; |
|
json?: JSONTextSettings; |
|
form?: FormSettings; |
|
error: string; |
|
} |
|
|
|
const defaultState: State = { |
|
source: SettingSource.JSON, |
|
json: JSONTextSettings.fromText(''), |
|
form: FormSettings.fromSettings(DefaultSetting), |
|
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; |
|
} |
|
}
|
|
|