diff --git a/passExtension/Controllers/ExtensionViewController.swift b/passExtension/Controllers/ExtensionViewController.swift index 97b5c9d0..b1ef895d 100644 --- a/passExtension/Controllers/ExtensionViewController.swift +++ b/passExtension/Controllers/ExtensionViewController.swift @@ -164,7 +164,7 @@ class ExtensionViewController: UIViewController, UITableViewDataSource, UITableV var decryptedPassword: Password? do { decryptedPassword = try self.passwordStore.decrypt(passwordEntity: passwordEntity, requestPGPKeyPassphrase: self.requestPGPKeyPassphrase) - let username = decryptedPassword?.username ?? decryptedPassword?.login ?? "" + let username = decryptedPassword?.username ?? decryptedPassword?.login ?? decryptedPassword?.nameFromPath ?? "" let password = decryptedPassword?.password ?? "" DispatchQueue.main.async {// prepare a dictionary to return switch self.extensionAction { diff --git a/passKit/Models/Password.swift b/passKit/Models/Password.swift index fecdb33b..e534e238 100644 --- a/passKit/Models/Password.swift +++ b/passKit/Models/Password.swift @@ -32,6 +32,10 @@ public class Password { return url.deletingPathExtension().path } + public var nameFromPath: String? { + return url.deletingPathExtension().path.split(separator: "/").last.map { String($0) } + } + public var password: String { return parser.firstLine } diff --git a/passKitTests/Models/PasswordTest.swift b/passKitTests/Models/PasswordTest.swift index 27cd5474..52ad5a3e 100644 --- a/passKitTests/Models/PasswordTest.swift +++ b/passKitTests/Models/PasswordTest.swift @@ -239,6 +239,13 @@ class PasswordTest: XCTestCase { XCTAssert(MULTILINE_LINE_START.title => "" ∈ password) } + func testUsernameInPath() { + let password = getPasswordObjectWith(content: "", url: URL(fileURLWithPath: "exampleservice/exampleusername.pgp")) + + XCTAssertEqual(password.nameFromPath, "exampleusername") + } + + func testMultilineValues() { let lineBreakField = "with line breaks" => "|\n This is \n text spread over \n multiple lines! " let noLineBreakField = "without line breaks" => " > \n This is \n text spread over\n multiple lines!"