diff options
Diffstat (limited to 'src/settings/components/index.jsx')
-rw-r--r-- | src/settings/components/index.jsx | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/settings/components/index.jsx b/src/settings/components/index.jsx index fb25df6..ae7cd31 100644 --- a/src/settings/components/index.jsx +++ b/src/settings/components/index.jsx @@ -6,6 +6,7 @@ import KeymapsForm from './form/keymaps-form'; import BlacklistForm from './form/blacklist-form'; import * as settingActions from 'settings/actions/setting'; import * as validator from 'shared/validators/setting'; +import * as settingsValues from 'shared/settings/values'; class SettingsComponent extends Component { constructor(props, context) { @@ -95,7 +96,7 @@ class SettingsComponent extends Component { label='Use form' checked={this.state.settings.source === 'form'} value='form' - onChange={this.bindValue.bind(this)} /> + onChange={this.bindSource.bind(this)} /> <Input type='radio' @@ -103,7 +104,7 @@ class SettingsComponent extends Component { label='Use plain JSON' checked={this.state.settings.source === 'json'} value='json' - onChange={this.bindValue.bind(this)} /> + onChange={this.bindSource.bind(this)} /> { fields } </form> @@ -143,6 +144,24 @@ class SettingsComponent extends Component { this.setState(next); this.context.store.dispatch(settingActions.save(next.settings)); } + + bindSource(e) { + let from = this.state.settings.source; + let to = e.target.value; + + let next = Object.assign({}, this.state); + if (from === 'form' && to === 'json') { + next.settings.json = + settingsValues.jsonFromForm(this.state.settings.form); + } else if (from === 'json' && to === 'form') { + next.settings.form = + settingsValues.formFromJson(this.state.settings.json); + } + next.settings.source = to; + + this.setState(next); + this.context.store.dispatch(settingActions.save(next.settings)); + } } export default SettingsComponent; |