From 23a6b741b8f4aabcd0ff65b1751745c0893f22a4 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Tue, 14 Dec 2021 13:40:01 +0100 Subject: [PATCH] Fixed FileWatcher triggering status update while an operation is running --- src/main/kotlin/app/git/GitManager.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/app/git/GitManager.kt b/src/main/kotlin/app/git/GitManager.kt index 548c7d4..cc5dedf 100644 --- a/src/main/kotlin/app/git/GitManager.kt +++ b/src/main/kotlin/app/git/GitManager.kt @@ -121,15 +121,16 @@ class GitManager @Inject constructor( private suspend fun watchRepositoryChanges() { val ignored = safeGit.status().call().ignoredNotInIndex.toList() - fileChangesWatcher.watchDirectoryPath( pathStr = safeGit.repository.directory.parent, ignoredDirsPath = ignored, ).collect { - safeProcessing(showError = false) { - println("Changes detected, loading status") - statusManager.loadHasUncommitedChanges(safeGit) - statusManager.loadStatus(safeGit) + if (!_processing.value) { // Only update if there isn't any process running + safeProcessing(showError = false) { + println("Changes detected, loading status") + statusManager.loadHasUncommitedChanges(safeGit) + statusManager.loadStatus(safeGit) + } } } } @@ -315,6 +316,7 @@ class GitManager @Inject constructor( var onRepositoryChanged: (path: String?) -> Unit = {} + @Synchronized private suspend fun safeProcessing(showError: Boolean = true, callback: suspend () -> Unit) { _processing.value = true try {