29 lines
1.3 KiB
Swift
29 lines
1.3 KiB
Swift
|
|
import passKit
|
||
|
|
|
||
|
|
func encryptPassword(in controller: UIViewController, with password: Password, keyID: String? = nil, completion: @escaping (() -> Void)) {
|
||
|
|
DispatchQueue.global(qos: .userInitiated).async {
|
||
|
|
do {
|
||
|
|
_ = try PasswordStore.shared.add(password: password, keyID: keyID)
|
||
|
|
DispatchQueue.main.async {
|
||
|
|
completion()
|
||
|
|
}
|
||
|
|
} catch let AppError.pgpPublicKeyNotFound(keyID: key) {
|
||
|
|
DispatchQueue.main.async {
|
||
|
|
let alert = UIAlertController(title: "Cannot Encrypt Password", message: AppError.pgpPublicKeyNotFound(keyID: key).localizedDescription, preferredStyle: .alert)
|
||
|
|
alert.addAction(UIAlertAction.cancelAndPopView(controller: controller))
|
||
|
|
let selectKey = UIAlertAction.selectKey(controller: controller) { action in
|
||
|
|
encryptPassword(in: controller, with: password, keyID: action.title, completion: completion)
|
||
|
|
}
|
||
|
|
alert.addAction(selectKey)
|
||
|
|
|
||
|
|
controller.present(alert, animated: true)
|
||
|
|
}
|
||
|
|
return
|
||
|
|
} catch {
|
||
|
|
DispatchQueue.main.async {
|
||
|
|
Utils.alert(title: "Error".localize(), message: error.localizedDescription, controller: controller, completion: nil)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|