Fix issues with failing file loading

upgrade
Laurent 2 weeks ago
parent ffda88145f
commit 4afdfb0334
  1. 19
      LeStorage/StoreCenter.swift
  2. 13
      LeStorage/StoredCollection.swift

@ -44,7 +44,7 @@ public class StoreCenter {
fileprivate var _apiCallCollections: [String: any SomeCallCollection] = [:]
/// A collection of DataLog objects, used for the synchronization
lazy fileprivate var _deleteLogs: StoredCollection<DataLog> = { self.mainStore.registerCollection() }()
fileprivate var _deleteLogs: StoredCollection<DataLog>? = nil
/// A synchronized collection of DataAccess
fileprivate(set) var dataAccessCollection: SyncedCollection<DataAccess>? = nil
@ -104,6 +104,7 @@ public class StoreCenter {
if self.useSynchronization {
self.dataAccessCollection = self.mainStore.registerSynchronizedCollection()
}
Logger.log("Sync URL: \(urlManager.api)")
@ -265,7 +266,7 @@ public class StoreCenter {
self._storeLibrary.reset()
self.dataAccessCollection?.reset()
self._deleteLogs.reset()
self._deleteLogs?.reset()
self._settingsStorage.update { settings in
settings.username = nil
@ -814,7 +815,10 @@ public class StoreCenter {
/// Returns whether a data has already been deleted by, to avoid inserting it again
func hasAlreadyBeenDeleted<T: Storable>(_ instance: T) -> Bool {
return self._deleteLogs.contains(where: {
guard let deleteLogs = self._deleteLogs else {
fatalError("missing delete logs collection")
}
return deleteLogs.contains(where: {
$0.dataId == instance.stringId && $0.operation == .delete
})
}
@ -867,8 +871,11 @@ public class StoreCenter {
/// Deletes a data log by data id
func cleanupDataLog(dataId: String) {
let logs = self._deleteLogs.filter { $0.dataId == dataId }
self._deleteLogs.delete(contentOfs: logs)
guard let deleteLogs = self._deleteLogs else {
return
}
let logs = deleteLogs.filter { $0.dataId == dataId }
deleteLogs.delete(contentOfs: logs)
}
/// Creates a delete log for an instance
@ -876,7 +883,7 @@ public class StoreCenter {
let dataLog = DataLog(dataId: instance.stringId,
modelName: String(describing: T.self),
operation: .delete)
self._deleteLogs.addOrUpdate(instance: dataLog)
self._deleteLogs?.addOrUpdate(instance: dataLog)
}
/// Returns the appropriate store for a relationship

@ -172,6 +172,19 @@ public class StoredCollection<T: Storable>: SomeCollection {
try await self._decodeJSONFile()
} catch {
Logger.error(error)
await MainActor.run {
self.setAsLoaded()
}
do {
let fileURL = try self.store.fileURL(type: T.self)
let jsonString: String = try FileUtils.readFile(fileURL: fileURL)
if !jsonString.isEmpty {
StoreCenter.main.log(message: "Could not decode: \(jsonString)")
}
} catch {
}
}
}

Loading…
Cancel
Save