diff --git a/pass/Controllers/AddPasswordTableViewController.swift b/pass/Controllers/AddPasswordTableViewController.swift index a6ddf20..1f172df 100644 --- a/pass/Controllers/AddPasswordTableViewController.swift +++ b/pass/Controllers/AddPasswordTableViewController.swift @@ -65,8 +65,9 @@ class AddPasswordTableViewController: PasswordEditorTableViewController { } else { plainText = "\(cellContents["password"]!)" } - let name = URL(string: cellContents["name"]!)!.lastPathComponent - let url = URL(string: cellContents["name"]!)!.appendingPathExtension("gpg") + let encodedName = cellContents["name"]!.stringByAddingPercentEncodingForRFC3986()! + let name = URL(string: encodedName)!.lastPathComponent + let url = URL(string: encodedName)!.appendingPathExtension("gpg") password = Password(name: name, url: url, plainText: plainText) } } diff --git a/pass/Models/PasswordStore.swift b/pass/Models/PasswordStore.swift index 3bde0e0..4b7fa49 100644 --- a/pass/Models/PasswordStore.swift +++ b/pass/Models/PasswordStore.swift @@ -651,7 +651,7 @@ class PasswordStore { try deleteDirectoryTree(at: passwordEntity.getURL()!) try deletePasswordEntities(passwordEntity: passwordEntity) try gitRm(path: deletedFileURL.path) - let _ = try gitCommit(message: "Remove \(deletedFileURL.deletingPathExtension()) from store using Pass for iOS.") + let _ = try gitCommit(message: "Remove \(deletedFileURL.deletingPathExtension().path.removingPercentEncoding!) from store using Pass for iOS.") NotificationCenter.default.post(name: .passwordStoreUpdated, object: nil) } @@ -663,7 +663,7 @@ class PasswordStore { let saveURL = storeURL.appendingPathComponent(passwordEntity.getURL()!.path) try self.encrypt(password: password).write(to: saveURL) try gitAdd(path: passwordEntity.getURL()!.path) - let _ = try gitCommit(message: "Edit password for \(passwordEntity.getURL()!.deletingPathExtension().path) to store using Pass for iOS.") + let _ = try gitCommit(message: "Edit password for \(passwordEntity.getURL()!.deletingPathExtension().path.removingPercentEncoding!) to store using Pass for iOS.") newPasswordEntity = passwordEntity } @@ -680,7 +680,7 @@ class PasswordStore { // delete try deleteDirectoryTree(at: deletedFileURL) try deletePasswordEntities(passwordEntity: passwordEntity) - let _ = try gitCommit(message: "Rename \(deletedFileURL.deletingPathExtension()) to \(password.url!.deletingPathExtension().path) using Pass for iOS.") + let _ = try gitCommit(message: "Rename \(deletedFileURL.deletingPathExtension().path.removingPercentEncoding!) to \(password.url!.deletingPathExtension().path.removingPercentEncoding!) using Pass for iOS.") } NotificationCenter.default.post(name: .passwordStoreUpdated, object: nil) @@ -689,6 +689,7 @@ class PasswordStore { private func deletePasswordEntities(passwordEntity: PasswordEntity) throws { var current: PasswordEntity? = passwordEntity + print(passwordEntity.path!) while current != nil && (current!.children!.count == 0 || !current!.isDir) { let parent = current!.parent self.context.delete(current!)