From ffe9794f2875990c582bb6ea5381f54bded5409f Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 30 Sep 2025 09:42:49 +0200 Subject: [PATCH] Fixes issue with failing syncs --- LeStorage/StoreCenter.swift | 52 +++++++++++++------------------- LeStorage/WebSocketManager.swift | 7 +---- 2 files changed, 22 insertions(+), 37 deletions(-) diff --git a/LeStorage/StoreCenter.swift b/LeStorage/StoreCenter.swift index ed795aa..9b55a3f 100644 --- a/LeStorage/StoreCenter.swift +++ b/LeStorage/StoreCenter.swift @@ -177,11 +177,7 @@ public class StoreCenter { @objc fileprivate func _launchSynchronization() { Task { - do { - try await self.synchronizeLastUpdates() - } catch { - Logger.error(error) - } + await self.synchronizeLastUpdates() } } @@ -579,40 +575,38 @@ public class StoreCenter { } /// Basically asks the server for new content - public func synchronizeLastUpdates() async throws { + @discardableResult public func synchronizeLastUpdates() async -> Error? { + Logger.log("synchronizeLastUpdates: self.synchronizesData: \(self.synchronizesData) / self.isAuthenticated = \(self.isAuthenticated) / self.useSynchronization = \(self.useSynchronization)") guard self.isAuthenticated, self.useSynchronization else { - return + return nil } guard !self.synchronizesData else { -// Logger.log("*** blocked sync") self.wantsToSynchronize = true - return + return nil } + Logger.log("synchronizeLastUpdates started...") self.synchronizesData = true self.wantsToSynchronize = false let lastSync = self._settingsStorage.item.lastSynchronization - let syncGetCollection: ApiCallCollection = try self.apiCallCollection() - if await syncGetCollection.hasPendingCalls() == false { - Logger.log("*** START sync: \(lastSync)") - let getSyncData = GetSyncData() - getSyncData.date = lastSync - try await syncGetCollection.sendGetRequest(instance: getSyncData) + do { + let syncGetCollection: ApiCallCollection = try self.apiCallCollection() + if await syncGetCollection.hasPendingCalls() == false { + Logger.log("*** START sync: \(lastSync)") + let getSyncData = GetSyncData() + getSyncData.date = lastSync + try await syncGetCollection.sendGetRequest(instance: getSyncData) + } + } catch { + self.synchronizesData = false + Logger.error(error) + return error } - -// if await syncGetCollection.hasPendingCalls() { -// await syncGetCollection.rescheduleImmediately() -// Logger.log("=> reschedule") -// } else { -// Logger.log("=> send GET") -// let getSyncData = GetSyncData() -// getSyncData.date = lastSync -// try await syncGetCollection.sendGetRequest(instance: getSyncData) -// } - + self.synchronizesData = false + return nil } @discardableResult func testSynchronizeOnceAsync() async throws -> Data { @@ -683,11 +677,7 @@ public class StoreCenter { self.synchronizesData = false if self.wantsToSynchronize { - do { - try await self.synchronizeLastUpdates() - } catch { - Logger.error(error) - } + await self.synchronizeLastUpdates() } // Logger.log(">>> SYNC ENDED") diff --git a/LeStorage/WebSocketManager.swift b/LeStorage/WebSocketManager.swift index da8a681..b64b643 100644 --- a/LeStorage/WebSocketManager.swift +++ b/LeStorage/WebSocketManager.swift @@ -71,12 +71,7 @@ class WebSocketManager: ObservableObject { } Task { - do { -// Logger.log("Websocket notif, sync...") - try await self.storeCenter.synchronizeLastUpdates() - } catch { - Logger.error(error) - } + await self.storeCenter.synchronizeLastUpdates() } case .data(let data):