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/SessionMessagingKit/Utilities/General.swift

33 lines
1002 B
Swift

import Foundation
import SessionUtilitiesKit
public protocol GeneralCacheType {
var encodedPublicKey: String? { get set }
}
public enum General {
public class Cache: GeneralCacheType {
public var encodedPublicKey: String? = nil
}
public static var cache: Atomic<GeneralCacheType> = Atomic(Cache())
}
@objc(SNGeneralUtilities)
public class GeneralUtilities: NSObject {
@objc public static func getUserPublicKey() -> String {
return getUserHexEncodedPublicKey()
}
}
public func getUserHexEncodedPublicKey(using dependencies: Dependencies = Dependencies()) -> String {
if let cachedKey: String = dependencies.generalCache.wrappedValue.encodedPublicKey { return cachedKey }
if let keyPair = dependencies.identityManager.identityKeyPair() { // Can be nil under some circumstances
dependencies.generalCache.mutate { $0.encodedPublicKey = keyPair.hexEncodedPublicKey }
return keyPair.hexEncodedPublicKey
}
return ""
}