Update SwiftyUserDefaults to current version 5.0.0

This commit is contained in:
Danny Moesch 2020-01-02 00:48:00 +01:00 committed by Mingshen Sun
parent b60ce3b003
commit a2edf41d33
26 changed files with 145 additions and 149 deletions

View file

@ -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 {

View file

@ -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

View file

@ -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) }
}

View file

@ -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

View file

@ -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
}
}

View file

@ -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)
}
}

View file

@ -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
}