From eb20dd4c93cb6013e9aef1e47f817586261507d5 Mon Sep 17 00:00:00 2001 From: Vinzent Date: Wed, 31 May 2023 21:26:37 +0200 Subject: [PATCH] fix: use queue for actions in source control view close #517 --- src/ui/sourceControl/sourceControl.svelte | 76 ++++++++++++++--------- 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/src/ui/sourceControl/sourceControl.svelte b/src/ui/sourceControl/sourceControl.svelte index 0ce349d..dc57624 100644 --- a/src/ui/sourceControl/sourceControl.svelte +++ b/src/ui/sourceControl/sourceControl.svelte @@ -62,29 +62,33 @@ plugin.setState(PluginState.idle); return false; } - plugin.gitManager - .commit(commitMessage) - .then(() => { - if (commitMessage !== plugin.settings.commitMessage) { - commitMessage = ""; - } - plugin.setUpAutoBackup(); - }) - .finally(triggerRefresh); + plugin.promiseQueue.addTask(() => + plugin.gitManager + .commit(commitMessage) + .then(() => { + if (commitMessage !== plugin.settings.commitMessage) { + commitMessage = ""; + } + plugin.setUpAutoBackup(); + }) + .finally(triggerRefresh) + ); } } async function backup() { loading = true; if (status) { - plugin - .createBackup(false, false, commitMessage) - .then(() => { - if (commitMessage !== plugin.settings.commitMessage) { - commitMessage = ""; - } - }) - .finally(triggerRefresh); + plugin.promiseQueue.addTask(() => + plugin + .createBackup(false, false, commitMessage) + .then(() => { + if (commitMessage !== plugin.settings.commitMessage) { + commitMessage = ""; + } + }) + .finally(triggerRefresh) + ); } } @@ -151,36 +155,48 @@ function stageAll() { loading = true; - plugin.gitManager.stageAll({ status: status }).finally(triggerRefresh); + plugin.promiseQueue.addTask(() => + plugin.gitManager + .stageAll({ status: status }) + .finally(triggerRefresh) + ); } function unstageAll() { loading = true; - plugin.gitManager - .unstageAll({ status: status }) - .finally(triggerRefresh); + plugin.promiseQueue.addTask(() => + plugin.gitManager + .unstageAll({ status: status }) + .finally(triggerRefresh) + ); } function push() { loading = true; - plugin.push().finally(triggerRefresh); + plugin.promiseQueue.addTask(() => + plugin.push().finally(triggerRefresh) + ); } function pull() { loading = true; - plugin.pullChangesFromRemote().finally(triggerRefresh); + plugin.promiseQueue.addTask(() => + plugin.pullChangesFromRemote().finally(triggerRefresh) + ); } function discard() { new DiscardModal(view.app, false, plugin.gitManager.getVaultPath("/")) .myOpen() .then((shouldDiscard) => { if (shouldDiscard === true) { - plugin.gitManager - .discardAll({ - status: plugin.cachedStatus, - }) - .finally(() => { - dispatchEvent(new CustomEvent("git-refresh")); - }); + plugin.promiseQueue.addTask(() => + plugin.gitManager + .discardAll({ + status: plugin.cachedStatus, + }) + .finally(() => { + dispatchEvent(new CustomEvent("git-refresh")); + }) + ); } }); }