Files
ABS-Client/ABS Client Mac/Audiobookshelf swift/Services/NetworkMonitor.swift
2026-05-17 08:45:37 +02:00

32 lines
804 B
Swift

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()
}
}