diff --git a/LeStorage/Services.swift b/LeStorage/Services.swift index a8e5b6c..50b18d8 100644 --- a/LeStorage/Services.swift +++ b/LeStorage/Services.swift @@ -56,6 +56,7 @@ public class Services { Logger.log("create keystore with id: \(url)") } + /// The base API URL to send requests fileprivate(set) var baseURL: String fileprivate var jsonEncoder: JSONEncoder = { @@ -357,6 +358,7 @@ public class Services { try self.keychainStore.deleteToken() } + /// Returns whether the Service has an associated token public func hasToken() -> Bool { do { _ = try self.keychainStore.getToken() diff --git a/LeStorage/Store.swift b/LeStorage/Store.swift index 5bb20cb..b2a8d51 100644 --- a/LeStorage/Store.swift +++ b/LeStorage/Store.swift @@ -337,7 +337,6 @@ public class Store { guard let userName = self.userName() else { return true } - let isAllowed = !self.blackListedUserName.contains(where: { $0 == userName } ) return !self.blackListedUserName.contains(where: { $0 == userName } ) } diff --git a/LeStorage/StoredCollection.swift b/LeStorage/StoredCollection.swift index d300e68..74b4ac3 100644 --- a/LeStorage/StoredCollection.swift +++ b/LeStorage/StoredCollection.swift @@ -19,10 +19,6 @@ protocol CollectionHolder { var items: [Item] { get } } -extension CollectionHolder { - -} - protocol SomeCollection: Identifiable { var resourceName: String { get } var synchronized: Bool { get } @@ -125,24 +121,6 @@ public class StoredCollection: RandomAccessCollection, SomeCollecti return T.resourceName() } - // MARK: - Paths - -// fileprivate func _storageDirectoryPath() throws -> URL { -// return try FileUtils.pathForDirectoryInDocuments(directory: Store.storageDirectory) -// } -// -// fileprivate func _writeToStorageDirectory(content: String, fileName: String) throws { -// var fileURL = try self._storageDirectoryPath() -// fileURL.append(component: fileName) -// try content.write(to: fileURL, atomically: false, encoding: .utf8) -// } -// -// fileprivate func _urlForJSONFile() throws -> URL { -// var storageDirectory = try self._storageDirectoryPath() -// storageDirectory.append(component: T.fileName()) -// return storageDirectory -// } - // MARK: - Loading /// Migrates if necessary and asynchronously decodes the json file @@ -191,7 +169,6 @@ public class StoredCollection: RandomAccessCollection, SomeCollecti } } else { DispatchQueue.main.async { -// Logger.log("collection \(T.fileName()) has no file yet") self.loadCompletion?(self) NotificationCenter.default.post(name: NSNotification.Name.CollectionDidLoad, object: self) } @@ -214,7 +191,6 @@ public class StoredCollection: RandomAccessCollection, SomeCollecti do { let items: [T] = try await self._store.getItems() try self._addOrUpdate(contentOfs: items, shouldSync: false) -// self._hasChanged = true self.hasLoadedFromServer = true NotificationCenter.default.post(name: NSNotification.Name.CollectionDidLoad, object: self) } catch { @@ -356,10 +332,16 @@ public class StoredCollection: RandomAccessCollection, SomeCollecti // MARK: - Some Collection + /// Deletes an API Call by its id + /// - Parameters: + /// - id: the id of the API Call func deleteApiCallById(_ id: String) async throws { await self.apiCallsCollection?.deleteById(id) } + /// Returns an API Call by its id + /// - Parameters: + /// - id: the id of the API Call func apiCallById(_ id: String) async -> (any SomeCall)? { return await self.apiCallsCollection?.findById(id) } @@ -432,6 +414,8 @@ public class StoredCollection: RandomAccessCollection, SomeCollecti // MARK: - Reschedule calls /// Sends an insert api call for the provided [instance] + /// - Parameters: + /// - instance: the object to POST fileprivate func _sendInsertionIfNecessary(_ instance: T) { guard self.synchronized, self._canSynchronise() else { return @@ -442,6 +426,8 @@ public class StoredCollection: RandomAccessCollection, SomeCollecti } /// Sends an update api call for the provided [instance] + /// - Parameters: + /// - instance: the object to PUT fileprivate func _sendUpdateIfNecessary(_ instance: T) { guard self.synchronized, self._sendsUpdate, self._canSynchronise() else { return @@ -452,6 +438,8 @@ public class StoredCollection: RandomAccessCollection, SomeCollecti } /// Sends an delete api call for the provided [instance] + /// - Parameters: + /// - instance: the object to DELETE fileprivate func _sendDeletionIfNecessary(_ instance: T) { guard self.synchronized, self._canSynchronise() else { return @@ -461,6 +449,7 @@ public class StoredCollection: RandomAccessCollection, SomeCollecti } } + /// Returns whether the collection can synchronize fileprivate func _canSynchronise() -> Bool { return Store.main.collectionsCanSynchronize && Store.main.userIsAllowed() }