Fixed flows being cancelled if component refresh failed

This commit is contained in:
Abdelilah El Aissaoui 2022-10-17 10:32:44 +02:00
parent f293e9428c
commit 40e9b042e5
10 changed files with 22 additions and 13 deletions

View File

@ -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 {

View File

@ -42,7 +42,7 @@ class BranchesViewModel @Inject constructor(
init {
tabScope.launch {
tabState.refreshFlowFiltered(RefreshType.ALL_DATA)
.collect {
{
refresh(tabState.git)
}
}

View File

@ -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)

View File

@ -115,7 +115,7 @@ class LogViewModel @Inject constructor(
RefreshType.ALL_DATA,
RefreshType.ONLY_LOG,
RefreshType.UNCOMMITED_CHANGES_AND_LOG,
).collect {
) {
refresh(tabState.git)
}
}

View File

@ -37,7 +37,7 @@ class RemotesViewModel @Inject constructor(
init {
tabScope.launch {
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.REMOTES)
.collect {
{
refresh(tabState.git)
}
}

View File

@ -32,7 +32,7 @@ class StashesViewModel @Inject constructor(
init {
tabScope.launch {
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.STASHES)
.collect {
{
refresh(tabState.git)
}
}

View File

@ -69,7 +69,7 @@ class StatusViewModel @Inject constructor(
RefreshType.ALL_DATA,
RefreshType.UNCOMMITED_CHANGES,
RefreshType.UNCOMMITED_CHANGES_AND_LOG,
).collect {
) {
refresh(tabState.git)
}
}

View File

@ -27,7 +27,7 @@ class SubmodulesViewModel @Inject constructor(
init {
tabScope.launch {
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.SUBMODULES)
.collect {
{
refresh(tabState.git)
}
}

View File

@ -128,7 +128,7 @@ class TabViewModel @Inject constructor(
launch {
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.REPO_STATE)
.collect {
{
loadRepositoryState(tabState.git)
}
}

View File

@ -29,7 +29,7 @@ class TagsViewModel @Inject constructor(
init {
tabScope.launch {
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.STASHES)
.collect {
{
refresh(tabState.git)
}
}