settings migration between json and form

jh-changes
Shin'ya Ueoka 7 years ago
parent 2c46e9d448
commit 256e7372d4
  1. 2
      src/settings/components/form/blacklist-form.jsx
  2. 23
      src/settings/components/index.jsx

@ -34,7 +34,7 @@ class BlacklistForm extends Component {
let name = e.target.name; let name = e.target.name;
let index = e.target.getAttribute('data-index'); let index = e.target.getAttribute('data-index');
let next = this.props.value.slice(); let next = this.props.value ? this.props.value.slice() : [];
if (name === 'url') { if (name === 'url') {
next[index] = e.target.value; next[index] = e.target.value;

@ -6,6 +6,7 @@ import KeymapsForm from './form/keymaps-form';
import BlacklistForm from './form/blacklist-form'; import BlacklistForm from './form/blacklist-form';
import * as settingActions from 'settings/actions/setting'; import * as settingActions from 'settings/actions/setting';
import * as validator from 'shared/validators/setting'; import * as validator from 'shared/validators/setting';
import * as settingsValues from 'shared/settings/values';
class SettingsComponent extends Component { class SettingsComponent extends Component {
constructor(props, context) { constructor(props, context) {
@ -95,7 +96,7 @@ class SettingsComponent extends Component {
label='Use form' label='Use form'
checked={this.state.settings.source === 'form'} checked={this.state.settings.source === 'form'}
value='form' value='form'
onChange={this.bindValue.bind(this)} /> onChange={this.bindSource.bind(this)} />
<Input <Input
type='radio' type='radio'
@ -103,7 +104,7 @@ class SettingsComponent extends Component {
label='Use plain JSON' label='Use plain JSON'
checked={this.state.settings.source === 'json'} checked={this.state.settings.source === 'json'}
value='json' value='json'
onChange={this.bindValue.bind(this)} /> onChange={this.bindSource.bind(this)} />
{ fields } { fields }
</form> </form>
@ -143,6 +144,24 @@ class SettingsComponent extends Component {
this.setState(next); this.setState(next);
this.context.store.dispatch(settingActions.save(next.settings)); 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; export default SettingsComponent;