mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
519ffa4405
This should improve performance significantly as it avoids many unnecessary sync transactions. It also makes the code more readable.
46 lines
1.7 KiB
Swift
46 lines
1.7 KiB
Swift
import PromiseKit
|
|
import Sodium
|
|
|
|
extension Storage {
|
|
|
|
@discardableResult
|
|
public func write(with block: @escaping (Any) -> Void) -> Promise<Void> {
|
|
Storage.write(with: { block($0) })
|
|
}
|
|
|
|
@discardableResult
|
|
public func write(with block: @escaping (Any) -> Void, completion: @escaping () -> Void) -> Promise<Void> {
|
|
Storage.write(with: { block($0) }, completion: completion)
|
|
}
|
|
|
|
public func writeSync(with block: @escaping (Any) -> Void) {
|
|
Storage.writeSync { block($0) }
|
|
}
|
|
|
|
@objc public func getUserPublicKey() -> String? {
|
|
return OWSIdentityManager.shared().identityKeyPair()?.hexEncodedPublicKey
|
|
}
|
|
|
|
public func getUserKeyPair() -> ECKeyPair? {
|
|
return OWSIdentityManager.shared().identityKeyPair()
|
|
}
|
|
|
|
public func getUserED25519KeyPair() -> Box.KeyPair? {
|
|
let dbConnection = OWSIdentityManager.shared().dbConnection
|
|
let collection = OWSPrimaryStorageIdentityKeyStoreCollection
|
|
guard let hexEncodedPublicKey = dbConnection.object(forKey: LKED25519PublicKey, inCollection: collection) as? String,
|
|
let hexEncodedSecretKey = dbConnection.object(forKey: LKED25519SecretKey, inCollection: collection) as? String else { return nil }
|
|
let publicKey = Box.KeyPair.PublicKey(hex: hexEncodedPublicKey)
|
|
let secretKey = Box.KeyPair.SecretKey(hex: hexEncodedSecretKey)
|
|
return Box.KeyPair(publicKey: publicKey, secretKey: secretKey)
|
|
}
|
|
|
|
@objc public func getUser() -> Contact? {
|
|
guard let userPublicKey = getUserPublicKey() else { return nil }
|
|
var result: Contact?
|
|
Storage.read { transaction in
|
|
result = Storage.shared.getContact(with: userPublicKey)
|
|
}
|
|
return result
|
|
}
|
|
}
|