fix: debounce note status updates properly

This commit is contained in:
Baptiste Grob
2020-07-29 13:12:50 +02:00
parent 90458982ce
commit 1dc28832cc

View File

@@ -511,9 +511,9 @@ class EditorViewCtrl extends PureViewCtrl<{}, EditorState> {
}, syncDebouceMs); }, syncDebouceMs);
} }
showSavingStatus() { showSavingStatus() {
this.setStatus( this.setStatus(
{ message: "Saving..." }, { message: "Saving" },
false false
); );
} }
@@ -542,27 +542,21 @@ class EditorViewCtrl extends PureViewCtrl<{}, EditorState> {
this.setStatus(error); this.setStatus(error);
} }
setStatus(status: { message: string, date?: Date }, wait = true) { setStatus(status: { message: string }, wait = true) {
let waitForMs;
if (!this.state.noteStatus || !this.state.noteStatus!.date) {
waitForMs = 0;
} else {
waitForMs = MINIMUM_STATUS_DURATION - (
new Date().getTime() - this.state.noteStatus!.date!.getTime()
);
}
if (!wait || waitForMs < 0) {
waitForMs = 0;
}
if (this.statusTimeout) { if (this.statusTimeout) {
this.$timeout.cancel(this.statusTimeout); this.$timeout.cancel(this.statusTimeout);
} }
this.statusTimeout = this.$timeout(() => { if (wait) {
status.date = new Date(); this.statusTimeout = this.$timeout(() => {
this.setState({
noteStatus: status
})
}, MINIMUM_STATUS_DURATION);
} else {
this.setState({ this.setState({
noteStatus: status noteStatus: status
}); });
}, waitForMs); }
} }
cancelPendingSetStatus() { cancelPendingSetStatus() {