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.
session-ios/SessionUtilitiesKit/Dependency Injection/UserDefaultsConfig.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
)
}
}