diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-09-17 21:56:55 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2023-09-17 23:51:33 -0600 |
commit | edbd2c7713a0ba4e7e7a3ba6d59d16861ea4eb23 (patch) | |
tree | 885ca095c993c7a661303d215d9be0a6271ba3ea /shared/src/iosMain/kotlin/mx/trackermap/TrackerMap | |
parent | 7aec305729b872d668df45eae4821b106c1a20cb (diff) | |
download | etbsa-trackermap-mobile-edbd2c7713a0ba4e7e7a3ba6d59d16861ea4eb23.tar.gz etbsa-trackermap-mobile-edbd2c7713a0ba4e7e7a3ba6d59d16861ea4eb23.tar.bz2 etbsa-trackermap-mobile-edbd2c7713a0ba4e7e7a3ba6d59d16861ea4eb23.zip |
- [shared] Implement network state monitoring
- [android] UI reacts to network state
- [ios] UI reacts to network state
Diffstat (limited to 'shared/src/iosMain/kotlin/mx/trackermap/TrackerMap')
-rw-r--r-- | shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/controllers/NetworkController.kt | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/controllers/NetworkController.kt b/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/controllers/NetworkController.kt new file mode 100644 index 0000000..d112c11 --- /dev/null +++ b/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/controllers/NetworkController.kt @@ -0,0 +1,25 @@ +package mx.trackermap.TrackerMap.controllers + +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import mx.trackermap.TrackerMap.Injectable +import platform.Network.* +import platform.darwin.* + +actual class NetworkController: Injectable { + private val monitor = nw_path_monitor_create() + private val queue: dispatch_queue_t = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND.toLong(), 0u) + private val _networkAvailable = MutableStateFlow<Boolean?>(null) + actual val networkAvailable = _networkAvailable.asStateFlow() + + private val updateHandler: nw_path_monitor_update_handler_t = { path: nw_path_t -> + val status = nw_path_get_status(path) + _networkAvailable.value = status in arrayOf(nw_path_status_satisfied, nw_path_status_satisfiable) + } + + init { + nw_path_monitor_set_update_handler(monitor, updateHandler) + nw_path_monitor_set_queue(monitor, queue) + nw_path_monitor_start(monitor) + } +}
\ No newline at end of file |