Fix minor issues

sync2
Laurent 11 months ago
parent 01dbb8b1b6
commit 3368cbae01
  1. 2
      LeStorage/Codables/Settings.swift
  2. 5
      LeStorage/Store.swift
  3. 18
      LeStorage/StoreCenter.swift
  4. 1
      LeStorage/StoredCollection.swift

@ -16,6 +16,6 @@ class Settings: MicroStorable {
var userId: String? = nil var userId: String? = nil
var username: String? = nil var username: String? = nil
var deviceId: String? = nil var deviceId: String? = nil
var lastSynchronization: Date? = nil var lastSynchronization: Date = Date()
} }

@ -319,8 +319,9 @@ final public class Store {
} }
/// Returns whether all collections have loaded locally /// Returns whether all collections have loaded locally
public func collectionsAllLoaded() -> Bool { public func fileCollectionsAllLoaded() -> Bool {
return self._collections.values.allSatisfy { $0.hasLoaded } let fileCollections = self._collections.values.filter { $0.inMemory == false }
return fileCollections.allSatisfy { $0.hasLoaded }
} }
} }

@ -195,7 +195,7 @@ public class StoreCenter {
self._settingsStorage.update { settings in self._settingsStorage.update { settings in
settings.username = nil settings.username = nil
settings.userId = nil settings.userId = nil
settings.lastSynchronization = nil settings.lastSynchronization = Date()
self._webSocketManager = nil self._webSocketManager = nil
} }
@ -413,7 +413,7 @@ public class StoreCenter {
func synchronizeLastUpdates() async throws { func synchronizeLastUpdates() async throws {
if let lastSync = self._settingsStorage.item.lastSynchronization { let lastSync = self._settingsStorage.item.lastSynchronization
let syncGetCollection: ApiCallCollection<GetSyncData> = try self.apiCallCollection() let syncGetCollection: ApiCallCollection<GetSyncData> = try self.apiCallCollection()
if await syncGetCollection.hasPendingCalls() { if await syncGetCollection.hasPendingCalls() {
@ -423,12 +423,7 @@ public class StoreCenter {
getSyncData.lastUpdate = lastSync getSyncData.lastUpdate = lastSync
try await syncGetCollection.sendGetRequest(instance: getSyncData) try await syncGetCollection.sendGetRequest(instance: getSyncData)
} }
} else {
Logger.w("Can't sync due to missing saved date")
}
// let lastSync: Date? = self._settingsStorage.item.lastSynchronization
// try await self._services?.synchronizeLastUpdates(since: lastSync)
} }
func userDataAccessRetrieved(_ data: Data) { func userDataAccessRetrieved(_ data: Data) {
@ -473,7 +468,7 @@ public class StoreCenter {
} }
if let revocations = json["revocations"] as? [String: Any] { if let revocations = json["revocations"] as? [String: Any] {
try self._parseSyncRevocations(revocations, parents: json["revocation_parents"] as? [String: Any]) try self._parseSyncRevocations(revocations, parents: json["revocation_parents"] as? [[String: Any]])
} }
if let dateString = json["date"] as? String, if let dateString = json["date"] as? String,
@ -538,7 +533,7 @@ public class StoreCenter {
} }
} }
fileprivate func _parseSyncRevocations(_ deletions: [String: Any], parents: [String: Any]?) throws { fileprivate func _parseSyncRevocations(_ deletions: [String: Any], parents: [[String: Any]]?) throws {
for (className, revocationData) in deletions { for (className, revocationData) in deletions {
guard let revokedItems = revocationData as? [Any] else { guard let revokedItems = revocationData as? [Any] else {
Logger.w("Invalid update data for \(className)") Logger.w("Invalid update data for \(className)")
@ -556,7 +551,8 @@ public class StoreCenter {
} }
if let parents { if let parents {
for (className, parentData) in parents { for level in parents {
for (className, parentData) in level {
guard let parentItems = parentData as? [Any] else { guard let parentItems = parentData as? [Any] else {
Logger.w("Invalid update data for \(className): \(parentData)") Logger.w("Invalid update data for \(className): \(parentData)")
continue continue
@ -571,7 +567,7 @@ public class StoreCenter {
} }
} }
} }
}
} }
} }

@ -17,6 +17,7 @@ protocol CollectionHolder {
protocol SomeCollection: CollectionHolder, Identifiable { protocol SomeCollection: CollectionHolder, Identifiable {
var resourceName: String { get } var resourceName: String { get }
var hasLoaded: Bool { get } var hasLoaded: Bool { get }
var inMemory: Bool { get }
func allItems() -> [any Storable] func allItems() -> [any Storable]
func referenceCount<S: Storable>(type: S.Type, id: String) -> Int func referenceCount<S: Storable>(type: S.Type, id: String) -> Int

Loading…
Cancel
Save