Merge pull request #4105 from element-hq/feature/fga/send_queue_disabled

misc(send queue) : do not disable send queue when Network is Offline
This commit is contained in:
ganfra 2025-01-09 16:14:11 +01:00 committed by GitHub
commit e69f54dc3c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 44 deletions

View file

@ -13,9 +13,9 @@ import io.element.android.features.networkmonitor.api.NetworkStatus
import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.di.SingleIn
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@ -29,18 +29,19 @@ class SendQueues @Inject constructor(
private val matrixClient: MatrixClient,
private val networkMonitor: NetworkMonitor,
) {
/**
* Launches the send queues retry mechanism in the given [coroutineScope].
* Makes sure to re-enable all send queues when the network status is [NetworkStatus.Online].
*/
@OptIn(FlowPreview::class)
fun launchIn(coroutineScope: CoroutineScope) {
networkMonitor.connectivity
.onEach { networkStatus ->
matrixClient.setAllSendQueuesEnabled(enabled = networkStatus == NetworkStatus.Online)
}
.launchIn(coroutineScope)
@OptIn(FlowPreview::class)
matrixClient.sendQueueDisabledFlow()
combine(
networkMonitor.connectivity,
matrixClient.sendQueueDisabledFlow(),
) { networkStatus, _ -> networkStatus }
.debounce(SEND_QUEUES_RETRY_DELAY_MILLIS)
.onEach { _: RoomId ->
if (networkMonitor.connectivity.value == NetworkStatus.Online) {
.onEach { networkStatus ->
if (networkStatus == NetworkStatus.Online) {
matrixClient.setAllSendQueuesEnabled(enabled = true)
}
}