Skip to content

Commit c8f4268

Browse files
committed
Create extension SyncService.isOnline()
1 parent 3ffafdd commit c8f4268

File tree

8 files changed

+18
-60
lines changed

8 files changed

+18
-60
lines changed

appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import io.element.android.libraries.matrix.api.encryption.RecoveryState
2828
import io.element.android.libraries.matrix.api.roomlist.RoomListService
2929
import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion
3030
import io.element.android.libraries.matrix.api.sync.SyncService
31-
import io.element.android.libraries.matrix.api.sync.isConnected
31+
import io.element.android.libraries.matrix.api.sync.isOnline
3232
import io.element.android.libraries.matrix.api.verification.SessionVerificationService
3333
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
3434
import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyncUseCase
@@ -76,10 +76,10 @@ class LoggedInPresenter @Inject constructor(
7676
.launchIn(this)
7777
}
7878
val syncIndicator by matrixClient.roomListService.syncIndicator.collectAsState()
79-
val syncState by syncService.syncState.collectAsState()
79+
val isOnline by syncService.isOnline().collectAsState()
8080
val showSyncSpinner by remember {
8181
derivedStateOf {
82-
syncState.isConnected() && syncIndicator == RoomListService.SyncIndicator.Show
82+
isOnline && syncIndicator == RoomListService.SyncIndicator.Show
8383
}
8484
}
8585
var forceNativeSlidingSyncMigration by remember { mutableStateOf(false) }

appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ import io.element.android.libraries.matrix.api.room.CurrentUserMembership
4949
import io.element.android.libraries.matrix.api.room.RoomMembershipObserver
5050
import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias
5151
import io.element.android.libraries.matrix.api.sync.SyncService
52-
import io.element.android.libraries.matrix.api.sync.isConnected
52+
import io.element.android.libraries.matrix.api.sync.isOnline
5353
import kotlinx.coroutines.flow.combine
5454
import kotlinx.coroutines.flow.distinctUntilChanged
5555
import kotlinx.coroutines.flow.first
@@ -211,10 +211,10 @@ class RoomFlowNode @AssistedInject constructor(
211211
}
212212

213213
private fun loadingNode(buildContext: BuildContext) = node(buildContext) { modifier ->
214-
val syncState by syncService.syncState.collectAsState()
214+
val isOnline by syncService.isOnline().collectAsState()
215215
LoadingRoomNodeView(
216216
state = LoadingRoomState.Loading,
217-
hasNetworkConnection = syncState.isConnected(),
217+
hasNetworkConnection = isOnline,
218218
onBackClick = { navigateUp() },
219219
modifier = modifier,
220220
)

appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import io.element.android.libraries.architecture.inputs
3636
import io.element.android.libraries.di.SessionScope
3737
import io.element.android.libraries.matrix.api.core.RoomId
3838
import io.element.android.libraries.matrix.api.sync.SyncService
39-
import io.element.android.libraries.matrix.api.sync.isConnected
39+
import io.element.android.libraries.matrix.api.sync.isOnline
4040
import kotlinx.coroutines.flow.distinctUntilChanged
4141
import kotlinx.coroutines.flow.launchIn
4242
import kotlinx.coroutines.flow.map
@@ -114,10 +114,10 @@ class JoinedRoomFlowNode @AssistedInject constructor(
114114

115115
private fun loadingNode(buildContext: BuildContext, onBackClick: () -> Unit) = node(buildContext) { modifier ->
116116
val loadingRoomState by loadingRoomStateStateFlow.collectAsState()
117-
val syncState by syncService.syncState.collectAsState()
117+
val isOnline by syncService.isOnline().collectAsState()
118118
LoadingRoomNodeView(
119119
state = loadingRoomState,
120-
hasNetworkConnection = syncState.isConnected(),
120+
hasNetworkConnection = isOnline,
121121
modifier = modifier,
122122
onBackClick = onBackClick
123123
)

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ import io.element.android.libraries.matrix.api.room.powerlevels.canRedactOther
7171
import io.element.android.libraries.matrix.api.room.powerlevels.canRedactOwn
7272
import io.element.android.libraries.matrix.api.room.powerlevels.canSendMessage
7373
import io.element.android.libraries.matrix.api.sync.SyncService
74-
import io.element.android.libraries.matrix.api.sync.isConnected
74+
import io.element.android.libraries.matrix.api.sync.isOnline
7575
import io.element.android.libraries.matrix.api.timeline.item.event.EventOrTransactionId
7676
import io.element.android.libraries.matrix.ui.messages.reply.map
7777
import io.element.android.libraries.matrix.ui.model.getAvatarData
@@ -170,7 +170,7 @@ class MessagesPresenter @AssistedInject constructor(
170170
showReinvitePrompt = !hasDismissedInviteDialog && composerState.textEditorState.hasFocus() && room.isDm && room.activeMemberCount == 1L
171171
}
172172
}
173-
val syncState by syncService.syncState.collectAsState()
173+
val isOnline by syncService.isOnline().collectAsState()
174174

175175
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
176176

@@ -220,7 +220,7 @@ class MessagesPresenter @AssistedInject constructor(
220220
customReactionState = customReactionState,
221221
reactionSummaryState = reactionSummaryState,
222222
readReceiptBottomSheetState = readReceiptBottomSheetState,
223-
hasNetworkConnection = syncState.isConnected(),
223+
hasNetworkConnection = isOnline,
224224
snackbarMessage = snackbarMessage,
225225
showReinvitePrompt = showReinvitePrompt,
226226
inviteProgress = inviteProgress.value,

features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ import io.element.android.libraries.matrix.api.encryption.RecoveryState
5050
import io.element.android.libraries.matrix.api.roomlist.RoomList
5151
import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion
5252
import io.element.android.libraries.matrix.api.sync.SyncService
53-
import io.element.android.libraries.matrix.api.sync.isConnected
53+
import io.element.android.libraries.matrix.api.sync.isOnline
5454
import io.element.android.libraries.matrix.api.timeline.ReceiptType
5555
import io.element.android.libraries.preferences.api.store.SessionPreferencesStore
5656
import io.element.android.libraries.push.api.notifications.NotificationCleaner
@@ -98,7 +98,7 @@ class RoomListPresenter @Inject constructor(
9898
val coroutineScope = rememberCoroutineScope()
9999
val leaveRoomState = leaveRoomPresenter.present()
100100
val matrixUser = client.userProfile.collectAsState()
101-
val syncState by syncService.syncState.collectAsState()
101+
val isOnline by syncService.isOnline().collectAsState()
102102
val filtersState = filtersPresenter.present()
103103
val searchState = searchPresenter.present()
104104
val acceptDeclineInviteState = acceptDeclineInvitePresenter.present()
@@ -158,7 +158,7 @@ class RoomListPresenter @Inject constructor(
158158
matrixUser = matrixUser.value,
159159
showAvatarIndicator = showAvatarIndicator,
160160
snackbarMessage = snackbarMessage,
161-
hasNetworkConnection = syncState.isConnected(),
161+
hasNetworkConnection = isOnline,
162162
contextMenu = contextMenu.value,
163163
leaveRoomState = leaveRoomState,
164164
filtersState = filtersState,

libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/sync/SyncService.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package io.element.android.libraries.matrix.api.sync
99

10+
import io.element.android.libraries.core.coroutine.mapState
1011
import kotlinx.coroutines.flow.StateFlow
1112

1213
interface SyncService {
@@ -25,3 +26,5 @@ interface SyncService {
2526
*/
2627
val syncState: StateFlow<SyncState>
2728
}
29+
30+
fun SyncService.isOnline(): StateFlow<Boolean> = syncState.mapState { it != SyncState.Offline }

libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/sync/SyncState.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,3 @@ enum class SyncState {
1414
Terminated,
1515
Offline,
1616
}
17-
18-
fun SyncState.isConnected() = when (this) {
19-
SyncState.Idle,
20-
SyncState.Running,
21-
SyncState.Error,
22-
SyncState.Terminated -> true
23-
SyncState.Offline -> false
24-
}

libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/sync/SyncStateTest.kt

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)