2017-02-10 22:15:01 +08:00
|
|
|
//
|
|
|
|
|
// AddPasswordTableViewController.swift
|
|
|
|
|
// pass
|
|
|
|
|
//
|
|
|
|
|
// Created by Mingshen Sun on 10/2/2017.
|
|
|
|
|
// Copyright © 2017 Bob Sun. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
import UIKit
|
2017-03-09 02:39:13 +08:00
|
|
|
import SwiftyUserDefaults
|
2017-02-10 22:15:01 +08:00
|
|
|
|
2017-03-09 03:19:36 +08:00
|
|
|
class AddPasswordTableViewController: PasswordEditorTableViewController {
|
|
|
|
|
var tempContent: String = ""
|
2017-03-16 22:39:03 -07:00
|
|
|
let passwordStore = PasswordStore.shared
|
2017-02-10 22:15:01 +08:00
|
|
|
|
|
|
|
|
override func viewDidLoad() {
|
2017-03-09 03:19:36 +08:00
|
|
|
tableData = [
|
2017-04-27 23:07:22 +08:00
|
|
|
[[.type: PasswordEditorCellType.nameCell, .title: "name"]],
|
2017-03-24 01:10:26 +08:00
|
|
|
[[.type: PasswordEditorCellType.fillPasswordCell, .title: "password"],
|
|
|
|
|
[.type: PasswordEditorCellType.passwordLengthCell, .title: "passwordlength"]],
|
2017-04-27 23:07:22 +08:00
|
|
|
[[.type: PasswordEditorCellType.additionsCell, .title: "additions"]],
|
2017-04-08 03:08:12 +08:00
|
|
|
[[.type: PasswordEditorCellType.scanQRCodeCell]]
|
2017-03-09 03:19:36 +08:00
|
|
|
]
|
2017-02-10 22:15:01 +08:00
|
|
|
super.viewDidLoad()
|
2017-02-11 20:45:56 +08:00
|
|
|
}
|
|
|
|
|
|
2017-03-09 02:39:13 +08:00
|
|
|
override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
|
|
|
|
|
if identifier == "saveAddPasswordSegue" {
|
|
|
|
|
// check PGP key
|
2017-03-22 17:42:37 -07:00
|
|
|
guard passwordStore.privateKey != nil else {
|
2017-03-09 02:39:13 +08:00
|
|
|
let alertTitle = "Cannot Add Password"
|
|
|
|
|
let alertMessage = "PGP Key is not set. Please set your PGP Key first."
|
|
|
|
|
Utils.alert(title: alertTitle, message: alertMessage, controller: self, completion: nil)
|
|
|
|
|
return false
|
|
|
|
|
}
|
2017-03-22 17:42:37 -07:00
|
|
|
|
2017-03-09 02:39:13 +08:00
|
|
|
// check name
|
2017-03-15 23:03:43 -07:00
|
|
|
let nameCell = tableView.cellForRow(at: IndexPath(row: 0, section: 0)) as! TextFieldTableViewCell
|
2017-03-22 17:42:37 -07:00
|
|
|
guard nameCell.getContent()!.isEmpty == false else {
|
2017-03-09 02:39:13 +08:00
|
|
|
let alertTitle = "Cannot Add Password"
|
|
|
|
|
let alertMessage = "Please fill in the name."
|
|
|
|
|
Utils.alert(title: alertTitle, message: alertMessage, controller: self, completion: nil)
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|
2017-02-10 22:15:01 +08:00
|
|
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
2017-04-08 03:08:12 +08:00
|
|
|
super.prepare(for: segue, sender: sender)
|
|
|
|
|
if segue.identifier == "saveAddPasswordSegue" {
|
|
|
|
|
let cells = tableView.visibleCells
|
2017-03-09 03:19:36 +08:00
|
|
|
var cellContents = [String: String]()
|
|
|
|
|
for cell in cells {
|
2017-04-08 03:08:12 +08:00
|
|
|
if let indexPath = tableView.indexPath(for: cell),
|
|
|
|
|
let contentCell = cell as? ContentTableViewCell,
|
|
|
|
|
let cellTitle = tableData[indexPath.section][indexPath.row][.title] as? String,
|
|
|
|
|
let cellContent = contentCell.getContent() {
|
2017-03-09 03:19:36 +08:00
|
|
|
cellContents[cellTitle] = cellContent
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var plainText = ""
|
|
|
|
|
if cellContents["additions"]! != "" {
|
|
|
|
|
plainText = "\(cellContents["password"]!)\n\(cellContents["additions"]!)"
|
|
|
|
|
} else {
|
|
|
|
|
plainText = "\(cellContents["password"]!)"
|
|
|
|
|
}
|
2017-04-26 23:01:42 -07:00
|
|
|
let encodedName = cellContents["name"]!.stringByAddingPercentEncodingForRFC3986()!
|
|
|
|
|
let name = URL(string: encodedName)!.lastPathComponent
|
|
|
|
|
let url = URL(string: encodedName)!.appendingPathExtension("gpg")
|
2017-04-23 10:03:09 -07:00
|
|
|
password = Password(name: name, url: url, plainText: plainText)
|
2017-02-11 16:12:10 +08:00
|
|
|
}
|
2017-02-10 22:15:01 +08:00
|
|
|
}
|
|
|
|
|
}
|