Fixed flows being cancelled if component refresh failed
This commit is contained in:
parent
f293e9428c
commit
40e9b042e5
@ -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 {
|
||||
|
@ -42,7 +42,7 @@ class BranchesViewModel @Inject constructor(
|
||||
init {
|
||||
tabScope.launch {
|
||||
tabState.refreshFlowFiltered(RefreshType.ALL_DATA)
|
||||
.collect {
|
||||
{
|
||||
refresh(tabState.git)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -115,7 +115,7 @@ class LogViewModel @Inject constructor(
|
||||
RefreshType.ALL_DATA,
|
||||
RefreshType.ONLY_LOG,
|
||||
RefreshType.UNCOMMITED_CHANGES_AND_LOG,
|
||||
).collect {
|
||||
) {
|
||||
refresh(tabState.git)
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ class RemotesViewModel @Inject constructor(
|
||||
init {
|
||||
tabScope.launch {
|
||||
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.REMOTES)
|
||||
.collect {
|
||||
{
|
||||
refresh(tabState.git)
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ class StashesViewModel @Inject constructor(
|
||||
init {
|
||||
tabScope.launch {
|
||||
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.STASHES)
|
||||
.collect {
|
||||
{
|
||||
refresh(tabState.git)
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ class StatusViewModel @Inject constructor(
|
||||
RefreshType.ALL_DATA,
|
||||
RefreshType.UNCOMMITED_CHANGES,
|
||||
RefreshType.UNCOMMITED_CHANGES_AND_LOG,
|
||||
).collect {
|
||||
) {
|
||||
refresh(tabState.git)
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ class SubmodulesViewModel @Inject constructor(
|
||||
init {
|
||||
tabScope.launch {
|
||||
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.SUBMODULES)
|
||||
.collect {
|
||||
{
|
||||
refresh(tabState.git)
|
||||
}
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ class TabViewModel @Inject constructor(
|
||||
|
||||
launch {
|
||||
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.REPO_STATE)
|
||||
.collect {
|
||||
{
|
||||
loadRepositoryState(tabState.git)
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ class TagsViewModel @Inject constructor(
|
||||
init {
|
||||
tabScope.launch {
|
||||
tabState.refreshFlowFiltered(RefreshType.ALL_DATA, RefreshType.STASHES)
|
||||
.collect {
|
||||
{
|
||||
refresh(tabState.git)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user