cancel migrate on failure

jh-changes
Shin'ya Ueoka 7 years ago
parent e1060f9bb2
commit a69f33f569
  1. 56
      src/settings/components/index.jsx

@ -148,15 +148,54 @@ class SettingsComponent extends Component {
bindValue(e) { bindValue(e) {
let next = Object.assign({}, this.state); let next = Object.assign({}, this.state);
let error = false;
next.errors.json = ''; next.errors.json = '';
try { try {
this.validate(e.target); this.validate(e.target);
} catch (err) { } catch (err) {
next.errors.json = err.message; next.errors.json = err.message;
error = true;
} }
next.settings[e.target.name] = e.target.value; next.settings[e.target.name] = e.target.value;
this.setState(this.state);
if (!error) {
this.context.store.dispatch(settingActions.save(next.settings));
}
}
migrateToForm() {
let b = window.confirm(DO_YOU_WANT_TO_CONTINUE);
if (!b) {
this.setState(this.state);
return;
}
try {
validator.validate(JSON.parse(this.state.settings.json));
} catch (err) {
this.setState(this.state);
return;
}
let form = settingsValues.formFromJson(
this.state.settings.json, KeymapsForm.AllowdOps);
let next = Object.assign({}, this.state);
next.settings.form = form;
next.settings.source = 'form';
next.errors.json = '';
this.setState(next);
this.context.store.dispatch(settingActions.save(next.settings));
}
migrateToJson() {
let json = settingsValues.jsonFromForm(this.state.settings.form);
let next = Object.assign({}, this.state);
next.settings.json = json;
next.settings.source = 'json';
next.errors.json = '';
this.setState(next); this.setState(next);
this.context.store.dispatch(settingActions.save(next.settings)); this.context.store.dispatch(settingActions.save(next.settings));
} }
@ -165,24 +204,11 @@ class SettingsComponent extends Component {
let from = this.state.settings.source; let from = this.state.settings.source;
let to = e.target.value; let to = e.target.value;
let next = Object.assign({}, this.state);
if (from === 'form' && to === 'json') { if (from === 'form' && to === 'json') {
next.settings.json = this.migrateToJson();
settingsValues.jsonFromForm(this.state.settings.form);
} else if (from === 'json' && to === 'form') { } else if (from === 'json' && to === 'form') {
let b = window.confirm(DO_YOU_WANT_TO_CONTINUE); this.migrateToForm();
if (!b) {
this.setState(this.state);
return;
}
next.settings.form =
settingsValues.formFromJson(
this.state.settings.json, KeymapsForm.AllowdOps);
} }
next.settings.source = to;
this.setState(next);
this.context.store.dispatch(settingActions.save(next.settings));
} }
} }