Update SwiftyUserDefaults to current version 5.0.0
This commit is contained in:
parent
b60ce3b003
commit
a2edf41d33
26 changed files with 145 additions and 149 deletions
|
|
@ -1,5 +1,5 @@
|
|||
language: objective-c
|
||||
osx_image: xcode11
|
||||
osx_image: xcode11.3
|
||||
addons:
|
||||
homebrew:
|
||||
packages:
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@ github "leonbreedt/FavIcon" "3.0.6"
|
|||
github "mattrubin/Base32" "1.1.2+xcode10.2"
|
||||
github "mattrubin/OneTimePassword" "3.2.0"
|
||||
github "mssun/objective-git" "0.15"
|
||||
github "radex/SwiftyUserDefaults" "4.0.0"
|
||||
github "radex/SwiftyUserDefaults" "5.0.0"
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class AddPasswordTableViewController: PasswordEditorTableViewController {
|
|||
[[.type: PasswordEditorCellType.additionsCell, .title: "additions"]],
|
||||
[[.type: PasswordEditorCellType.scanQRCodeCell]]
|
||||
]
|
||||
if PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]) == .RANDOM {
|
||||
if PasswordGeneratorFlavour.from(Defaults.passwordGeneratorFlavor) == .RANDOM {
|
||||
tableData[1].append([.type: PasswordEditorCellType.passwordLengthCell, .title: "passwordlength"])
|
||||
}
|
||||
tableData[1].append([.type: PasswordEditorCellType.memorablePasswordGeneratorCell])
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class AdvancedSettingsTableViewController: UITableViewController {
|
|||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
encryptInASCIIArmoredSwitch.isOn = SharedDefaults[.encryptInArmored]
|
||||
encryptInASCIIArmoredSwitch.isOn = Defaults.encryptInArmored
|
||||
encryptInASCIIArmoredTableViewCell.accessoryView = encryptInASCIIArmoredSwitch
|
||||
encryptInASCIIArmoredTableViewCell.selectionStyle = .none
|
||||
setGitSignatureText()
|
||||
|
|
@ -39,7 +39,7 @@ class AdvancedSettingsTableViewController: UITableViewController {
|
|||
let gitSignatureEmail = passwordStore.gitSignatureForNow?.email ?? ""
|
||||
self.gitSignatureTableViewCell.detailTextLabel?.font = UIFont.preferredFont(forTextStyle: .footnote)
|
||||
self.gitSignatureTableViewCell.detailTextLabel?.text = "\(gitSignatureName) <\(gitSignatureEmail)>"
|
||||
if SharedDefaults[.gitSignatureName] == nil && SharedDefaults[.gitSignatureEmail] == nil {
|
||||
if Defaults.gitSignatureName == nil && Defaults.gitSignatureEmail == nil {
|
||||
self.gitSignatureTableViewCell.detailTextLabel?.font = UIFont.preferredFont(forTextStyle: .body)
|
||||
gitSignatureTableViewCell.detailTextLabel?.text = "NotSet".localize()
|
||||
}
|
||||
|
|
@ -78,15 +78,15 @@ class AdvancedSettingsTableViewController: UITableViewController {
|
|||
}
|
||||
|
||||
@objc func encryptInASCIIArmoredAction(_ sender: Any?) {
|
||||
SharedDefaults[.encryptInArmored] = encryptInASCIIArmoredSwitch.isOn
|
||||
Defaults.encryptInArmored = encryptInASCIIArmoredSwitch.isOn
|
||||
}
|
||||
|
||||
@IBAction func saveGitConfigSetting(segue: UIStoryboardSegue) {
|
||||
if let controller = segue.source as? GitConfigSettingTableViewController {
|
||||
if let gitSignatureName = controller.nameTextField.text,
|
||||
let gitSignatureEmail = controller.emailTextField.text {
|
||||
SharedDefaults[.gitSignatureName] = gitSignatureName.isEmpty ? nil : gitSignatureName
|
||||
SharedDefaults[.gitSignatureEmail] = gitSignatureEmail.isEmpty ? nil : gitSignatureEmail
|
||||
Defaults.gitSignatureName = gitSignatureName.isEmpty ? nil : gitSignatureName
|
||||
Defaults.gitSignatureEmail = gitSignatureEmail.isEmpty ? nil : gitSignatureEmail
|
||||
}
|
||||
setGitSignatureText()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ class EditPasswordTableViewController: PasswordEditorTableViewController {
|
|||
[[.type: PasswordEditorCellType.scanQRCodeCell],
|
||||
[.type: PasswordEditorCellType.deletePasswordCell]]
|
||||
]
|
||||
if PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]) == .RANDOM {
|
||||
if PasswordGeneratorFlavour.from(Defaults.passwordGeneratorFlavor) == .RANDOM {
|
||||
tableData[1].append([.type: PasswordEditorCellType.passwordLengthCell, .title: "passwordlength"])
|
||||
}
|
||||
tableData[1].append([.type: PasswordEditorCellType.memorablePasswordGeneratorCell])
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
uiSwitch.onTintColor = Colors.systemBlue
|
||||
uiSwitch.sizeToFit()
|
||||
uiSwitch.addTarget(self, action: #selector(rememberPGPPassphraseSwitchAction(_:)), for: UIControl.Event.valueChanged)
|
||||
uiSwitch.isOn = SharedDefaults[.isRememberPGPPassphraseOn]
|
||||
uiSwitch.isOn = Defaults.isRememberPGPPassphraseOn
|
||||
return uiSwitch
|
||||
}()
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
uiSwitch.onTintColor = Colors.systemBlue
|
||||
uiSwitch.sizeToFit()
|
||||
uiSwitch.addTarget(self, action: #selector(rememberGitCredentialPassphraseSwitchAction(_:)), for: UIControl.Event.valueChanged)
|
||||
uiSwitch.isOn = SharedDefaults[.isRememberGitCredentialPassphraseOn]
|
||||
uiSwitch.isOn = Defaults.isRememberGitCredentialPassphraseOn
|
||||
return uiSwitch
|
||||
}()
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
uiSwitch.onTintColor = Colors.systemBlue
|
||||
uiSwitch.sizeToFit()
|
||||
uiSwitch.addTarget(self, action: #selector(showFolderSwitchAction(_:)), for: UIControl.Event.valueChanged)
|
||||
uiSwitch.isOn = SharedDefaults[.isShowFolderOn]
|
||||
uiSwitch.isOn = Defaults.isShowFolderOn
|
||||
return uiSwitch
|
||||
}()
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
uiSwitch.onTintColor = Colors.systemBlue
|
||||
uiSwitch.sizeToFit()
|
||||
uiSwitch.addTarget(self, action: #selector(hidePasswordImagesSwitchAction(_:)), for: UIControl.Event.valueChanged)
|
||||
uiSwitch.isOn = SharedDefaults[.isHidePasswordImagesOn]
|
||||
uiSwitch.isOn = Defaults.isHidePasswordImagesOn
|
||||
return uiSwitch
|
||||
}()
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
accessoryView.addSubview(hideUnknownSwitch)
|
||||
cell.accessoryView = accessoryView
|
||||
cell.selectionStyle = .none
|
||||
hideUnknownSwitch.isOn = SharedDefaults[.isHideUnknownOn]
|
||||
hideUnknownSwitch.isOn = Defaults.isHideUnknownOn
|
||||
case "HideOtpFields".localize():
|
||||
cell.accessoryType = .none
|
||||
let detailButton = UIButton(type: .detailDisclosure)
|
||||
|
|
@ -117,7 +117,7 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
accessoryView.addSubview(hideOTPSwitch)
|
||||
cell.accessoryView = accessoryView
|
||||
cell.selectionStyle = .none
|
||||
hideOTPSwitch.isOn = SharedDefaults[.isHideOTPOn]
|
||||
hideOTPSwitch.isOn = Defaults.isHideOTPOn
|
||||
case "RememberPgpKeyPassphrase".localize():
|
||||
cell.accessoryType = .none
|
||||
cell.selectionStyle = .none
|
||||
|
|
@ -141,10 +141,10 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
accessoryView.addSubview(hidePasswordImagesSwitch)
|
||||
cell.accessoryView = accessoryView
|
||||
cell.selectionStyle = .none
|
||||
hidePasswordImagesSwitch.isOn = SharedDefaults[.isHidePasswordImagesOn]
|
||||
hidePasswordImagesSwitch.isOn = Defaults.isHidePasswordImagesOn
|
||||
case "PasswordGeneratorFlavor".localize():
|
||||
cell.accessoryType = .disclosureIndicator
|
||||
cell.detailTextLabel?.text = PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]).name
|
||||
cell.detailTextLabel?.text = PasswordGeneratorFlavour.from(Defaults.passwordGeneratorFlavor).name
|
||||
default: break
|
||||
}
|
||||
return cell
|
||||
|
|
@ -163,7 +163,7 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
let optionMenu = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
|
||||
var randomFlavorActionTitle = ""
|
||||
var appleFlavorActionTitle = ""
|
||||
if SharedDefaults[.passwordGeneratorFlavor] == PasswordGeneratorFlavour.RANDOM.rawValue {
|
||||
if Defaults.passwordGeneratorFlavor == PasswordGeneratorFlavour.RANDOM.rawValue {
|
||||
randomFlavorActionTitle = "✓ " + "RandomString".localize()
|
||||
appleFlavorActionTitle = "ApplesKeychainStyle".localize()
|
||||
} else {
|
||||
|
|
@ -171,12 +171,12 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
appleFlavorActionTitle = "✓ " + "ApplesKeychainStyle".localize()
|
||||
}
|
||||
let randomFlavorAction = UIAlertAction(title: randomFlavorActionTitle, style: .default) { _ in
|
||||
SharedDefaults[.passwordGeneratorFlavor] = PasswordGeneratorFlavour.RANDOM.rawValue
|
||||
Defaults.passwordGeneratorFlavor = PasswordGeneratorFlavour.RANDOM.rawValue
|
||||
sourceCell.detailTextLabel?.text = PasswordGeneratorFlavour.RANDOM.name
|
||||
}
|
||||
|
||||
let appleFlavorAction = UIAlertAction(title: appleFlavorActionTitle, style: .default) { _ in
|
||||
SharedDefaults[.passwordGeneratorFlavor] = PasswordGeneratorFlavour.APPLE.rawValue
|
||||
Defaults.passwordGeneratorFlavor = PasswordGeneratorFlavour.APPLE.rawValue
|
||||
sourceCell.detailTextLabel?.text = PasswordGeneratorFlavour.APPLE.name
|
||||
}
|
||||
|
||||
|
|
@ -209,24 +209,24 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
}
|
||||
|
||||
@objc func hideUnknownSwitchAction(_ sender: Any?) {
|
||||
SharedDefaults[.isHideUnknownOn] = hideUnknownSwitch.isOn
|
||||
Defaults.isHideUnknownOn = hideUnknownSwitch.isOn
|
||||
NotificationCenter.default.post(name: .passwordDetailDisplaySettingChanged, object: nil)
|
||||
}
|
||||
|
||||
@objc func hideOTPSwitchAction(_ sender: Any?) {
|
||||
SharedDefaults[.isHideOTPOn] = hideOTPSwitch.isOn
|
||||
Defaults.isHideOTPOn = hideOTPSwitch.isOn
|
||||
NotificationCenter.default.post(name: .passwordDetailDisplaySettingChanged, object: nil)
|
||||
}
|
||||
|
||||
@objc func rememberPGPPassphraseSwitchAction(_ sender: Any?) {
|
||||
SharedDefaults[.isRememberPGPPassphraseOn] = rememberPGPPassphraseSwitch.isOn
|
||||
Defaults.isRememberPGPPassphraseOn = rememberPGPPassphraseSwitch.isOn
|
||||
if rememberPGPPassphraseSwitch.isOn == false {
|
||||
AppKeychain.shared.removeContent(for: Globals.pgpKeyPassphrase)
|
||||
}
|
||||
}
|
||||
|
||||
@objc func rememberGitCredentialPassphraseSwitchAction(_ sender: Any?) {
|
||||
SharedDefaults[.isRememberGitCredentialPassphraseOn] = rememberGitCredentialPassphraseSwitch.isOn
|
||||
Defaults.isRememberGitCredentialPassphraseOn = rememberGitCredentialPassphraseSwitch.isOn
|
||||
if rememberGitCredentialPassphraseSwitch.isOn == false {
|
||||
passwordStore.gitSSHPrivateKeyPassphrase = nil
|
||||
passwordStore.gitPassword = nil
|
||||
|
|
@ -234,12 +234,12 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
|
|||
}
|
||||
|
||||
@objc func showFolderSwitchAction(_ sender: Any?) {
|
||||
SharedDefaults[.isShowFolderOn] = showFolderSwitch.isOn
|
||||
Defaults.isShowFolderOn = showFolderSwitch.isOn
|
||||
NotificationCenter.default.post(name: .passwordDisplaySettingChanged, object: nil)
|
||||
}
|
||||
|
||||
@objc func hidePasswordImagesSwitchAction(_ sender: Any?) {
|
||||
SharedDefaults[.isHidePasswordImagesOn] = hidePasswordImagesSwitch.isOn
|
||||
Defaults.isHidePasswordImagesOn = hidePasswordImagesSwitch.isOn
|
||||
NotificationCenter.default.post(name: .passwordDetailDisplaySettingChanged, object: nil)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import SwiftyUserDefaults
|
||||
import passKit
|
||||
|
||||
class GitConfigSettingTableViewController: UITableViewController {
|
||||
|
|
@ -23,8 +22,8 @@ class GitConfigSettingTableViewController: UITableViewController {
|
|||
let signature = passwordStore.gitSignatureForNow
|
||||
nameTextField.placeholder = signature?.name ?? ""
|
||||
emailTextField.placeholder = signature?.email ?? ""
|
||||
nameTextField.text = SharedDefaults[.gitSignatureName]
|
||||
emailTextField.text = SharedDefaults[.gitSignatureEmail]
|
||||
nameTextField.text = Defaults.gitSignatureName
|
||||
emailTextField.text = Defaults.gitSignatureEmail
|
||||
}
|
||||
|
||||
override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
|
||||
|
|
|
|||
|
|
@ -65,8 +65,8 @@ class GitSSHKeyArmorSettingTableViewController: AutoCellHeightUITableViewControl
|
|||
} catch {
|
||||
Utils.alert(title: "CannotSave".localize(), message: "CannotSaveSshKey".localize(), controller: self, completion: nil)
|
||||
}
|
||||
SharedDefaults[.gitSSHKeySource] = .armor
|
||||
SharedDefaults[.gitAuthenticationMethod] = .key
|
||||
Defaults.gitSSHKeySource = .armor
|
||||
Defaults.gitAuthenticationMethod = .key
|
||||
self.navigationController!.popViewController(animated: true)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,32 +27,32 @@ class GitServerSettingTableViewController: UITableViewController {
|
|||
private var sshLabel: UILabel?
|
||||
private let passwordStore = PasswordStore.shared
|
||||
private var gitAuthenticationMethod: GitAuthenticationMethod {
|
||||
get { SharedDefaults[.gitAuthenticationMethod] }
|
||||
get { Defaults.gitAuthenticationMethod }
|
||||
set {
|
||||
SharedDefaults[.gitAuthenticationMethod] = newValue
|
||||
Defaults.gitAuthenticationMethod = newValue
|
||||
updateAuthenticationMethodCheckView(for: newValue)
|
||||
}
|
||||
}
|
||||
private var gitUrl: URL {
|
||||
get { SharedDefaults[.gitURL] }
|
||||
set { SharedDefaults[.gitURL] = newValue }
|
||||
get { Defaults.gitURL }
|
||||
set { Defaults.gitURL = newValue }
|
||||
}
|
||||
private var gitBranchName: String {
|
||||
get { SharedDefaults[.gitBranchName] }
|
||||
set { SharedDefaults[.gitBranchName] = newValue }
|
||||
get { Defaults.gitBranchName }
|
||||
set { Defaults.gitBranchName = newValue }
|
||||
}
|
||||
private var gitUsername: String {
|
||||
get { SharedDefaults[.gitUsername] }
|
||||
set { SharedDefaults[.gitUsername] = newValue }
|
||||
get { Defaults.gitUsername }
|
||||
set { Defaults.gitUsername = newValue }
|
||||
}
|
||||
private var gitCredential: GitCredential {
|
||||
get {
|
||||
switch SharedDefaults[.gitAuthenticationMethod] {
|
||||
switch Defaults.gitAuthenticationMethod {
|
||||
case .password:
|
||||
return GitCredential(credential: .http(userName: SharedDefaults[.gitUsername]))
|
||||
return GitCredential(credential: .http(userName: Defaults.gitUsername))
|
||||
case .key:
|
||||
let privateKey: String = AppKeychain.shared.get(for: SshKey.PRIVATE.getKeychainKey()) ?? ""
|
||||
return GitCredential(credential: .ssh(userName: SharedDefaults[.gitUsername], privateKey: privateKey))
|
||||
return GitCredential(credential: .ssh(userName: Defaults.gitUsername, privateKey: privateKey))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -158,7 +158,7 @@ class GitServerSettingTableViewController: UITableViewController {
|
|||
|
||||
private func cloneAndSegueIfSuccess() {
|
||||
// Remember git credential password/passphrase temporarily, ask whether users want this after a successful clone.
|
||||
SharedDefaults[.isRememberGitCredentialPassphraseOn] = true
|
||||
Defaults.isRememberGitCredentialPassphraseOn = true
|
||||
DispatchQueue.global(qos: .userInitiated).async() {
|
||||
do {
|
||||
let transferProgressBlock: (UnsafePointer<git_transfer_progress>, UnsafeMutablePointer<ObjCBool>) -> Void = { (git_transfer_progress, _) in
|
||||
|
|
@ -183,13 +183,13 @@ class GitServerSettingTableViewController: UITableViewController {
|
|||
let savePassphraseAlert: UIAlertController = {
|
||||
let alert = UIAlertController(title: "Done".localize(), message: "WantToSaveGitCredential?".localize(), preferredStyle: .alert)
|
||||
alert.addAction(UIAlertAction(title: "No".localize(), style: .default) { _ in
|
||||
SharedDefaults[.isRememberGitCredentialPassphraseOn] = false
|
||||
Defaults.isRememberGitCredentialPassphraseOn = false
|
||||
self.passwordStore.gitPassword = nil
|
||||
self.passwordStore.gitSSHPrivateKeyPassphrase = nil
|
||||
self.performSegue(withIdentifier: "saveGitServerSettingSegue", sender: self)
|
||||
})
|
||||
alert.addAction(UIAlertAction(title: "Yes".localize(), style: .destructive) {_ in
|
||||
SharedDefaults[.isRememberGitCredentialPassphraseOn] = true
|
||||
Defaults.isRememberGitCredentialPassphraseOn = true
|
||||
self.performSegue(withIdentifier: "saveGitServerSettingSegue", sender: self)
|
||||
})
|
||||
return alert
|
||||
|
|
@ -221,7 +221,7 @@ class GitServerSettingTableViewController: UITableViewController {
|
|||
var armorActionTitle = "AsciiArmorEncryptedKey".localize()
|
||||
var fileActionTitle = "ITunesFileSharing".localize()
|
||||
|
||||
switch SharedDefaults[.gitSSHKeySource] {
|
||||
switch Defaults.gitSSHKeySource {
|
||||
case .url: urlActionTitle = "✓ \(urlActionTitle)"
|
||||
case .armor: armorActionTitle = "✓ \(armorActionTitle)"
|
||||
case .file: fileActionTitle = "✓ \(fileActionTitle)"
|
||||
|
|
@ -244,7 +244,7 @@ class GitServerSettingTableViewController: UITableViewController {
|
|||
let action = UIAlertAction(title: fileActionTitle, style: .default) { _ in
|
||||
do {
|
||||
try self.passwordStore.gitSSHKeyImportFromFileSharing()
|
||||
SharedDefaults[.gitSSHKeySource] = .file
|
||||
Defaults.gitSSHKeySource = .file
|
||||
SVProgressHUD.showSuccess(withStatus: "Imported".localize())
|
||||
SVProgressHUD.dismiss(withDelay: 1)
|
||||
self.sshLabel?.isEnabled = true
|
||||
|
|
@ -268,10 +268,10 @@ class GitServerSettingTableViewController: UITableViewController {
|
|||
}()
|
||||
optionMenu.addAction(fileAction)
|
||||
|
||||
if SharedDefaults[.gitSSHKeySource] != nil {
|
||||
if Defaults.gitSSHKeySource != nil {
|
||||
let deleteAction = UIAlertAction(title: "RemoveSShKeys".localize(), style: .destructive) { _ in
|
||||
self.passwordStore.removeGitSSHKeys()
|
||||
SharedDefaults[.gitSSHKeySource] = nil
|
||||
Defaults.gitSSHKeySource = nil
|
||||
self.sshLabel?.isEnabled = false
|
||||
self.updateAuthenticationMethodCheckView(for: .password)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ class PGPKeyArmorSettingTableViewController: AutoCellHeightUITableViewController
|
|||
// no
|
||||
savePassphraseAlert.addAction(UIAlertAction(title: "No".localize(), style: UIAlertAction.Style.default) { _ in
|
||||
self.keychain.removeContent(for: Globals.pgpKeyPassphrase)
|
||||
SharedDefaults[.isRememberPGPPassphraseOn] = false
|
||||
Defaults.isRememberPGPPassphraseOn = false
|
||||
self.performSegue(withIdentifier: "savePGPKeySegue", sender: self)
|
||||
})
|
||||
// yes
|
||||
|
|
@ -99,7 +99,7 @@ class PGPKeyArmorSettingTableViewController: AutoCellHeightUITableViewController
|
|||
let alert = UIAlertController(title: "Passphrase".localize(), message: "FillInPgpPassphrase.".localize(), preferredStyle: UIAlertController.Style.alert)
|
||||
alert.addAction(UIAlertAction(title: "Ok".localize(), style: UIAlertAction.Style.default, handler: {_ in
|
||||
self.keychain.add(string: alert.textFields?.first?.text, for: Globals.pgpKeyPassphrase)
|
||||
SharedDefaults[.isRememberPGPPassphraseOn] = true
|
||||
Defaults.isRememberPGPPassphraseOn = true
|
||||
self.performSegue(withIdentifier: "savePGPKeySegue", sender: self)
|
||||
}))
|
||||
alert.addTextField(configurationHandler: {(textField: UITextField!) in
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ class PGPKeySettingTableViewController: AutoCellHeightUITableViewController {
|
|||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
pgpPublicKeyURLTextField.text = SharedDefaults[.pgpPublicKeyURL]?.absoluteString
|
||||
pgpPrivateKeyURLTextField.text = SharedDefaults[.pgpPrivateKeyURL]?.absoluteString
|
||||
pgpPublicKeyURLTextField.text = Defaults.pgpPublicKeyURL?.absoluteString
|
||||
pgpPrivateKeyURLTextField.text = Defaults.pgpPrivateKeyURL?.absoluteString
|
||||
}
|
||||
|
||||
private func validatePGPKeyURL(input: String?) -> Bool {
|
||||
|
|
@ -44,7 +44,7 @@ class PGPKeySettingTableViewController: AutoCellHeightUITableViewController {
|
|||
// no
|
||||
savePassphraseAlert.addAction(UIAlertAction(title: "No".localize(), style: UIAlertAction.Style.default) { _ in
|
||||
self.keychain.removeContent(for: Globals.pgpKeyPassphrase)
|
||||
SharedDefaults[.isRememberPGPPassphraseOn] = false
|
||||
Defaults.isRememberPGPPassphraseOn = false
|
||||
self.performSegue(withIdentifier: "savePGPKeySegue", sender: self)
|
||||
})
|
||||
// yes
|
||||
|
|
@ -53,7 +53,7 @@ class PGPKeySettingTableViewController: AutoCellHeightUITableViewController {
|
|||
let alert = UIAlertController(title: "Passphrase".localize(), message: "FillInPgpPassphrase.".localize(), preferredStyle: UIAlertController.Style.alert)
|
||||
alert.addAction(UIAlertAction(title: "Ok".localize(), style: UIAlertAction.Style.default, handler: {_ in
|
||||
self.keychain.add(string: alert.textFields?.first?.text, for: Globals.pgpKeyPassphrase)
|
||||
SharedDefaults[.isRememberPGPPassphraseOn] = true
|
||||
Defaults.isRememberPGPPassphraseOn = true
|
||||
self.performSegue(withIdentifier: "savePGPKeySegue", sender: self)
|
||||
}))
|
||||
alert.addTextField(configurationHandler: {(textField: UITextField!) in
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
|
|||
self.present(alert, animated: true, completion: nil)
|
||||
}
|
||||
let _ = sem.wait(timeout: DispatchTime.distantFuture)
|
||||
if SharedDefaults[.isRememberPGPPassphraseOn] {
|
||||
if Defaults.isRememberPGPPassphraseOn {
|
||||
self.keychain.add(string: passphrase, for: Globals.pgpKeyPassphrase)
|
||||
}
|
||||
return passphrase
|
||||
|
|
@ -144,7 +144,7 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
|
|||
self?.setTableData()
|
||||
self?.tableView.reloadData()
|
||||
self?.editUIBarButtonItem.isEnabled = true
|
||||
if !SharedDefaults[.isHidePasswordImagesOn] {
|
||||
if !Defaults.isHidePasswordImagesOn {
|
||||
if let urlString = self?.password?.urlString {
|
||||
if self?.passwordEntity?.getImage() == nil {
|
||||
self?.updatePasswordImage(urlString: urlString)
|
||||
|
|
@ -395,7 +395,7 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
|
|||
switch(tableData[sectionIndex].type) {
|
||||
case .name:
|
||||
let cell = tableView.dequeueReusableCell(withIdentifier: "passwordDetailTitleTableViewCell", for: indexPath) as! PasswordDetailTitleTableViewCell
|
||||
if !SharedDefaults[.isHidePasswordImagesOn] {
|
||||
if !Defaults.isHidePasswordImagesOn {
|
||||
cell.labelCellConstraint.isActive = false
|
||||
cell.labelImageConstraint.isActive = true
|
||||
cell.passwordImageImageView.image = passwordImage ?? #imageLiteral(resourceName: "PasswordImagePlaceHolder")
|
||||
|
|
@ -438,8 +438,8 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
|
|||
}
|
||||
|
||||
var numberOfHiddenFields = 0
|
||||
numberOfHiddenFields += SharedDefaults[.isHideUnknownOn] ? password!.numberOfUnknowns : 0
|
||||
numberOfHiddenFields += SharedDefaults[.isHideOTPOn] ? password!.numberOfOtpRelated : 0
|
||||
numberOfHiddenFields += Defaults.isHideUnknownOn ? password!.numberOfUnknowns : 0
|
||||
numberOfHiddenFields += Defaults.isHideOTPOn ? password!.numberOfOtpRelated : 0
|
||||
guard numberOfHiddenFields > 0 else {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ class PasswordEditorTableViewController: UITableViewController, FillPasswordTabl
|
|||
return fillPasswordCell!
|
||||
case .passwordLengthCell:
|
||||
passwordLengthCell = tableView.dequeueReusableCell(withIdentifier: "passwordLengthCell", for: indexPath) as? SliderTableViewCell
|
||||
let lengthSetting = PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]).defaultLength
|
||||
let lengthSetting = PasswordGeneratorFlavour.from(Defaults.passwordGeneratorFlavor).defaultLength
|
||||
let minimumLength = lengthSetting.min
|
||||
let maximumLength = lengthSetting.max
|
||||
var defaultLength = lengthSetting.def
|
||||
|
|
@ -215,7 +215,7 @@ class PasswordEditorTableViewController: UITableViewController, FillPasswordTabl
|
|||
showPasswordSettings()
|
||||
|
||||
let length = passwordLengthCell?.roundedValue ?? 0
|
||||
let plainPassword = PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]).generatePassword(length: length)
|
||||
let plainPassword = PasswordGeneratorFlavour.from(Defaults.passwordGeneratorFlavor).generatePassword(length: length)
|
||||
|
||||
// update tableData so to make sure reloadData() works correctly
|
||||
tableData[passwordSection][0][PasswordEditorCellKey.content] = plainPassword
|
||||
|
|
|
|||
|
|
@ -44,12 +44,12 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
|
|||
|
||||
private var gitCredential: GitCredential {
|
||||
get {
|
||||
switch SharedDefaults[.gitAuthenticationMethod] {
|
||||
switch Defaults.gitAuthenticationMethod {
|
||||
case .password:
|
||||
return GitCredential(credential: .http(userName: SharedDefaults[.gitUsername]))
|
||||
return GitCredential(credential: .http(userName: Defaults.gitUsername))
|
||||
case .key:
|
||||
let privateKey: String = AppKeychain.shared.get(for: SshKey.PRIVATE.getKeychainKey()) ?? ""
|
||||
return GitCredential(credential: .ssh(userName: SharedDefaults[.gitUsername], privateKey: privateKey))
|
||||
return GitCredential(credential: .ssh(userName: Defaults.gitUsername, privateKey: privateKey))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -135,7 +135,7 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
|
|||
filteredPasswordsTableEntries.removeAll()
|
||||
var passwordEntities = [PasswordEntity]()
|
||||
var passwordAllEntities = [PasswordEntity]()
|
||||
if SharedDefaults[.isShowFolderOn] {
|
||||
if Defaults.isShowFolderOn {
|
||||
passwordEntities = self.passwordStore.fetchPasswordEntityCoreData(parent: parent)
|
||||
} else {
|
||||
passwordEntities = self.passwordStore.fetchPasswordEntityCoreData(withDir: false)
|
||||
|
|
@ -230,7 +230,7 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
|
|||
override func viewDidAppear(_ animated: Bool) {
|
||||
super.viewDidAppear(animated)
|
||||
|
||||
if SharedDefaults[.isShowFolderOn] {
|
||||
if Defaults.isShowFolderOn {
|
||||
searchController.searchBar.scopeButtonTitles = SearchBarScope.allCases.map { $0.localizedName }
|
||||
} else {
|
||||
searchController.searchBar.scopeButtonTitles = nil
|
||||
|
|
@ -396,7 +396,7 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
|
|||
}
|
||||
|
||||
@objc func backAction(_ sender: Any?) {
|
||||
guard SharedDefaults[.isShowFolderOn] else { return }
|
||||
guard Defaults.isShowFolderOn else { return }
|
||||
var anim: CATransition? = transitionFromLeft
|
||||
if parentPasswordEntity == nil {
|
||||
anim = nil
|
||||
|
|
@ -464,7 +464,7 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
|
|||
self.present(alert, animated: true, completion: nil)
|
||||
}
|
||||
let _ = sem.wait(timeout: DispatchTime.distantFuture)
|
||||
if SharedDefaults[.isRememberPGPPassphraseOn] {
|
||||
if Defaults.isRememberPGPPassphraseOn {
|
||||
self.keychain.add(string: passphrase, for: Globals.pgpKeyPassphrase)
|
||||
}
|
||||
return passphrase
|
||||
|
|
@ -682,13 +682,13 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
|
|||
|
||||
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
|
||||
// update the default search scope
|
||||
SharedDefaults[.searchDefault] = SearchBarScope(rawValue: selectedScope)
|
||||
Defaults.searchDefault = SearchBarScope(rawValue: selectedScope)
|
||||
updateSearchResults(for: searchController)
|
||||
}
|
||||
|
||||
func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
|
||||
// set the default search scope to "all"
|
||||
if SharedDefaults[.isShowFolderOn] && SharedDefaults[.searchDefault] == .all {
|
||||
if Defaults.isShowFolderOn && Defaults.searchDefault == .all {
|
||||
searchController.searchBar.selectedScopeButtonIndex = SearchBarScope.all.rawValue
|
||||
} else {
|
||||
searchController.searchBar.selectedScopeButtonIndex = SearchBarScope.current.rawValue
|
||||
|
|
|
|||
|
|
@ -28,14 +28,14 @@ class SSHKeySettingTableViewController: AutoCellHeightUITableViewController {
|
|||
do {
|
||||
try Data(contentsOf: privateKeyURL).write(to: URL(fileURLWithPath: SshKey.PRIVATE.getFileSharingPath()), options: .atomic)
|
||||
try self.passwordStore.gitSSHKeyImportFromFileSharing()
|
||||
SharedDefaults[.gitSSHKeySource] = .file
|
||||
SharedDefaults[.gitAuthenticationMethod] = .key
|
||||
Defaults.gitSSHKeySource = .file
|
||||
Defaults.gitAuthenticationMethod = .key
|
||||
SVProgressHUD.showSuccess(withStatus: "Imported".localize())
|
||||
SVProgressHUD.dismiss(withDelay: 1)
|
||||
} catch {
|
||||
Utils.alert(title: "Error".localize(), message: error.localizedDescription, controller: self, completion: nil)
|
||||
}
|
||||
SharedDefaults[.gitSSHKeySource] = .url
|
||||
Defaults.gitSSHKeySource = .url
|
||||
self.navigationController!.popViewController(animated: true)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,17 +27,17 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
|
||||
@IBAction func savePGPKey(segue: UIStoryboardSegue) {
|
||||
if let controller = segue.source as? PGPKeySettingTableViewController {
|
||||
SharedDefaults[.pgpPrivateKeyURL] = URL(string: controller.pgpPrivateKeyURLTextField.text!.trimmed)
|
||||
SharedDefaults[.pgpPublicKeyURL] = URL(string: controller.pgpPublicKeyURLTextField.text!.trimmed)
|
||||
SharedDefaults[.pgpKeySource] = "url"
|
||||
Defaults.pgpPrivateKeyURL = URL(string: controller.pgpPrivateKeyURLTextField.text!.trimmed)
|
||||
Defaults.pgpPublicKeyURL = URL(string: controller.pgpPublicKeyURLTextField.text!.trimmed)
|
||||
Defaults.pgpKeySource = "url"
|
||||
|
||||
SVProgressHUD.setDefaultMaskType(.black)
|
||||
SVProgressHUD.setDefaultStyle(.light)
|
||||
SVProgressHUD.show(withStatus: "FetchingPgpKey".localize())
|
||||
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
||||
do {
|
||||
try KeyFileManager.PublicPgp.importKey(from: SharedDefaults[.pgpPublicKeyURL]!)
|
||||
try KeyFileManager.PrivatePgp.importKey(from: SharedDefaults[.pgpPrivateKeyURL]!)
|
||||
try KeyFileManager.PublicPgp.importKey(from: Defaults.pgpPublicKeyURL!)
|
||||
try KeyFileManager.PrivatePgp.importKey(from: Defaults.pgpPrivateKeyURL!)
|
||||
try PGPAgent.shared.initKeys()
|
||||
DispatchQueue.main.async {
|
||||
self.setPGPKeyTableViewCellDetailText()
|
||||
|
|
@ -54,7 +54,7 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
}
|
||||
|
||||
} else if let controller = segue.source as? PGPKeyArmorSettingTableViewController {
|
||||
SharedDefaults[.pgpKeySource] = "armor"
|
||||
Defaults.pgpKeySource = "armor"
|
||||
|
||||
SVProgressHUD.setDefaultMaskType(.black)
|
||||
SVProgressHUD.setDefaultStyle(.light)
|
||||
|
|
@ -81,7 +81,7 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
|
||||
private func saveImportedPGPKey() {
|
||||
// load keys
|
||||
SharedDefaults[.pgpKeySource] = "file"
|
||||
Defaults.pgpKeySource = "file"
|
||||
SVProgressHUD.setDefaultMaskType(.black)
|
||||
SVProgressHUD.setDefaultStyle(.light)
|
||||
SVProgressHUD.show(withStatus: "FetchingPgpKey".localize())
|
||||
|
|
@ -105,7 +105,7 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
}
|
||||
|
||||
@IBAction func saveGitServerSetting(segue: UIStoryboardSegue) {
|
||||
self.passwordRepositoryTableViewCell.detailTextLabel?.text = SharedDefaults[.gitURL].host
|
||||
self.passwordRepositoryTableViewCell.detailTextLabel?.text = Defaults.gitURL.host
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
|
|
@ -115,7 +115,7 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(SettingsTableViewController.actOnPasswordStoreErasedNotification), name: .passwordStoreErased, object: nil)
|
||||
self.passwordRepositoryTableViewCell.detailTextLabel?.text = SharedDefaults[.gitURL].host
|
||||
self.passwordRepositoryTableViewCell.detailTextLabel?.text = Defaults.gitURL.host
|
||||
setPGPKeyTableViewCellDetailText()
|
||||
setPasscodeLockCell()
|
||||
}
|
||||
|
|
@ -140,7 +140,7 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
|
||||
private func setPasswordRepositoryTableViewCellDetailText() {
|
||||
let host: String? = {
|
||||
let gitURL = SharedDefaults[.gitURL]
|
||||
let gitURL = Defaults.gitURL
|
||||
if gitURL.scheme == nil {
|
||||
return URL(string: "scheme://" + gitURL.absoluteString)?.host
|
||||
} else {
|
||||
|
|
@ -186,11 +186,11 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
var armorActionTitle = "AsciiArmorEncryptedKey".localize()
|
||||
var fileActionTitle = "ITunesFileSharing".localize()
|
||||
|
||||
if SharedDefaults[.pgpKeySource] == "url" {
|
||||
if Defaults.pgpKeySource == "url" {
|
||||
urlActionTitle = "✓ \(urlActionTitle)"
|
||||
} else if SharedDefaults[.pgpKeySource] == "armor" {
|
||||
} else if Defaults.pgpKeySource == "armor" {
|
||||
armorActionTitle = "✓ \(armorActionTitle)"
|
||||
} else if SharedDefaults[.pgpKeySource] == "file" {
|
||||
} else if Defaults.pgpKeySource == "file" {
|
||||
fileActionTitle = "✓ \(fileActionTitle)"
|
||||
}
|
||||
let urlAction = UIAlertAction(title: urlActionTitle, style: .default) { _ in
|
||||
|
|
@ -211,7 +211,7 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
// no
|
||||
savePassphraseAlert.addAction(UIAlertAction(title: "No".localize(), style: UIAlertAction.Style.default) { _ in
|
||||
self.keychain.removeContent(for: Globals.pgpKeyPassphrase)
|
||||
SharedDefaults[.isRememberPGPPassphraseOn] = false
|
||||
Defaults.isRememberPGPPassphraseOn = false
|
||||
self.saveImportedPGPKey()
|
||||
})
|
||||
// yes
|
||||
|
|
@ -220,7 +220,7 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
let alert = UIAlertController(title: "Passphrase".localize(), message: "FillInPgpPassphrase.".localize(), preferredStyle: UIAlertController.Style.alert)
|
||||
alert.addAction(UIAlertAction(title: "Ok".localize(), style: UIAlertAction.Style.default, handler: {_ in
|
||||
self.keychain.add(string: alert.textFields?.first?.text, for: Globals.pgpKeyPassphrase)
|
||||
SharedDefaults[.isRememberPGPPassphraseOn] = true
|
||||
Defaults.isRememberPGPPassphraseOn = true
|
||||
self.saveImportedPGPKey()
|
||||
}))
|
||||
alert.addTextField(configurationHandler: {(textField: UITextField!) in
|
||||
|
|
@ -243,7 +243,7 @@ class SettingsTableViewController: UITableViewController, UITabBarControllerDele
|
|||
}
|
||||
|
||||
|
||||
if SharedDefaults[.pgpKeySource] != nil {
|
||||
if Defaults.pgpKeySource != nil {
|
||||
let deleteAction = UIAlertAction(title: "RemovePgpKeys".localize(), style: .destructive) { _ in
|
||||
self.keychain.removeContent(for: PgpKey.PUBLIC.getKeychainKey())
|
||||
self.keychain.removeContent(for: PgpKey.PRIVATE.getKeychainKey())
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ class CredentialProviderViewController: ASCredentialProviderViewController, UITa
|
|||
self.present(alert, animated: true, completion: nil)
|
||||
}
|
||||
let _ = sem.wait(timeout: DispatchTime.distantFuture)
|
||||
if SharedDefaults[.isRememberPGPPassphraseOn] {
|
||||
if Defaults.isRememberPGPPassphraseOn {
|
||||
self.keychain.add(string: passphrase, for: Globals.pgpKeyPassphrase)
|
||||
}
|
||||
return passphrase
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ class ExtensionViewController: UIViewController, UITableViewDataSource, UITableV
|
|||
self.present(alert, animated: true, completion: nil)
|
||||
}
|
||||
let _ = sem.wait(timeout: DispatchTime.distantFuture)
|
||||
if SharedDefaults[.isRememberPGPPassphraseOn] {
|
||||
if Defaults.isRememberPGPPassphraseOn {
|
||||
self.keychain.add(string: passphrase, for: Globals.pgpKeyPassphrase)
|
||||
}
|
||||
return passphrase
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ struct GopenPgp: PgpInterface {
|
|||
|
||||
func encrypt(plainData: Data) throws -> Data {
|
||||
let encryptedData = try publicKey.encrypt(CryptoNewPlainMessage(plainData.mutable as Data), privateKey: nil)
|
||||
if SharedDefaults[.encryptInArmored] {
|
||||
if Defaults.encryptInArmored {
|
||||
var error: NSError?
|
||||
let armor = encryptedData.getArmored(&error)
|
||||
guard error == nil else {
|
||||
|
|
@ -66,7 +66,7 @@ struct GopenPgp: PgpInterface {
|
|||
|
||||
private func createPgpMessage(from encryptedData: Data) -> CryptoPGPMessage? {
|
||||
// Important note:
|
||||
// Even if SharedDefaults[.encryptInArmored] is true now, it could be different during the encryption.
|
||||
// Even if Defaults.encryptInArmored is true now, it could be different during the encryption.
|
||||
var error: NSError?
|
||||
let message = CryptoNewPGPMessageFromArmored(String(data: encryptedData, encoding: .ascii), &error)
|
||||
if error == nil {
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ struct ObjectivePgp: PgpInterface {
|
|||
|
||||
func encrypt(plainData: Data) throws -> Data {
|
||||
let encryptedData = try ObjectivePGP.encrypt(plainData, addSignature: false, using: keyring.keys, passphraseForKey: nil)
|
||||
if SharedDefaults[.encryptInArmored] {
|
||||
if Defaults.encryptInArmored {
|
||||
return Armor.armored(encryptedData, as: .message).data(using: .ascii)!
|
||||
}
|
||||
return encryptedData
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
import Foundation
|
||||
import SwiftyUserDefaults
|
||||
|
||||
public var SharedDefaults = UserDefaults(suiteName: Globals.groupIdentifier)!
|
||||
public var Defaults = DefaultsAdapter(defaults: UserDefaults(suiteName: Globals.groupIdentifier)!, keyStore: DefaultsKeys())
|
||||
|
||||
public enum GitAuthenticationMethod: String, DefaultsSerializable {
|
||||
case password, key
|
||||
|
|
@ -20,37 +20,37 @@ public enum GitSSHKeySource: String, DefaultsSerializable {
|
|||
}
|
||||
|
||||
public extension DefaultsKeys {
|
||||
static let pgpKeySource = DefaultsKey<String?>("pgpKeySource")
|
||||
static let pgpPublicKeyURL = DefaultsKey<URL?>("pgpPublicKeyURL")
|
||||
static let pgpPrivateKeyURL = DefaultsKey<URL?>("pgpPrivateKeyURL")
|
||||
var pgpKeySource: DefaultsKey<String?> { .init("pgpKeySource") }
|
||||
var pgpPublicKeyURL: DefaultsKey<URL?> { .init("pgpPublicKeyURL") }
|
||||
var pgpPrivateKeyURL: DefaultsKey<URL?> { .init("pgpPrivateKeyURL") }
|
||||
|
||||
// Keep them for legacy reasons.
|
||||
static let pgpPublicKeyArmor = DefaultsKey<String?>("pgpPublicKeyArmor")
|
||||
static let pgpPrivateKeyArmor = DefaultsKey<String?>("pgpPrivateKeyArmor")
|
||||
static let gitSSHPrivateKeyArmor = DefaultsKey<String?>("gitSSHPrivateKeyArmor")
|
||||
static let passcodeKey = DefaultsKey<String?>("passcodeKey")
|
||||
var pgpPublicKeyArmor: DefaultsKey<String?> { .init("pgpPublicKeyArmor") }
|
||||
var pgpPrivateKeyArmor: DefaultsKey<String?> { .init("pgpPrivateKeyArmor") }
|
||||
var gitSSHPrivateKeyArmor: DefaultsKey<String?> { .init("gitSSHPrivateKeyArmor") }
|
||||
var passcodeKey: DefaultsKey<String?> { .init("passcodeKey") }
|
||||
|
||||
static let gitURL = DefaultsKey<URL>("gitURL", defaultValue: URL(string: "https://")!)
|
||||
static let gitAuthenticationMethod = DefaultsKey<GitAuthenticationMethod>("gitAuthenticationMethod", defaultValue: GitAuthenticationMethod.password)
|
||||
static let gitUsername = DefaultsKey<String>("gitUsername", defaultValue: "git")
|
||||
static let gitBranchName = DefaultsKey<String>("gitBranchName", defaultValue: "master")
|
||||
static let gitSSHPrivateKeyURL = DefaultsKey<URL?>("gitSSHPrivateKeyURL")
|
||||
static let gitSSHKeySource = DefaultsKey<GitSSHKeySource?>("gitSSHKeySource")
|
||||
static let gitSignatureName = DefaultsKey<String?>("gitSignatureName")
|
||||
static let gitSignatureEmail = DefaultsKey<String?>("gitSignatureEmail")
|
||||
var gitURL: DefaultsKey<URL> { .init("gitURL", defaultValue: URL(string: "https://")!) }
|
||||
var gitAuthenticationMethod: DefaultsKey<GitAuthenticationMethod> { .init("gitAuthenticationMethod", defaultValue: GitAuthenticationMethod.password) }
|
||||
var gitUsername: DefaultsKey<String> { .init("gitUsername", defaultValue: "git") }
|
||||
var gitBranchName: DefaultsKey<String> { .init("gitBranchName", defaultValue: "master") }
|
||||
var gitSSHPrivateKeyURL: DefaultsKey<URL?> { .init("gitSSHPrivateKeyURL") }
|
||||
var gitSSHKeySource: DefaultsKey<GitSSHKeySource?> { .init("gitSSHKeySource") }
|
||||
var gitSignatureName: DefaultsKey<String?> { .init("gitSignatureName") }
|
||||
var gitSignatureEmail: DefaultsKey<String?> { .init("gitSignatureEmail") }
|
||||
|
||||
static let lastSyncedTime = DefaultsKey<Date?>("lastSyncedTime")
|
||||
var lastSyncedTime: DefaultsKey<Date?> { .init("lastSyncedTime") }
|
||||
|
||||
static let isTouchIDOn = DefaultsKey<Bool>("isTouchIDOn", defaultValue: false)
|
||||
var isTouchIDOn: DefaultsKey<Bool> { .init("isTouchIDOn", defaultValue: false) }
|
||||
|
||||
static let isHideUnknownOn = DefaultsKey<Bool>("isHideUnknownOn", defaultValue: false)
|
||||
static let isHideOTPOn = DefaultsKey<Bool>("isHideOTPOn", defaultValue: false)
|
||||
static let isRememberPGPPassphraseOn = DefaultsKey<Bool>("isRememberPGPPassphraseOn", defaultValue: false)
|
||||
static let isRememberGitCredentialPassphraseOn = DefaultsKey<Bool>("isRememberGitCredentialPassphraseOn", defaultValue: false)
|
||||
static let isShowFolderOn = DefaultsKey<Bool>("isShowFolderOn", defaultValue: true)
|
||||
static let isHidePasswordImagesOn = DefaultsKey<Bool>("isHidePasswordImagesOn", defaultValue: false)
|
||||
static let searchDefault = DefaultsKey<SearchBarScope?>("searchDefault", defaultValue: .all)
|
||||
static let passwordGeneratorFlavor = DefaultsKey<String>("passwordGeneratorFlavor", defaultValue: "Apple")
|
||||
var isHideUnknownOn: DefaultsKey<Bool> { .init("isHideUnknownOn", defaultValue: false) }
|
||||
var isHideOTPOn: DefaultsKey<Bool> { .init("isHideOTPOn", defaultValue: false) }
|
||||
var isRememberPGPPassphraseOn: DefaultsKey<Bool> { .init("isRememberPGPPassphraseOn", defaultValue: false) }
|
||||
var isRememberGitCredentialPassphraseOn: DefaultsKey<Bool> { .init("isRememberGitCredentialPassphraseOn", defaultValue: false) }
|
||||
var isShowFolderOn: DefaultsKey<Bool> { .init("isShowFolderOn", defaultValue: true) }
|
||||
var isHidePasswordImagesOn: DefaultsKey<Bool> { .init("isHidePasswordImagesOn", defaultValue: false) }
|
||||
var searchDefault: DefaultsKey<SearchBarScope?> { .init("searchDefault", defaultValue: .all) }
|
||||
var passwordGeneratorFlavor: DefaultsKey<String> { .init("passwordGeneratorFlavor", defaultValue: "Apple") }
|
||||
|
||||
static let encryptInArmored = DefaultsKey<Bool>("encryptInArmored", defaultValue: false)
|
||||
var encryptInArmored: DefaultsKey<Bool> { .init("encryptInArmored", defaultValue: false) }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public struct GitCredential {
|
|||
var lastPassword = self.passwordStore.gitPassword
|
||||
if lastPassword == nil || attempts != 0 {
|
||||
if let requestedPassword = requestCredentialPassword(self.credential, lastPassword) {
|
||||
if SharedDefaults[.isRememberGitCredentialPassphraseOn] {
|
||||
if Defaults.isRememberGitCredentialPassphraseOn {
|
||||
self.passwordStore.gitPassword = requestedPassword
|
||||
}
|
||||
lastPassword = requestedPassword
|
||||
|
|
@ -54,7 +54,7 @@ public struct GitCredential {
|
|||
var lastPassword = self.passwordStore.gitSSHPrivateKeyPassphrase
|
||||
if lastPassword == nil || attempts != 0 {
|
||||
if let requestedPassword = requestCredentialPassword(self.credential, lastPassword) {
|
||||
if SharedDefaults[.isRememberGitCredentialPassphraseOn] {
|
||||
if Defaults.isRememberGitCredentialPassphraseOn {
|
||||
self.passwordStore.gitSSHPrivateKeyPassphrase = requestedPassword
|
||||
}
|
||||
lastPassword = requestedPassword
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@ public class PasscodeLock {
|
|||
|
||||
/// Constructor used to migrate passcode from SharedDefaults to Keychain
|
||||
private init() {
|
||||
if let passcode = SharedDefaults[.passcodeKey] {
|
||||
if let passcode = Defaults.passcodeKey {
|
||||
save(passcode: passcode)
|
||||
SharedDefaults[.passcodeKey] = nil
|
||||
Defaults.passcodeKey = nil
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -124,8 +124,8 @@ public class Password {
|
|||
return title != Constants.USERNAME_KEYWORD
|
||||
&& title != Constants.LOGIN_KEYWORD
|
||||
&& title != Constants.PASSWORD_KEYWORD
|
||||
&& (!Constants.isUnknown(title) || !SharedDefaults[.isHideUnknownOn])
|
||||
&& (!Constants.isOtpKeyword(title) || !SharedDefaults[.isHideOTPOn])
|
||||
&& (!Constants.isUnknown(title) || !Defaults.isHideUnknownOn)
|
||||
&& (!Constants.isOtpKeyword(title) || !Defaults.isHideOTPOn)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ public class PasswordStore {
|
|||
|
||||
public var gitSignatureForNow: GTSignature? {
|
||||
get {
|
||||
let gitSignatureName = SharedDefaults[.gitSignatureName] ?? Globals.gitSignatureDefaultName
|
||||
let gitSignatureEmail = SharedDefaults[.gitSignatureEmail] ?? Globals.gitSignatureDefaultEmail
|
||||
let gitSignatureName = Defaults.gitSignatureName ?? Globals.gitSignatureDefaultName
|
||||
let gitSignatureEmail = Defaults.gitSignatureEmail ?? Globals.gitSignatureDefaultEmail
|
||||
return GTSignature(name: gitSignatureName, email: gitSignatureEmail, time: Date())
|
||||
}
|
||||
}
|
||||
|
|
@ -94,7 +94,7 @@ public class PasswordStore {
|
|||
}
|
||||
|
||||
public var lastSyncedTime: Date? {
|
||||
return SharedDefaults[.lastSyncedTime]
|
||||
return Defaults.lastSyncedTime
|
||||
}
|
||||
|
||||
public var numberOfCommits: UInt? {
|
||||
|
|
@ -119,9 +119,9 @@ public class PasswordStore {
|
|||
try? KeyFileManager(keyType: PgpKey.PUBLIC, keyPath: Globals.pgpPublicKeyPath).importKeyFromFileSharing()
|
||||
try? KeyFileManager(keyType: PgpKey.PRIVATE, keyPath: Globals.pgpPrivateKeyPath).importKeyFromFileSharing()
|
||||
try? KeyFileManager(keyType: SshKey.PRIVATE, keyPath: Globals.gitSSHPrivateKeyPath).importKeyFromFileSharing()
|
||||
SharedDefaults.remove(.pgpPublicKeyArmor)
|
||||
SharedDefaults.remove(.pgpPrivateKeyArmor)
|
||||
SharedDefaults.remove(.gitSSHPrivateKeyArmor)
|
||||
Defaults.remove(\.pgpPublicKeyArmor)
|
||||
Defaults.remove(\.pgpPrivateKeyArmor)
|
||||
Defaults.remove(\.gitSSHPrivateKeyArmor)
|
||||
}
|
||||
|
||||
public func initGitSSHKey(with armorKey: String) throws {
|
||||
|
|
@ -197,14 +197,14 @@ public class PasswordStore {
|
|||
}
|
||||
} catch {
|
||||
credential.delete()
|
||||
SharedDefaults[.lastSyncedTime] = nil
|
||||
Defaults.lastSyncedTime = nil
|
||||
DispatchQueue.main.async {
|
||||
self.deleteCoreData(entityName: "PasswordEntity")
|
||||
NotificationCenter.default.post(name: .passwordStoreUpdated, object: nil)
|
||||
}
|
||||
throw(error)
|
||||
}
|
||||
SharedDefaults[.lastSyncedTime] = Date()
|
||||
Defaults.lastSyncedTime = Date()
|
||||
DispatchQueue.main.async {
|
||||
self.updatePasswordEntityCoreData()
|
||||
NotificationCenter.default.post(name: .passwordStoreUpdated, object: nil)
|
||||
|
|
@ -237,7 +237,7 @@ public class PasswordStore {
|
|||
let options = [GTRepositoryRemoteOptionsCredentialProvider: credentialProvider]
|
||||
let remote = try GTRemote(name: "origin", in: storeRepository)
|
||||
try storeRepository.pull(storeRepository.currentBranch(), from: remote, withOptions: options, progress: progressBlock)
|
||||
SharedDefaults[.lastSyncedTime] = Date()
|
||||
Defaults.lastSyncedTime = Date()
|
||||
self.setAllSynced()
|
||||
self.updatePasswordEntityCoreData()
|
||||
DispatchQueue.main.async {
|
||||
|
|
@ -453,7 +453,7 @@ public class PasswordStore {
|
|||
do {
|
||||
let credentialProvider = try credential.credentialProvider(requestCredentialPassword: requestCredentialPassword)
|
||||
let options = [GTRepositoryRemoteOptionsCredentialProvider: credentialProvider]
|
||||
if let branch = try getLocalBranch(withName: SharedDefaults[.gitBranchName]) {
|
||||
if let branch = try getLocalBranch(withName: Defaults.gitBranchName) {
|
||||
let remote = try GTRemote(name: "origin", in: storeRepository)
|
||||
try storeRepository.push(branch, to: remote, withOptions: options, progress: transferProgressBlock)
|
||||
}
|
||||
|
|
@ -620,7 +620,7 @@ public class PasswordStore {
|
|||
deleteCoreData(entityName: "PasswordEntity")
|
||||
|
||||
// Delete default settings.
|
||||
SharedDefaults.removeAll()
|
||||
Defaults.removeAll()
|
||||
|
||||
// Clean up variables inside PasswordStore.
|
||||
storeRepository = nil
|
||||
|
|
@ -666,7 +666,7 @@ public class PasswordStore {
|
|||
throw AppError.RepositoryNotSet
|
||||
}
|
||||
// get the remote branch
|
||||
let remoteBranchName = SharedDefaults[.gitBranchName]
|
||||
let remoteBranchName = Defaults.gitBranchName
|
||||
guard let remoteBranch = try storeRepository.remoteBranches().first(where: { $0.shortName == remoteBranchName }) else {
|
||||
throw AppError.RepositoryRemoteBranchNotFound(remoteBranchName)
|
||||
}
|
||||
|
|
@ -696,9 +696,9 @@ public class PasswordStore {
|
|||
|
||||
public func removeGitSSHKeys() {
|
||||
try? fm.removeItem(atPath: Globals.gitSSHPrivateKeyPath)
|
||||
Defaults.remove(.gitSSHKeySource)
|
||||
Defaults.remove(.gitSSHPrivateKeyArmor)
|
||||
Defaults.remove(.gitSSHPrivateKeyURL)
|
||||
Defaults.remove(\.gitSSHKeySource)
|
||||
Defaults.remove(\.gitSSHPrivateKeyArmor)
|
||||
Defaults.remove(\.gitSSHPrivateKeyURL)
|
||||
AppKeychain.shared.removeContent(for: SshKey.PRIVATE.getKeychainKey())
|
||||
gitSSHPrivateKeyPassphrase = nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,9 +12,6 @@ import SwiftyUserDefaults
|
|||
@testable import passKit
|
||||
|
||||
class PGPAgentTest: XCTestCase {
|
||||
enum ValidationError: Error {
|
||||
case emptyName
|
||||
}
|
||||
private var keychain: KeyStore!
|
||||
private var pgpAgent: PGPAgent!
|
||||
|
||||
|
|
@ -25,7 +22,7 @@ class PGPAgentTest: XCTestCase {
|
|||
keychain = DictBasedKeychain()
|
||||
pgpAgent = PGPAgent(keyStore: keychain)
|
||||
UserDefaults().removePersistentDomain(forName: "SharedDefaultsForPGPAgentTest")
|
||||
SharedDefaults = UserDefaults(suiteName: "SharedDefaultsForPGPAgentTest")!
|
||||
passKit.Defaults = DefaultsAdapter(defaults: UserDefaults(suiteName: "SharedDefaultsForPGPAgentTest")!, keyStore: DefaultsKeys())
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
|
|
@ -35,9 +32,9 @@ class PGPAgentTest: XCTestCase {
|
|||
}
|
||||
|
||||
func basicEncryptDecrypt(using pgpAgent: PGPAgent, requestPassphrase: () -> String = requestPGPKeyPassphrase, encryptInArmored: Bool = true, encryptInArmoredNow: Bool = true) throws -> Data? {
|
||||
SharedDefaults[.encryptInArmored] = encryptInArmored
|
||||
passKit.Defaults.encryptInArmored = encryptInArmored
|
||||
let encryptedData = try pgpAgent.encrypt(plainData: testData)
|
||||
SharedDefaults[.encryptInArmored] = encryptInArmoredNow
|
||||
passKit.Defaults.encryptInArmored = encryptInArmoredNow
|
||||
return try pgpAgent.decrypt(encryptedData: encryptedData, requestPGPKeyPassphrase: requestPassphrase)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue