2017-01-22 01:42:36 +08:00
//
// P G P K e y S e t t i n g T a b l e V i e w C o n t r o l l e r . s w i f t
// p a s s
//
// C r e a t e d b y M i n g s h e n S u n o n 2 1 / 1 / 2 0 1 7 .
// C o p y r i g h t © 2 0 1 7 B o b S u n . A l l r i g h t s r e s e r v e d .
//
import UIKit
import SwiftyUserDefaults
class PGPKeySettingTableViewController : UITableViewController {
2017-02-10 22:15:01 +08:00
@IBOutlet weak var pgpPublicKeyURLTextField : UITextField !
@IBOutlet weak var pgpPrivateKeyURLTextField : UITextField !
2017-02-17 14:58:27 +08:00
var pgpPassphrase : String ?
2017-03-16 22:39:03 -07:00
let passwordStore = PasswordStore . shared
2017-01-22 01:42:36 +08:00
override func viewDidLoad ( ) {
super . viewDidLoad ( )
2017-02-19 22:10:36 +08:00
tableView . rowHeight = UITableViewAutomaticDimension
2017-02-10 22:15:01 +08:00
pgpPublicKeyURLTextField . text = Defaults [ . pgpPublicKeyURL ] ? . absoluteString
pgpPrivateKeyURLTextField . text = Defaults [ . pgpPrivateKeyURL ] ? . absoluteString
2017-03-16 22:39:03 -07:00
pgpPassphrase = passwordStore . pgpKeyPassphrase
2017-01-22 01:42:36 +08:00
}
2017-02-06 13:25:27 +08:00
2017-04-08 23:51:43 +08:00
private func createSavePassphraseAndSegueAlert ( ) -> UIAlertController {
let savePassphraseAlert = UIAlertController ( title : " Passphrase " , message : " Do you want to save the passphrase for later decryption? " , preferredStyle : UIAlertControllerStyle . alert )
savePassphraseAlert . addAction ( UIAlertAction ( title : " No " , style : UIAlertActionStyle . default ) { _ in
Defaults [ . isRememberPassphraseOn ] = false
self . performSegue ( withIdentifier : " savePGPKeySegue " , sender : self )
} )
savePassphraseAlert . addAction ( UIAlertAction ( title : " Save " , style : UIAlertActionStyle . destructive ) { _ in
Defaults [ . isRememberPassphraseOn ] = true
self . performSegue ( withIdentifier : " savePGPKeySegue " , sender : self )
} )
return savePassphraseAlert
}
2017-02-06 13:25:27 +08:00
override func shouldPerformSegue ( withIdentifier identifier : String , sender : Any ? ) -> Bool {
if identifier = = " savePGPKeySegue " {
2017-03-21 23:03:28 -07:00
guard let pgpPublicKeyURL = URL ( string : pgpPublicKeyURLTextField . text ! ) else {
2017-02-16 00:54:42 +08:00
Utils . alert ( title : " Cannot Save " , message : " Please set Public Key URL first. " , controller : self , completion : nil )
2017-02-15 22:34:16 +08:00
return false
}
2017-03-21 23:03:28 -07:00
guard let pgpPrivateKeyURL = URL ( string : pgpPrivateKeyURLTextField . text ! ) else {
2017-02-16 00:54:42 +08:00
Utils . alert ( title : " Cannot Save " , message : " Please set Private Key URL first. " , controller : self , completion : nil )
2017-02-15 22:34:16 +08:00
return false
}
2017-03-21 23:03:28 -07:00
guard pgpPublicKeyURL . scheme ! = = " https " , pgpPrivateKeyURL . scheme ! = = " https " else {
2017-02-16 00:54:42 +08:00
Utils . alert ( title : " Cannot Save Settings " , message : " HTTP connection is not supported. " , controller : self , completion : nil )
2017-02-06 13:25:27 +08:00
return false
}
}
return true
}
2017-02-17 14:58:27 +08:00
@IBAction func save ( _ sender : Any ) {
2017-02-28 12:25:52 +08:00
let alert = UIAlertController ( title : " Passphrase " , message : " Please fill in the passphrase of your PGP secret key. " , preferredStyle : UIAlertControllerStyle . alert )
2017-02-17 14:58:27 +08:00
alert . addAction ( UIAlertAction ( title : " OK " , style : UIAlertActionStyle . default , handler : { _ in
self . pgpPassphrase = alert . textFields ? . first ? . text
2017-04-08 23:51:43 +08:00
let savePassphraseAndSegueAlert = self . createSavePassphraseAndSegueAlert ( )
self . present ( savePassphraseAndSegueAlert , animated : true , completion : nil )
2017-02-17 14:58:27 +08:00
} ) )
alert . addTextField ( configurationHandler : { ( textField : UITextField ! ) in
textField . text = self . pgpPassphrase
textField . isSecureTextEntry = true
} )
self . present ( alert , animated : true , completion : nil )
}
2017-01-22 01:42:36 +08:00
}