remove some unwraps
This commit is contained in:
parent
15518733b0
commit
82232be92c
5 changed files with 31 additions and 27 deletions
|
|
@ -35,8 +35,8 @@ class AdvancedSettingsTableViewController: UITableViewController {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func setGitSignatureText() {
|
private func setGitSignatureText() {
|
||||||
let gitSignatureName = passwordStore.gitSignatureForNow.name!
|
let gitSignatureName = passwordStore.gitSignatureForNow?.name ?? ""
|
||||||
let gitSignatureEmail = passwordStore.gitSignatureForNow.email!
|
let gitSignatureEmail = passwordStore.gitSignatureForNow?.email ?? ""
|
||||||
self.gitSignatureTableViewCell.detailTextLabel?.font = UIFont.systemFont(ofSize: 14)
|
self.gitSignatureTableViewCell.detailTextLabel?.font = UIFont.systemFont(ofSize: 14)
|
||||||
self.gitSignatureTableViewCell.detailTextLabel?.text = "\(gitSignatureName) <\(gitSignatureEmail)>"
|
self.gitSignatureTableViewCell.detailTextLabel?.text = "\(gitSignatureName) <\(gitSignatureEmail)>"
|
||||||
if SharedDefaults[.gitSignatureName] == nil && SharedDefaults[.gitSignatureEmail] == nil {
|
if SharedDefaults[.gitSignatureName] == nil && SharedDefaults[.gitSignatureEmail] == nil {
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@ class GitConfigSettingTableViewController: UITableViewController {
|
||||||
tableView.rowHeight = UITableView.automaticDimension
|
tableView.rowHeight = UITableView.automaticDimension
|
||||||
|
|
||||||
let signature = passwordStore.gitSignatureForNow
|
let signature = passwordStore.gitSignatureForNow
|
||||||
nameTextField.placeholder = signature.name
|
nameTextField.placeholder = signature?.name ?? ""
|
||||||
emailTextField.placeholder = signature.email
|
emailTextField.placeholder = signature?.email ?? ""
|
||||||
nameTextField.text = SharedDefaults[.gitSignatureName]
|
nameTextField.text = SharedDefaults[.gitSignatureName]
|
||||||
emailTextField.text = SharedDefaults[.gitSignatureEmail]
|
emailTextField.text = SharedDefaults[.gitSignatureEmail]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,12 @@ public enum AppError: Error {
|
||||||
case KeyImport
|
case KeyImport
|
||||||
case PasswordDuplicated
|
case PasswordDuplicated
|
||||||
case GitReset
|
case GitReset
|
||||||
|
case GitCommit
|
||||||
|
case PasswordEntity
|
||||||
case PgpPublicKeyNotExist
|
case PgpPublicKeyNotExist
|
||||||
case WrongPasswordFilename
|
case WrongPasswordFilename
|
||||||
case Decryption
|
case Decryption
|
||||||
|
case Encryption
|
||||||
case Unknown
|
case Unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,11 +33,11 @@ extension PasswordEntity {
|
||||||
return passwordCategoryArray
|
return passwordCategoryArray
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getURL() -> URL? {
|
public func getURL() throws -> URL {
|
||||||
if let p = getPath().stringByAddingPercentEncodingForRFC3986() {
|
if let p = getPath().stringByAddingPercentEncodingForRFC3986(), let u = URL(string: p) {
|
||||||
return URL(string: p)
|
return u
|
||||||
}
|
}
|
||||||
return nil
|
throw AppError.Unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX: define some getters to get core data, we need to consider
|
// XXX: define some getters to get core data, we need to consider
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,7 @@ public class PasswordStore {
|
||||||
public var pgpKeyID: String?
|
public var pgpKeyID: String?
|
||||||
public var publicKey: GopenpgpwrapperKey? {
|
public var publicKey: GopenpgpwrapperKey? {
|
||||||
didSet {
|
didSet {
|
||||||
if publicKey != nil {
|
pgpKeyID = publicKey?.getID()
|
||||||
pgpKeyID = publicKey!.getID()
|
|
||||||
} else {
|
|
||||||
pgpKeyID = nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public var privateKey: GopenpgpwrapperKey?
|
public var privateKey: GopenpgpwrapperKey?
|
||||||
|
|
@ -42,14 +38,14 @@ public class PasswordStore {
|
||||||
case PUBLIC, PRIVATE
|
case PUBLIC, PRIVATE
|
||||||
}
|
}
|
||||||
|
|
||||||
public var gitSignatureForNow: GTSignature {
|
public var gitSignatureForNow: GTSignature? {
|
||||||
get {
|
get {
|
||||||
let gitSignatureName = SharedDefaults[.gitSignatureName] ?? Globals.gitSignatureDefaultName
|
let gitSignatureName = SharedDefaults[.gitSignatureName] ?? Globals.gitSignatureDefaultName
|
||||||
let gitSignatureEmail = SharedDefaults[.gitSignatureEmail] ?? Globals.gitSignatureDefaultEmail
|
let gitSignatureEmail = SharedDefaults[.gitSignatureEmail] ?? Globals.gitSignatureDefaultEmail
|
||||||
return GTSignature(name: gitSignatureName, email: gitSignatureEmail, time: Date())!
|
return GTSignature(name: gitSignatureName, email: gitSignatureEmail, time: Date())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public var pgpKeyPassphrase: String? {
|
public var pgpKeyPassphrase: String? {
|
||||||
set {
|
set {
|
||||||
Utils.addPasswordToKeychain(name: "pgpKeyPassphrase", password: newValue)
|
Utils.addPasswordToKeychain(name: "pgpKeyPassphrase", password: newValue)
|
||||||
|
|
@ -557,7 +553,9 @@ public class PasswordStore {
|
||||||
let commitEnum = try GTEnumerator(repository: storeRepository)
|
let commitEnum = try GTEnumerator(repository: storeRepository)
|
||||||
try commitEnum.pushSHA(headReference.targetOID!.sha)
|
try commitEnum.pushSHA(headReference.targetOID!.sha)
|
||||||
let parent = commitEnum.nextObject() as! GTCommit
|
let parent = commitEnum.nextObject() as! GTCommit
|
||||||
let signature = gitSignatureForNow
|
guard let signature = gitSignatureForNow else {
|
||||||
|
throw AppError.GitCommit
|
||||||
|
}
|
||||||
let commit = try storeRepository.createCommit(with: newTree, message: message, author: signature, committer: signature, parents: [parent], updatingReferenceNamed: headReference.name)
|
let commit = try storeRepository.createCommit(with: newTree, message: message, author: signature, committer: signature, parents: [parent], updatingReferenceNamed: headReference.name)
|
||||||
return commit
|
return commit
|
||||||
}
|
}
|
||||||
|
|
@ -652,7 +650,7 @@ public class PasswordStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func delete(passwordEntity: PasswordEntity) throws {
|
public func delete(passwordEntity: PasswordEntity) throws {
|
||||||
let deletedFileURL = passwordEntity.getURL()!
|
let deletedFileURL = try passwordEntity.getURL()
|
||||||
try gitRm(path: deletedFileURL.path)
|
try gitRm(path: deletedFileURL.path)
|
||||||
try deletePasswordEntities(passwordEntity: passwordEntity)
|
try deletePasswordEntities(passwordEntity: passwordEntity)
|
||||||
try deleteDirectoryTree(at: deletedFileURL)
|
try deleteDirectoryTree(at: deletedFileURL)
|
||||||
|
|
@ -662,18 +660,19 @@ public class PasswordStore {
|
||||||
|
|
||||||
public func edit(passwordEntity: PasswordEntity, password: Password) throws -> PasswordEntity? {
|
public func edit(passwordEntity: PasswordEntity, password: Password) throws -> PasswordEntity? {
|
||||||
var newPasswordEntity: PasswordEntity? = passwordEntity
|
var newPasswordEntity: PasswordEntity? = passwordEntity
|
||||||
|
let url = try passwordEntity.getURL()
|
||||||
|
|
||||||
if password.changed&PasswordChange.content.rawValue != 0 {
|
if password.changed&PasswordChange.content.rawValue != 0 {
|
||||||
let saveURL = storeURL.appendingPathComponent(passwordEntity.getURL()!.path)
|
let saveURL = storeURL.appendingPathComponent(url.path)
|
||||||
try self.encrypt(password: password).write(to: saveURL)
|
try self.encrypt(password: password).write(to: saveURL)
|
||||||
try gitAdd(path: passwordEntity.getURL()!.path)
|
try gitAdd(path: saveURL.path)
|
||||||
let _ = try gitCommit(message: "EditPassword.".localize(passwordEntity.getURL()!.deletingPathExtension().path.removingPercentEncoding!))
|
let _ = try gitCommit(message: "EditPassword.".localize(url.deletingPathExtension().path.removingPercentEncoding!))
|
||||||
newPasswordEntity = passwordEntity
|
newPasswordEntity = passwordEntity
|
||||||
newPasswordEntity?.synced = false
|
newPasswordEntity?.synced = false
|
||||||
}
|
}
|
||||||
|
|
||||||
if password.changed&PasswordChange.path.rawValue != 0 {
|
if password.changed&PasswordChange.path.rawValue != 0 {
|
||||||
let deletedFileURL = passwordEntity.getURL()!
|
let deletedFileURL = url
|
||||||
// add
|
// add
|
||||||
try createDirectoryTree(at: password.url)
|
try createDirectoryTree(at: password.url)
|
||||||
newPasswordEntity = try addPasswordEntities(password: password)
|
newPasswordEntity = try addPasswordEntities(password: password)
|
||||||
|
|
@ -823,11 +822,11 @@ public class PasswordStore {
|
||||||
if passphrase == nil {
|
if passphrase == nil {
|
||||||
passphrase = requestPGPKeyPassphrase()
|
passphrase = requestPGPKeyPassphrase()
|
||||||
}
|
}
|
||||||
let decryptedData = privateKey?.decrypt(encryptedData, passphrase: passphrase)
|
guard let decryptedData = privateKey?.decrypt(encryptedData, passphrase: passphrase) else {
|
||||||
let plainText = String(data: decryptedData!, encoding: .utf8) ?? ""
|
|
||||||
guard let url = passwordEntity.getURL() else {
|
|
||||||
throw AppError.Decryption
|
throw AppError.Decryption
|
||||||
}
|
}
|
||||||
|
let plainText = String(data: decryptedData, encoding: .utf8) ?? ""
|
||||||
|
let url = try passwordEntity.getURL()
|
||||||
return Password(name: passwordEntity.getName(), url: url, plainText: plainText)
|
return Password(name: passwordEntity.getName(), url: url, plainText: plainText)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -836,9 +835,11 @@ public class PasswordStore {
|
||||||
throw AppError.PgpPublicKeyNotExist
|
throw AppError.PgpPublicKeyNotExist
|
||||||
}
|
}
|
||||||
let plainData = password.plainData
|
let plainData = password.plainData
|
||||||
let encryptedData = publicKey?.encrypt(plainData, armor: SharedDefaults[.encryptInArmored])
|
guard let encryptedData = publicKey?.encrypt(plainData, armor: SharedDefaults[.encryptInArmored]) else {
|
||||||
|
throw AppError.Encryption
|
||||||
|
}
|
||||||
|
|
||||||
return encryptedData!
|
return encryptedData
|
||||||
}
|
}
|
||||||
|
|
||||||
public func removePGPKeys() {
|
public func removePGPKeys() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue