session-ios/SessionMessagingKit/Configuration.swift

46 lines
1.8 KiB
Swift

import SessionProtocolKit
@objc
public final class SNMessagingKitConfiguration : NSObject {
public let storage: SessionMessagingKitStorageProtocol
@objc public let signalStorage: SessionStore & PreKeyStore & SignedPreKeyStore
public let identityKeyStore: IdentityKeyStore
public let sessionRestorationImplementation: SessionRestorationProtocol
public let certificateValidator: SMKCertificateValidator
@objc public static var shared: SNMessagingKitConfiguration!
fileprivate init(
storage: SessionMessagingKitStorageProtocol,
signalStorage: SessionStore & PreKeyStore & SignedPreKeyStore,
identityKeyStore: IdentityKeyStore,
sessionRestorationImplementation: SessionRestorationProtocol,
certificateValidator: SMKCertificateValidator
) {
self.storage = storage
self.signalStorage = signalStorage
self.identityKeyStore = identityKeyStore
self.sessionRestorationImplementation = sessionRestorationImplementation
self.certificateValidator = certificateValidator
}
}
public enum SNMessagingKit { // Just to make the external API nice
public static func configure(
storage: SessionMessagingKitStorageProtocol,
signalStorage: SessionStore & PreKeyStore & SignedPreKeyStore,
identityKeyStore: IdentityKeyStore,
sessionRestorationImplementation: SessionRestorationProtocol,
certificateValidator: SMKCertificateValidator
) {
SNMessagingKitConfiguration.shared = SNMessagingKitConfiguration(
storage: storage,
signalStorage: signalStorage,
identityKeyStore: identityKeyStore,
sessionRestorationImplementation: sessionRestorationImplementation,
certificateValidator: certificateValidator
)
}
}