From e5334d456ddadc2e040fcc73f7179f8fedaee8b6 Mon Sep 17 00:00:00 2001 From: Ilyas Hallak Date: Sun, 19 Oct 2025 10:47:19 +0200 Subject: [PATCH] refactor: Remove NWPathMonitor auto-sync, keep only on-demand server checks - Delete NetworkConnectivity.swift with problematic NWPathMonitor - Remove serverDidBecomeAvailable notification - Remove unused startAutoSync from OfflineSyncManager - Server check now only on app start via AppViewModel --- .../Data/Repository/OfflineSyncManager.swift | 18 ------- readeck/Data/Utils/NetworkConnectivity.swift | 50 ------------------- readeck/UI/Utils/NotificationNames.swift | 5 +- 3 files changed, 1 insertion(+), 72 deletions(-) delete mode 100644 readeck/Data/Utils/NetworkConnectivity.swift diff --git a/readeck/Data/Repository/OfflineSyncManager.swift b/readeck/Data/Repository/OfflineSyncManager.swift index 609c4db..3216677 100644 --- a/readeck/Data/Repository/OfflineSyncManager.swift +++ b/readeck/Data/Repository/OfflineSyncManager.swift @@ -124,22 +124,4 @@ class OfflineSyncManager: ObservableObject, @unchecked Sendable { } } - // MARK: - Auto Sync on Server Connectivity Changes - - func startAutoSync() { - // Monitor server connectivity and auto-sync when server becomes reachable - NotificationCenter.default.addObserver( - forName: .serverDidBecomeAvailable, - object: nil, - queue: .main - ) { [weak self] _ in - Task { - await self?.syncOfflineBookmarks() - } - } - } - - deinit { - NotificationCenter.default.removeObserver(self) - } } diff --git a/readeck/Data/Utils/NetworkConnectivity.swift b/readeck/Data/Utils/NetworkConnectivity.swift deleted file mode 100644 index ef8e882..0000000 --- a/readeck/Data/Utils/NetworkConnectivity.swift +++ /dev/null @@ -1,50 +0,0 @@ -import Foundation -import Network - -class ServerConnectivity: ObservableObject { - private let monitor = NWPathMonitor() - private let queue = DispatchQueue.global(qos: .background) - - @Published var isServerReachable = false - - static let shared = ServerConnectivity() - - private init() { - startMonitoring() - } - - private func startMonitoring() { - monitor.pathUpdateHandler = { [weak self] path in - if path.status == .satisfied { - // Network is available, now check server - Task { - let serverReachable = await ServerConnectivity.isServerReachable() - DispatchQueue.main.async { - let wasReachable = self?.isServerReachable ?? false - self?.isServerReachable = serverReachable - - // Notify when server becomes available - if !wasReachable && serverReachable { - NotificationCenter.default.post(name: .serverDidBecomeAvailable, object: nil) - } - } - } - } else { - DispatchQueue.main.async { - self?.isServerReachable = false - } - } - } - monitor.start(queue: queue) - } - - deinit { - monitor.cancel() - } - - // Check if the Readeck server endpoint is reachable - static func isServerReachable() async -> Bool { - let useCase = DefaultUseCaseFactory.shared.makeCheckServerReachabilityUseCase() - return await useCase.execute() - } -} diff --git a/readeck/UI/Utils/NotificationNames.swift b/readeck/UI/Utils/NotificationNames.swift index b1f692e..d3f7716 100644 --- a/readeck/UI/Utils/NotificationNames.swift +++ b/readeck/UI/Utils/NotificationNames.swift @@ -7,10 +7,7 @@ extension Notification.Name { // MARK: - Authentication static let unauthorizedAPIResponse = Notification.Name("UnauthorizedAPIResponse") - - // MARK: - Network - static let serverDidBecomeAvailable = Notification.Name("ServerDidBecomeAvailable") - + // MARK: - UI Interactions static let dismissKeyboard = Notification.Name("DismissKeyboard") static let addBookmarkFromShare = Notification.Name("AddBookmarkFromShare")