mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
968 B
Swift
38 lines
968 B
Swift
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
|
|
// MARK: - UserDefaultsStorage
|
|
|
|
public class UserDefaultsStorage {}
|
|
|
|
// MARK: - UserDefaultsConfig
|
|
|
|
public class UserDefaultsConfig: UserDefaultsStorage {
|
|
public let identifier: String
|
|
public let createInstance: (Dependencies) -> UserDefaultsType
|
|
|
|
/// `fileprivate` to hide when accessing via `dependencies[defaults: ]`
|
|
fileprivate init(
|
|
identifier: String,
|
|
createInstance: @escaping (Dependencies) -> UserDefaultsType
|
|
) {
|
|
self.identifier = identifier
|
|
self.createInstance = createInstance
|
|
}
|
|
}
|
|
|
|
// MARK: - Creation
|
|
|
|
public extension Dependencies {
|
|
static func create(
|
|
identifier: String,
|
|
createInstance: @escaping (Dependencies) -> UserDefaultsType
|
|
) -> UserDefaultsConfig {
|
|
return UserDefaultsConfig(
|
|
identifier: identifier,
|
|
createInstance: createInstance
|
|
)
|
|
}
|
|
}
|