diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/git/TabState.kt b/src/main/kotlin/com/jetpackduba/gitnuro/git/TabState.kt index 64438b0..d0923f5 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/git/TabState.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/git/TabState.kt @@ -174,10 +174,19 @@ class TabState @Inject constructor( } @OptIn(ExperimentalCoroutinesApi::class) - fun refreshFlowFiltered(vararg filters: RefreshType) = refreshData - .filter { refreshType -> - filters.contains(refreshType) - } + suspend fun refreshFlowFiltered(vararg filters: RefreshType, callback: suspend (RefreshType) -> Unit) { + refreshData + .filter { refreshType -> + filters.contains(refreshType) + }.collect { + try { + callback(it) + } catch (ex: Exception) { + ex.printStackTrace() + errorsManager.addError(newErrorNow(ex, ex.localizedMessage)) + } + } + } } enum class RefreshType { diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/BranchesViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/BranchesViewModel.kt index 7e187f9..b3126a6 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/BranchesViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/BranchesViewModel.kt @@ -42,7 +42,7 @@ class BranchesViewModel @Inject constructor( init { tabScope.launch { tabState.refreshFlowFiltered(RefreshType.ALL_DATA) - .collect { + { refresh(tabState.git) } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/DiffViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/DiffViewModel.kt index 1528a2c..b594d28 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/DiffViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/DiffViewModel.kt @@ -59,7 +59,7 @@ class DiffViewModel @Inject constructor( tabState.refreshFlowFiltered( RefreshType.UNCOMMITED_CHANGES, RefreshType.UNCOMMITED_CHANGES_AND_LOG, - ).collect { + ) { val diffResultValue = diffResult.value if (diffResultValue is ViewDiffResult.Loaded) { updateDiff(diffResultValue.diffEntryType) diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/LogViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/LogViewModel.kt index efb2341..b6a0c4d 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/LogViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/LogViewModel.kt @@ -115,7 +115,7 @@ class LogViewModel @Inject constructor( RefreshType.ALL_DATA, RefreshType.ONLY_LOG, RefreshType.UNCOMMITED_CHANGES_AND_LOG, - ).collect { + ) { refresh(tabState.git) } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/RemotesViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/RemotesViewModel.kt index 0b1afcf..f8ba39e 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/RemotesViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/RemotesViewModel.kt @@ -37,7 +37,7 @@ class RemotesViewModel @Inject constructor( init { tabScope.launch { tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.REMOTES) - .collect { + { refresh(tabState.git) } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StashesViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StashesViewModel.kt index 2ea7470..15b2bbf 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StashesViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StashesViewModel.kt @@ -32,7 +32,7 @@ class StashesViewModel @Inject constructor( init { tabScope.launch { tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.STASHES) - .collect { + { refresh(tabState.git) } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StatusViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StatusViewModel.kt index 57979d3..0082797 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StatusViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/StatusViewModel.kt @@ -69,7 +69,7 @@ class StatusViewModel @Inject constructor( RefreshType.ALL_DATA, RefreshType.UNCOMMITED_CHANGES, RefreshType.UNCOMMITED_CHANGES_AND_LOG, - ).collect { + ) { refresh(tabState.git) } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SubmodulesViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SubmodulesViewModel.kt index b0486e9..71df425 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SubmodulesViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SubmodulesViewModel.kt @@ -27,7 +27,7 @@ class SubmodulesViewModel @Inject constructor( init { tabScope.launch { tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.SUBMODULES) - .collect { + { refresh(tabState.git) } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt index 3c7c97c..cc92e35 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TabViewModel.kt @@ -128,7 +128,7 @@ class TabViewModel @Inject constructor( launch { tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.REPO_STATE) - .collect { + { loadRepositoryState(tabState.git) } } diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TagsViewModel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TagsViewModel.kt index 9aed816..9f7c072 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TagsViewModel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/TagsViewModel.kt @@ -29,7 +29,7 @@ class TagsViewModel @Inject constructor( init { tabScope.launch { tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.STASHES) - .collect { + { refresh(tabState.git) } }