@@ -29,9 +29,14 @@ import com.wire.android.util.CurrentScreenManager
2929import com.wire.kalium.logic.CoreLogic
3030import com.wire.kalium.logic.data.call.Call
3131import 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
3337import com.wire.kalium.logic.data.user.UserId
3438import com.wire.kalium.logic.feature.session.CurrentSessionResult
39+ import com.wire.kalium.network.NetworkState
3540import dagger.hilt.android.lifecycle.HiltViewModel
3641import kotlinx.coroutines.delay
3742import kotlinx.coroutines.flow.Flow
@@ -40,7 +45,6 @@ import kotlinx.coroutines.flow.combine
4045import kotlinx.coroutines.flow.distinctUntilChanged
4146import kotlinx.coroutines.flow.flatMapLatest
4247import kotlinx.coroutines.flow.flowOf
43- import kotlinx.coroutines.flow.map
4448import kotlinx.coroutines.launch
4549import org.jetbrains.annotations.VisibleForTesting
4650import 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