Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
6c3712e883
commit
1648e36512
@ -86,7 +86,7 @@ public actor StorageRouter: StorageProviding {
|
|||||||
case .userDefaults(let suite):
|
case .userDefaults(let suite):
|
||||||
return try await UserDefaultsHelper.shared.exists(forKey: key.name, suite: suite)
|
return try await UserDefaultsHelper.shared.exists(forKey: key.name, suite: suite)
|
||||||
case .appGroupUserDefaults(let identifier):
|
case .appGroupUserDefaults(let identifier):
|
||||||
return try await UserDefaultsHelper.shared.exists(forKey: key.name, suite: identifier)
|
return try await UserDefaultsHelper.shared.exists(forKey: key.name, appGroupIdentifier: identifier)
|
||||||
case .keychain(let service):
|
case .keychain(let service):
|
||||||
return try await KeychainHelper.shared.exists(service: service, key: key.name)
|
return try await KeychainHelper.shared.exists(service: service, key: key.name)
|
||||||
case .fileSystem(let directory), .encryptedFileSystem(let directory):
|
case .fileSystem(let directory), .encryptedFileSystem(let directory):
|
||||||
@ -216,7 +216,7 @@ public actor StorageRouter: StorageProviding {
|
|||||||
try await UserDefaultsHelper.shared.set(data, forKey: key.name, suite: suite)
|
try await UserDefaultsHelper.shared.set(data, forKey: key.name, suite: suite)
|
||||||
|
|
||||||
case .appGroupUserDefaults(let identifier):
|
case .appGroupUserDefaults(let identifier):
|
||||||
try await UserDefaultsHelper.shared.set(data, forKey: key.name, suite: identifier)
|
try await UserDefaultsHelper.shared.set(data, forKey: key.name, appGroupIdentifier: identifier)
|
||||||
|
|
||||||
case .keychain(let service):
|
case .keychain(let service):
|
||||||
guard case let .keychain(accessibility, accessControl) = key.security else {
|
guard case let .keychain(accessibility, accessControl) = key.security else {
|
||||||
@ -262,7 +262,7 @@ public actor StorageRouter: StorageProviding {
|
|||||||
case .userDefaults(let suite):
|
case .userDefaults(let suite):
|
||||||
return try await UserDefaultsHelper.shared.get(forKey: key.name, suite: suite)
|
return try await UserDefaultsHelper.shared.get(forKey: key.name, suite: suite)
|
||||||
case .appGroupUserDefaults(let identifier):
|
case .appGroupUserDefaults(let identifier):
|
||||||
return try await UserDefaultsHelper.shared.get(forKey: key.name, suite: identifier)
|
return try await UserDefaultsHelper.shared.get(forKey: key.name, appGroupIdentifier: identifier)
|
||||||
|
|
||||||
case .keychain(let service):
|
case .keychain(let service):
|
||||||
return try await KeychainHelper.shared.get(service: service, key: key.name)
|
return try await KeychainHelper.shared.get(service: service, key: key.name)
|
||||||
@ -283,7 +283,7 @@ public actor StorageRouter: StorageProviding {
|
|||||||
case .userDefaults(let suite):
|
case .userDefaults(let suite):
|
||||||
try await UserDefaultsHelper.shared.remove(forKey: key.name, suite: suite)
|
try await UserDefaultsHelper.shared.remove(forKey: key.name, suite: suite)
|
||||||
case .appGroupUserDefaults(let identifier):
|
case .appGroupUserDefaults(let identifier):
|
||||||
try await UserDefaultsHelper.shared.remove(forKey: key.name, suite: identifier)
|
try await UserDefaultsHelper.shared.remove(forKey: key.name, appGroupIdentifier: identifier)
|
||||||
|
|
||||||
case .keychain(let service):
|
case .keychain(let service):
|
||||||
try await KeychainHelper.shared.delete(service: service, key: key.name)
|
try await KeychainHelper.shared.delete(service: service, key: key.name)
|
||||||
|
|||||||
@ -20,6 +20,17 @@ actor UserDefaultsHelper {
|
|||||||
let defaults = try userDefaults(for: suite)
|
let defaults = try userDefaults(for: suite)
|
||||||
defaults.set(data, forKey: key)
|
defaults.set(data, forKey: key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Stores data in App Group UserDefaults.
|
||||||
|
/// - Parameters:
|
||||||
|
/// - data: The data to store.
|
||||||
|
/// - key: The key to store the data under.
|
||||||
|
/// - appGroupIdentifier: App Group identifier.
|
||||||
|
/// - Throws: `StorageError.invalidAppGroupIdentifier` if the identifier is invalid.
|
||||||
|
public func set(_ data: Data, forKey key: String, appGroupIdentifier: String) throws {
|
||||||
|
let defaults = try appGroupDefaults(for: appGroupIdentifier)
|
||||||
|
defaults.set(data, forKey: key)
|
||||||
|
}
|
||||||
|
|
||||||
/// Retrieves data from UserDefaults.
|
/// Retrieves data from UserDefaults.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
@ -31,6 +42,17 @@ actor UserDefaultsHelper {
|
|||||||
let defaults = try userDefaults(for: suite)
|
let defaults = try userDefaults(for: suite)
|
||||||
return defaults.data(forKey: key)
|
return defaults.data(forKey: key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Retrieves data from App Group UserDefaults.
|
||||||
|
/// - Parameters:
|
||||||
|
/// - key: The key to retrieve.
|
||||||
|
/// - appGroupIdentifier: App Group identifier.
|
||||||
|
/// - Returns: The stored data, or nil if not found.
|
||||||
|
/// - Throws: `StorageError.invalidAppGroupIdentifier` if the identifier is invalid.
|
||||||
|
public func get(forKey key: String, appGroupIdentifier: String) throws -> Data? {
|
||||||
|
let defaults = try appGroupDefaults(for: appGroupIdentifier)
|
||||||
|
return defaults.data(forKey: key)
|
||||||
|
}
|
||||||
|
|
||||||
/// Removes data from UserDefaults.
|
/// Removes data from UserDefaults.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
@ -41,6 +63,16 @@ actor UserDefaultsHelper {
|
|||||||
let defaults = try userDefaults(for: suite)
|
let defaults = try userDefaults(for: suite)
|
||||||
defaults.removeObject(forKey: key)
|
defaults.removeObject(forKey: key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Removes data from App Group UserDefaults.
|
||||||
|
/// - Parameters:
|
||||||
|
/// - key: The key to remove.
|
||||||
|
/// - appGroupIdentifier: App Group identifier.
|
||||||
|
/// - Throws: `StorageError.invalidAppGroupIdentifier` if the identifier is invalid.
|
||||||
|
public func remove(forKey key: String, appGroupIdentifier: String) throws {
|
||||||
|
let defaults = try appGroupDefaults(for: appGroupIdentifier)
|
||||||
|
defaults.removeObject(forKey: key)
|
||||||
|
}
|
||||||
|
|
||||||
/// Checks if a key exists in UserDefaults.
|
/// Checks if a key exists in UserDefaults.
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
@ -52,6 +84,17 @@ actor UserDefaultsHelper {
|
|||||||
let defaults = try userDefaults(for: suite)
|
let defaults = try userDefaults(for: suite)
|
||||||
return defaults.object(forKey: key) != nil
|
return defaults.object(forKey: key) != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Checks if a key exists in App Group UserDefaults.
|
||||||
|
/// - Parameters:
|
||||||
|
/// - key: The key to check.
|
||||||
|
/// - appGroupIdentifier: App Group identifier.
|
||||||
|
/// - Returns: True if the key exists.
|
||||||
|
/// - Throws: `StorageError.invalidAppGroupIdentifier` if the identifier is invalid.
|
||||||
|
public func exists(forKey key: String, appGroupIdentifier: String) throws -> Bool {
|
||||||
|
let defaults = try appGroupDefaults(for: appGroupIdentifier)
|
||||||
|
return defaults.object(forKey: key) != nil
|
||||||
|
}
|
||||||
|
|
||||||
/// Gets all keys in UserDefaults for a given suite.
|
/// Gets all keys in UserDefaults for a given suite.
|
||||||
/// - Parameter suite: Optional suite name.
|
/// - Parameter suite: Optional suite name.
|
||||||
@ -61,6 +104,15 @@ actor UserDefaultsHelper {
|
|||||||
let defaults = try userDefaults(for: suite)
|
let defaults = try userDefaults(for: suite)
|
||||||
return Array(defaults.dictionaryRepresentation().keys)
|
return Array(defaults.dictionaryRepresentation().keys)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets all keys in App Group UserDefaults.
|
||||||
|
/// - Parameter appGroupIdentifier: App Group identifier.
|
||||||
|
/// - Returns: An array of all keys.
|
||||||
|
/// - Throws: `StorageError.invalidAppGroupIdentifier` if the identifier is invalid.
|
||||||
|
public func allKeys(appGroupIdentifier: String) throws -> [String] {
|
||||||
|
let defaults = try appGroupDefaults(for: appGroupIdentifier)
|
||||||
|
return Array(defaults.dictionaryRepresentation().keys)
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Private Helpers
|
// MARK: - Private Helpers
|
||||||
|
|
||||||
@ -75,4 +127,12 @@ actor UserDefaultsHelper {
|
|||||||
|
|
||||||
return defaults
|
return defaults
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func appGroupDefaults(for identifier: String) throws -> UserDefaults {
|
||||||
|
guard let defaults = UserDefaults(suiteName: identifier) else {
|
||||||
|
throw StorageError.invalidAppGroupIdentifier(identifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaults
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user