Skip to content

Commit 885ad69

Browse files
fix: show no connection banner faster [#WPB-11568] (#3776)
Co-authored-by: sergei.bakhtiarov <sbakhtiarov@gmail.com>
1 parent 06d0b4d commit 885ad69

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

app/src/main/kotlin/com/wire/android/ui/common/topappbar/CommonTopAppBarViewModel.kt

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,14 @@ import com.wire.android.util.CurrentScreenManager
2929
import com.wire.kalium.logic.CoreLogic
3030
import com.wire.kalium.logic.data.call.Call
3131
import com.wire.kalium.logic.data.call.CallStatus
32-
import com.wire.kalium.logic.data.sync.SyncState
32+
import com.wire.kalium.logic.data.sync.SyncState.Failed
33+
import com.wire.kalium.logic.data.sync.SyncState.GatheringPendingEvents
34+
import com.wire.kalium.logic.data.sync.SyncState.Live
35+
import com.wire.kalium.logic.data.sync.SyncState.SlowSync
36+
import com.wire.kalium.logic.data.sync.SyncState.Waiting
3337
import com.wire.kalium.logic.data.user.UserId
3438
import com.wire.kalium.logic.feature.session.CurrentSessionResult
39+
import com.wire.kalium.network.NetworkState
3540
import dagger.hilt.android.lifecycle.HiltViewModel
3641
import kotlinx.coroutines.delay
3742
import kotlinx.coroutines.flow.Flow
@@ -40,7 +45,6 @@ import kotlinx.coroutines.flow.combine
4045
import kotlinx.coroutines.flow.distinctUntilChanged
4146
import kotlinx.coroutines.flow.flatMapLatest
4247
import kotlinx.coroutines.flow.flowOf
43-
import kotlinx.coroutines.flow.map
4448
import kotlinx.coroutines.launch
4549
import org.jetbrains.annotations.VisibleForTesting
4650
import javax.inject.Inject
@@ -59,12 +63,19 @@ class CommonTopAppBarViewModel @Inject constructor(
5963

6064
private fun connectivityFlow(userId: UserId): Flow<Connectivity> =
6165
coreLogic.sessionScope(userId) {
62-
observeSyncState().map {
63-
when (it) {
64-
SyncState.Waiting -> Connectivity.WaitingConnection(null, null)
65-
is SyncState.Failed -> Connectivity.WaitingConnection(it.cause, it.retryDelay)
66-
SyncState.GatheringPendingEvents, SyncState.SlowSync -> Connectivity.Connecting
67-
SyncState.Live -> Connectivity.Connected
66+
combine(observeSyncState(), coreLogic.networkStateObserver.observeNetworkState()) { syncState, networkState ->
67+
when (syncState) {
68+
is Waiting -> Connectivity.WaitingConnection(null, null)
69+
is Failed -> Connectivity.WaitingConnection(syncState.cause, syncState.retryDelay)
70+
is GatheringPendingEvents,
71+
is SlowSync -> Connectivity.Connecting
72+
73+
is Live ->
74+
if (networkState is NetworkState.ConnectedWithInternet) {
75+
Connectivity.Connected
76+
} else {
77+
Connectivity.WaitingConnection(null, null)
78+
}
6879
}
6980
}
7081
}

0 commit comments

Comments
 (0)