From 649d7093699b64c48e5f8088012417651a87e3a6 Mon Sep 17 00:00:00 2001 From: Bob Sun Date: Thu, 27 Apr 2017 22:48:11 -0700 Subject: [PATCH] Correct git signature logic --- pass.xcodeproj/project.pbxproj | 8 ++++---- .../AdvancedSettingsTableViewController.swift | 19 ++++++++++--------- .../GitConfigSettingTableViewController.swift | 18 ++++++------------ pass/Helpers/DefaultsKeys.swift | 4 ++-- pass/Helpers/Globals.swift | 3 +++ pass/Models/PasswordStore.swift | 11 +++-------- 6 files changed, 28 insertions(+), 35 deletions(-) diff --git a/pass.xcodeproj/project.pbxproj b/pass.xcodeproj/project.pbxproj index 327db9a..7652f77 100644 --- a/pass.xcodeproj/project.pbxproj +++ b/pass.xcodeproj/project.pbxproj @@ -85,7 +85,7 @@ /* Begin PBXFileReference section */ 274CCFCF32444A2FF46BE7F4 /* Pods-pass.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-pass.debug.xcconfig"; path = "Pods/Target Support Files/Pods-pass/Pods-pass.debug.xcconfig"; sourceTree = ""; }; A217ACE11E9AB17C00A1A6CF /* OTPScannerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OTPScannerController.swift; sourceTree = ""; }; - A217ACE31E9BBBBD00A1A6CF /* GitConfigSettingTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GitConfigSettingTableViewController.swift; sourceTree = ""; }; + A217ACE31E9BBBBD00A1A6CF /* GitConfigSettingTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = GitConfigSettingTableViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; A262A58C1E68749C006B0890 /* Base32.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base32.framework; path = Carthage/Build/iOS/Base32.framework; sourceTree = ""; }; A27424D81E7C35960093F436 /* NotificationNames.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationNames.swift; sourceTree = ""; }; A2802BF71E70813A00879216 /* SliderTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SliderTableViewCell.swift; sourceTree = ""; }; @@ -109,7 +109,7 @@ DC13B14E1E8640810097803F /* passTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = passTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DC13B1501E8640810097803F /* passTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = passTests.swift; sourceTree = ""; }; DC13B1521E8640810097803F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DC193FF91E49B4430077E0A3 /* AdvancedSettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvancedSettingsTableViewController.swift; sourceTree = ""; }; + DC193FF91E49B4430077E0A3 /* AdvancedSettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = AdvancedSettingsTableViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; DC193FFB1E49E0340077E0A3 /* PasscodeLock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PasscodeLock.framework; path = Carthage/Build/iOS/PasscodeLock.framework; sourceTree = ""; }; DC193FFD1E49E0760077E0A3 /* PasscodeLockRepository.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeLockRepository.swift; sourceTree = ""; }; DC193FFF1E49E1A60077E0A3 /* PasscodeLockConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeLockConfiguration.swift; sourceTree = ""; }; @@ -130,14 +130,14 @@ DC917BE21E2E8231000FDF54 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; DC962CDE1E4B62C10033B5D8 /* AboutTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutTableViewController.swift; sourceTree = ""; }; DCA049951E3357E000522E8F /* SwiftyUserDefaults.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyUserDefaults.framework; path = Carthage/Build/iOS/SwiftyUserDefaults.framework; sourceTree = ""; }; - DCA049971E33586A00522E8F /* DefaultsKeys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultsKeys.swift; sourceTree = ""; }; + DCA049971E33586A00522E8F /* DefaultsKeys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = DefaultsKeys.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; DCA049991E335CC800522E8F /* GitServerSettingTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GitServerSettingTableViewController.swift; sourceTree = ""; }; DCA0499B1E3362F400522E8F /* PGPKeySettingTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PGPKeySettingTableViewController.swift; sourceTree = ""; }; DCA0499D1E33BAC100522E8F /* Globals.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Globals.swift; sourceTree = ""; }; DCA671DE1E7A73B100D3ABE1 /* OneTimePassword.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OneTimePassword.framework; path = Carthage/Build/iOS/OneTimePassword.framework; sourceTree = ""; }; DCA742D91E599ED400D54E16 /* KeychainAccess.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = KeychainAccess.framework; path = Carthage/Build/iOS/KeychainAccess.framework; sourceTree = ""; }; DCAAF7441E2FA66800AB94BC /* SettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewController.swift; sourceTree = ""; }; - DCC408A31E2FCC9E00F29B0E /* PasswordStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasswordStore.swift; sourceTree = ""; }; + DCC408A31E2FCC9E00F29B0E /* PasswordStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = PasswordStore.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; DCC408C61E307DBB00F29B0E /* SVProgressHUD.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SVProgressHUD.framework; path = Carthage/Build/iOS/SVProgressHUD.framework; sourceTree = ""; }; DCC408C91E30BA1300F29B0E /* pass.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = pass.xcdatamodel; sourceTree = ""; }; DCC441511E8F6C06008A90C4 /* RawPasswordViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RawPasswordViewController.swift; sourceTree = ""; }; diff --git a/pass/Controllers/AdvancedSettingsTableViewController.swift b/pass/Controllers/AdvancedSettingsTableViewController.swift index a03f529..ee2fd8a 100644 --- a/pass/Controllers/AdvancedSettingsTableViewController.swift +++ b/pass/Controllers/AdvancedSettingsTableViewController.swift @@ -35,11 +35,12 @@ class AdvancedSettingsTableViewController: UITableViewController { } private func setGitSignatureText() { - if let gitConfigUserName = Defaults[.gitConfigUserName], - let gitConfigUserEmail = Defaults[.gitConfigUserEmail] { - self.gitSignatureTableViewCell.detailTextLabel?.font = UIFont.systemFont(ofSize: 14) - self.gitSignatureTableViewCell.detailTextLabel?.text = "\(gitConfigUserName) <\(gitConfigUserEmail)>" - } else { + let gitSignatureName = passwordStore.gitSignatureForNow.name! + let gitSignatureEmail = passwordStore.gitSignatureForNow.email! + self.gitSignatureTableViewCell.detailTextLabel?.font = UIFont.systemFont(ofSize: 14) + self.gitSignatureTableViewCell.detailTextLabel?.text = "\(gitSignatureName) <\(gitSignatureEmail)>" + if Defaults[.gitSignatureName] == nil && Defaults[.gitSignatureEmail] == nil { + self.gitSignatureTableViewCell.detailTextLabel?.font = UIFont.systemFont(ofSize: 17) gitSignatureTableViewCell.detailTextLabel?.text = "Not Set" } } @@ -92,10 +93,10 @@ class AdvancedSettingsTableViewController: UITableViewController { @IBAction func saveGitConfigSetting(segue: UIStoryboardSegue) { if let controller = segue.source as? GitConfigSettingTableViewController { - if let gitConfigUserName = controller.nameTextField.text, - let gitConfigUserEmail = controller.emailTextField.text { - Defaults[.gitConfigUserName] = gitConfigUserName - Defaults[.gitConfigUserEmail] = gitConfigUserEmail + if let gitSignatureName = controller.nameTextField.text, + let gitSignatureEmail = controller.emailTextField.text { + Defaults[.gitSignatureName] = gitSignatureName.isEmpty ? nil : gitSignatureName + Defaults[.gitSignatureEmail] = gitSignatureEmail.isEmpty ? nil : gitSignatureEmail } setGitSignatureText() } diff --git a/pass/Controllers/GitConfigSettingTableViewController.swift b/pass/Controllers/GitConfigSettingTableViewController.swift index 49ec9d4..cc7d23e 100644 --- a/pass/Controllers/GitConfigSettingTableViewController.swift +++ b/pass/Controllers/GitConfigSettingTableViewController.swift @@ -22,22 +22,16 @@ class GitConfigSettingTableViewController: UITableViewController { let signature = passwordStore.gitSignatureForNow nameTextField.placeholder = signature.name emailTextField.placeholder = signature.email - - if let gitConfigUserName = Defaults[.gitConfigUserName], - let gitConfigUserEmail = Defaults[.gitConfigUserEmail] { - nameTextField.text = gitConfigUserName - emailTextField.text = gitConfigUserEmail - } + nameTextField.text = Defaults[.gitSignatureName] + emailTextField.text = Defaults[.gitSignatureEmail] } override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool { if identifier == "saveGitConfigSettingSegue" { - guard let name = nameTextField.text?.trimmingCharacters(in: .whitespaces), !name.isEmpty else { - Utils.alert(title: "Cannot Save", message: "Please set name first.", controller: self, completion: nil) - return false - } - guard let email = emailTextField.text?.trimmingCharacters(in: .whitespaces), !email.isEmpty else { - Utils.alert(title: "Cannot Save", message: "Please set email first.", controller: self, completion: nil) + let name = nameTextField.text!.isEmpty ? Globals.gitSignatureDefaultName : nameTextField.text! + let email = emailTextField.text!.isEmpty ? Globals.gitSignatureDefaultEmail : nameTextField.text! + guard GTSignature(name: name, email: email, time: nil) != nil else { + Utils.alert(title: "Error", message: "Invalid name or email.", controller: self, completion: nil) return false } } diff --git a/pass/Helpers/DefaultsKeys.swift b/pass/Helpers/DefaultsKeys.swift index 9b4db16..3de6fdf 100644 --- a/pass/Helpers/DefaultsKeys.swift +++ b/pass/Helpers/DefaultsKeys.swift @@ -26,8 +26,8 @@ extension DefaultsKeys { static let gitSSHKeySource = DefaultsKey("gitSSHKeySource") static let gitSSHPublicKeyArmor = DefaultsKey("gitSSHPublicKeyArmor") static let gitSSHPrivateKeyArmor = DefaultsKey("gitSSHPrivateKeyArmor") - static let gitConfigUserName = DefaultsKey("gitConfigUserName") - static let gitConfigUserEmail = DefaultsKey("gitConfigUserEmail") + static let gitSignatureName = DefaultsKey("gitSignatureName") + static let gitSignatureEmail = DefaultsKey("gitSignatureEmail") static let lastSyncedTime = DefaultsKey("lastSyncedTime") diff --git a/pass/Helpers/Globals.swift b/pass/Helpers/Globals.swift index 0551b04..c4980f4 100644 --- a/pass/Helpers/Globals.swift +++ b/pass/Helpers/Globals.swift @@ -26,6 +26,9 @@ class Globals { static let passwordDefaultLength = ["Random": (min: 6, max: 24, def: 16), "Apple": (min: 15, max: 15, def: 15)] + static let gitSignatureDefaultName = "Pass for iOS" + static let gitSignatureDefaultEmail = "user@passforios" + static let passwordDots = "••••••••••••" static let oneTimePasswordDots = "••••••" static let passwordFonts = "Menlo" diff --git a/pass/Models/PasswordStore.swift b/pass/Models/PasswordStore.swift index 1ebea5c..a91c6fb 100644 --- a/pass/Models/PasswordStore.swift +++ b/pass/Models/PasswordStore.swift @@ -84,14 +84,9 @@ class PasswordStore { var gitSignatureForNow: GTSignature { get { - if let gitConfigUserName = Defaults[.gitConfigUserName], - let gitConfigUserEmail = Defaults[.gitConfigUserEmail] { - return GTSignature(name: gitConfigUserName, email: gitConfigUserEmail, time: Date())! - } else { - let name = Defaults[.gitUsername] ?? "user" - let email = (Defaults[.gitUsername] ?? "user") + "@passforios" - return GTSignature(name: name, email: email, time: Date())! - } + let gitSignatureName = Defaults[.gitSignatureName] ?? Globals.gitSignatureDefaultName + let gitSignatureEmail = Defaults[.gitSignatureEmail] ?? Globals.gitSignatureDefaultEmail + return GTSignature(name: gitSignatureName, email: gitSignatureEmail, time: Date())! } }