Use PasswordGeneratorFlavor class to set user defaults and UI elements

This commit is contained in:
Danny Moesch 2019-01-14 20:24:56 +01:00 committed by Mingshen Sun
parent 857a8f44bf
commit 2d5ca58bd9
6 changed files with 19 additions and 8 deletions

View file

@ -20,7 +20,7 @@ class AddPasswordTableViewController: PasswordEditorTableViewController {
[[.type: PasswordEditorCellType.additionsCell, .title: "additions"]], [[.type: PasswordEditorCellType.additionsCell, .title: "additions"]],
[[.type: PasswordEditorCellType.scanQRCodeCell]] [[.type: PasswordEditorCellType.scanQRCodeCell]]
] ]
if PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]) == PasswordGeneratorFlavour.RANDOM { if PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]) == .RANDOM {
tableData[1].append([.type: PasswordEditorCellType.passwordLengthCell, .title: "passwordlength"]) tableData[1].append([.type: PasswordEditorCellType.passwordLengthCell, .title: "passwordlength"])
} }
tableData[1].append([.type: PasswordEditorCellType.memorablePasswordGeneratorCell]) tableData[1].append([.type: PasswordEditorCellType.memorablePasswordGeneratorCell])

View file

@ -18,7 +18,7 @@ class EditPasswordTableViewController: PasswordEditorTableViewController {
[[.type: PasswordEditorCellType.scanQRCodeCell], [[.type: PasswordEditorCellType.scanQRCodeCell],
[.type: PasswordEditorCellType.deletePasswordCell]] [.type: PasswordEditorCellType.deletePasswordCell]]
] ]
if PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]) == PasswordGeneratorFlavour.RANDOM { if PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]) == .RANDOM {
tableData[1].append([.type: PasswordEditorCellType.passwordLengthCell, .title: "passwordlength"]) tableData[1].append([.type: PasswordEditorCellType.passwordLengthCell, .title: "passwordlength"])
} }
tableData[1].append([.type: PasswordEditorCellType.memorablePasswordGeneratorCell]) tableData[1].append([.type: PasswordEditorCellType.memorablePasswordGeneratorCell])

View file

@ -122,7 +122,7 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
cell.accessoryView = showFolderSwitch cell.accessoryView = showFolderSwitch
case "Password Generator Flavor": case "Password Generator Flavor":
cell.accessoryType = .disclosureIndicator cell.accessoryType = .disclosureIndicator
cell.detailTextLabel?.text = SharedDefaults[.passwordGeneratorFlavor] cell.detailTextLabel?.text = PasswordGeneratorFlavour.from(SharedDefaults[.passwordGeneratorFlavor]).name
default: break default: break
} }
return cell return cell
@ -141,21 +141,21 @@ class GeneralSettingsTableViewController: BasicStaticTableViewController {
let optionMenu = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) let optionMenu = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
var randomFlavorActionTitle = "" var randomFlavorActionTitle = ""
var appleFlavorActionTitle = "" var appleFlavorActionTitle = ""
if SharedDefaults[.passwordGeneratorFlavor] == "Random" {
randomFlavorActionTitle = "✓ Random String" randomFlavorActionTitle = "✓ Random String"
appleFlavorActionTitle = "Apple's Keychain Style" appleFlavorActionTitle = "Apple's Keychain Style"
if SharedDefaults[.passwordGeneratorFlavor] == PasswordGeneratorFlavour.RANDOM.rawValue {
} else { } else {
randomFlavorActionTitle = "Random String" randomFlavorActionTitle = "Random String"
appleFlavorActionTitle = "✓ Apple's Keychain Style" appleFlavorActionTitle = "✓ Apple's Keychain Style"
} }
let randomFlavorAction = UIAlertAction(title: randomFlavorActionTitle, style: .default) { _ in let randomFlavorAction = UIAlertAction(title: randomFlavorActionTitle, style: .default) { _ in
SharedDefaults[.passwordGeneratorFlavor] = "Random" SharedDefaults[.passwordGeneratorFlavor] = PasswordGeneratorFlavour.RANDOM.rawValue
sourceCell.detailTextLabel?.text = "Random" sourceCell.detailTextLabel?.text = PasswordGeneratorFlavour.RANDOM.name
} }
let appleFlavorAction = UIAlertAction(title: appleFlavorActionTitle, style: .default) { _ in let appleFlavorAction = UIAlertAction(title: appleFlavorActionTitle, style: .default) { _ in
SharedDefaults[.passwordGeneratorFlavor] = "Apple" SharedDefaults[.passwordGeneratorFlavor] = PasswordGeneratorFlavour.APPLE.rawValue
sourceCell.detailTextLabel?.text = "Apple" sourceCell.detailTextLabel?.text = PasswordGeneratorFlavour.APPLE.name
} }
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)

View file

@ -6,3 +6,5 @@
Copyright © 2019 Bob Sun. All rights reserved. Copyright © 2019 Bob Sun. All rights reserved.
*/ */
"Apple" = "Apple";
"Random" = "Random";

View file

@ -18,6 +18,10 @@ public enum PasswordGeneratorFlavour: String {
return PasswordGeneratorFlavour(rawValue: option) ?? PasswordGeneratorFlavour.RANDOM return PasswordGeneratorFlavour(rawValue: option) ?? PasswordGeneratorFlavour.RANDOM
} }
public var name: String {
return rawValue.localize()
}
public var defaultLength: (min: Int, max: Int, def: Int) { public var defaultLength: (min: Int, max: Int, def: Int) {
switch self { switch self {
case .APPLE: case .APPLE:

View file

@ -22,6 +22,11 @@ class PasswordGeneratorFlavourTest: XCTestCase {
XCTAssertEqual(PasswordGeneratorFlavour.from(""), PasswordGeneratorFlavour.RANDOM) XCTAssertEqual(PasswordGeneratorFlavour.from(""), PasswordGeneratorFlavour.RANDOM)
} }
func testLocalizedName() {
XCTAssertEqual(PasswordGeneratorFlavour.APPLE.name, "Apple".localize())
XCTAssertEqual(PasswordGeneratorFlavour.RANDOM.name, "Random".localize())
}
func testDefaultLength() { func testDefaultLength() {
// Ensure properly chosen default length values. So this check no longer needs to be performed in the code. // Ensure properly chosen default length values. So this check no longer needs to be performed in the code.
PasswordGeneratorFlavour.allCases.map { $0.defaultLength }.forEach { defaultLength in PasswordGeneratorFlavour.allCases.map { $0.defaultLength }.forEach { defaultLength in