Fix env editor debounce so no longer lose changes

This commit is contained in:
Gregory Schier 2017-10-13 21:15:31 +02:00
parent c83c58b65a
commit b27515edb6
2 changed files with 11 additions and 7 deletions

View File

@ -36,11 +36,12 @@ class EnvironmentEditor extends PureComponent {
}
}
this.props.didChange();
// Call this last in case component unmounted
if (this.state.error !== error || this.state.warning !== warning) {
this.setState({error, warning});
}
this.props.didChange();
}
_setEditorRef (n) {
@ -80,7 +81,6 @@ class EnvironmentEditor extends PureComponent {
lineWrapping={lineWrapping}
keyMap={editorKeyMap}
onChange={this._handleChange}
debounceMillis={DEBOUNCE_MILLIS * 6}
defaultValue={JSON.stringify(environment)}
nunjucksPowerUserMode={nunjucksPowerUserMode}
render={render}

View File

@ -41,6 +41,7 @@ type State = {
class WorkspaceEnvironmentsEditModal extends React.PureComponent<Props, State> {
environmentEditorRef: EnvironmentEditor | null;
colorChangeTimeout: any;
saveTimeout: any;
modal: Modal;
constructor (props: Props) {
@ -189,13 +190,13 @@ class WorkspaceEnvironmentsEditModal extends React.PureComponent<Props, State> {
}
_didChange () {
const isValid = this.environmentEditorRef ? this.environmentEditorRef.isValid() : false;
this._saveChanges();
// Call this last in case component unmounted
const isValid = this.environmentEditorRef ? this.environmentEditorRef.isValid() : false;
if (this.state.isValid !== isValid) {
this.setState({isValid});
}
this._saveChanges();
}
_getActiveEnvironment (): Environment | null {
@ -247,7 +248,10 @@ class WorkspaceEnvironmentsEditModal extends React.PureComponent<Props, State> {
const activeEnvironment = this._getActiveEnvironment();
if (activeEnvironment) {
models.environment.update(activeEnvironment, {data});
clearTimeout(this.saveTimeout);
this.saveTimeout = setTimeout(() => {
models.environment.update(activeEnvironment, {data});
}, DEBOUNCE_MILLIS * 4);
}
}