Create SyncOrchestrator (#4176)
* Create `SyncOrchestrator` to centralise the sync start/stop flow through the whole app: the decision is based on several inputs: sync state, network available, app in foreground, app in call, app needing to sync an event for a notification. * Make network monitor return network connectivity status, not internet connectivity * Don't stop the `SyncService` when network connection is lost, let it fail instead. This prevents an issue when using the offline mode of the SDK, which made the wrong UI states to be shown when the `SyncState` is `Idle` (that is, after the service being manually stopped). * Rename `NetworkStatus.Online/Offline` to `Connected/Disconnected` so they're not easily mistaken with internet connectivity instead
This commit is contained in:
parent
ce1c01e626
commit
3c87fb05b2
44 changed files with 851 additions and 344 deletions
|
|
@ -9,6 +9,14 @@ package io.element.android.features.networkmonitor.api
|
|||
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
||||
/**
|
||||
* Monitors the network status of the device, providing the current network connectivity status as a flow.
|
||||
*
|
||||
* **Note:** network connectivity does not imply internet connectivity. The device can be connected to a network that can't reach the homeserver.
|
||||
*/
|
||||
interface NetworkMonitor {
|
||||
/**
|
||||
* A flow containing the current network connectivity status.
|
||||
*/
|
||||
val connectivity: StateFlow<NetworkStatus>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,19 @@
|
|||
|
||||
package io.element.android.features.networkmonitor.api
|
||||
|
||||
/**
|
||||
* Network connectivity status of the device.
|
||||
*
|
||||
* **Note:** this is *network* connectivity status, not *internet* connectivity status.
|
||||
*/
|
||||
enum class NetworkStatus {
|
||||
Online,
|
||||
Offline
|
||||
/**
|
||||
* The device is connected to a network.
|
||||
*/
|
||||
Connected,
|
||||
|
||||
/**
|
||||
* The device is not connected to any networks.
|
||||
*/
|
||||
Disconnected
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue