Restructure project folders
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import Foundation
|
||||
import Network
|
||||
import Observation
|
||||
|
||||
@Observable
|
||||
@MainActor
|
||||
final class NetworkMonitor {
|
||||
var isOnline: Bool = true
|
||||
|
||||
private let monitor = NWPathMonitor()
|
||||
private let queue = DispatchQueue(label: "NetworkMonitor")
|
||||
|
||||
func start(onChange: @escaping @MainActor (Bool) -> Void) {
|
||||
monitor.pathUpdateHandler = { [weak self] path in
|
||||
let online = path.status == .satisfied
|
||||
Task { @MainActor [weak self] in
|
||||
guard let self else { return }
|
||||
let previous = self.isOnline
|
||||
self.isOnline = online
|
||||
if previous != online {
|
||||
onChange(online)
|
||||
}
|
||||
}
|
||||
}
|
||||
monitor.start(queue: queue)
|
||||
}
|
||||
|
||||
func stop() {
|
||||
monitor.cancel()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user