sync3
Laurent 6 months ago
parent 7ce71a4921
commit d70c649fc2
  1. 29
      LeStorage/StoreCenter.swift

@ -20,7 +20,7 @@ public class StoreCenter {
fileprivate var _stores: [String: Store] = [:] fileprivate var _stores: [String: Store] = [:]
/// Returns a default Store instance /// Returns a default Store instance
lazy var mainStore: Store = { Store(storeCenter: self) }() public lazy var mainStore: Store = { Store(storeCenter: self) }()
/// A KeychainStore object used to store the user's token /// A KeychainStore object used to store the user's token
var tokenKeychain: KeychainService? = nil var tokenKeychain: KeychainService? = nil
@ -706,12 +706,13 @@ public class StoreCenter {
fileprivate func _syncRevoke(_ revokeArrays: [ObjectIdentifierArray]) { fileprivate func _syncRevoke(_ revokeArrays: [ObjectIdentifierArray]) {
for revokeArray in revokeArrays { Task {
for revoked in revokeArray.items { for revokeArray in revokeArrays {
self.synchronizationRevoke(id: revoked.modelId, type: revokeArray.type, storeId: revoked.storeId) for revoked in revokeArray.items {
await self.synchronizationRevoke(id: revoked.modelId, type: revokeArray.type, storeId: revoked.storeId)
}
} }
} }
} }
/// Returns a Type object for a class name /// Returns a Type object for a class name
@ -772,20 +773,18 @@ public class StoreCenter {
} }
/// Revokes a data that has been shared with the user /// Revokes a data that has been shared with the user
@MainActor
func synchronizationRevoke<T: SyncedStorable>(id: String, type: T.Type, storeId: String?) { func synchronizationRevoke<T: SyncedStorable>(id: String, type: T.Type, storeId: String?) {
DispatchQueue.main.async { do {
do { if self._instanceShared(id: id, type: type) {
// let type = try self.classFromName(model) let count = self.mainStore.referenceCount(type: type, id: id)
if self._instanceShared(id: id, type: type) { if count == 0 {
let count = self.mainStore.referenceCount(type: type, id: id) try self._store(id: storeId).deleteNoSync(type: type, id: id)
if count == 0 {
try self._store(id: storeId).deleteNoSync(type: type, id: id)
}
} }
} catch {
Logger.error(error)
} }
} catch {
Logger.error(error)
} }
} }

Loading…
Cancel
Save