|
|
|
|
@ -21,9 +21,10 @@ protocol SomeCollection: Identifiable { |
|
|
|
|
func loadDataFromServerIfAllowed() async throws |
|
|
|
|
var synchronized: Bool { get } |
|
|
|
|
func hasPendingAPICalls() -> Bool |
|
|
|
|
var resourceName: String { get } |
|
|
|
|
func contentOfApiCallFile() -> String? |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extension Notification.Name { |
|
|
|
|
public static let CollectionDidLoad: Notification.Name = Notification.Name.init("notification.collectionDidLoad") |
|
|
|
|
public static let CollectionDidChange: Notification.Name = Notification.Name.init("notification.collectionDidChange") |
|
|
|
|
@ -95,6 +96,10 @@ public class StoredCollection<T: Storable>: RandomAccessCollection, SomeCollecti |
|
|
|
|
self._load() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var resourceName: String { |
|
|
|
|
return T.resourceName() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// MARK: - Paths |
|
|
|
|
|
|
|
|
|
fileprivate func _storageDirectoryPath() throws -> URL { |
|
|
|
|
@ -561,6 +566,14 @@ public class StoredCollection<T: Storable>: RandomAccessCollection, SomeCollecti |
|
|
|
|
return apiCallsCollection.isNotEmpty |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func contentOfApiCallFile() -> String? { |
|
|
|
|
guard let fileURL = try? self.apiCallsCollection?._urlForJSONFile() else { return nil } |
|
|
|
|
if FileManager.default.fileExists(atPath: fileURL.path()) { |
|
|
|
|
return try? FileUtils.readFile(fileURL: fileURL) |
|
|
|
|
} |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// MARK: - RandomAccessCollection |
|
|
|
|
|
|
|
|
|
public var startIndex: Int { return self.items.startIndex } |
|
|
|
|
|