diff --git a/apps/mobile-app/android/app/src/main/java/net/aliasvault/app/autofill/utils/CredentialMatcher.kt b/apps/mobile-app/android/app/src/main/java/net/aliasvault/app/autofill/utils/CredentialMatcher.kt index afcd8b711..32a8d6f54 100644 --- a/apps/mobile-app/android/app/src/main/java/net/aliasvault/app/autofill/utils/CredentialMatcher.kt +++ b/apps/mobile-app/android/app/src/main/java/net/aliasvault/app/autofill/utils/CredentialMatcher.kt @@ -94,12 +94,17 @@ object CredentialMatcher { } } - // 4. Domain key match against notes only (since name is already checked in step 3) + // 4. Domain key match against service name, URL, and notes matches += credentials.filter { cred -> - cred.notes?.lowercase()?.contains(domainKey) == true + val nameMatches = cred.service.name?.trim()?.lowercase()?.contains(domainKey) == true + val urlMatches = cred.service.url?.trim()?.lowercase()?.contains(domainKey) == true + val notesMatches = cred.notes?.lowercase()?.contains(domainKey) == true + + nameMatches || urlMatches || notesMatches } - return matches + // Deduplicate matches based on credential ID to avoid duplicates from different matching strategies + return matches.distinctBy { it.id } } /** diff --git a/apps/mobile-app/android/app/src/test/java/net/aliasvault/app/nativevaultmanager/AutofillTest.kt b/apps/mobile-app/android/app/src/test/java/net/aliasvault/app/nativevaultmanager/AutofillTest.kt index 1d6b26e68..08c10e17a 100644 --- a/apps/mobile-app/android/app/src/test/java/net/aliasvault/app/nativevaultmanager/AutofillTest.kt +++ b/apps/mobile-app/android/app/src/test/java/net/aliasvault/app/nativevaultmanager/AutofillTest.kt @@ -58,8 +58,9 @@ class AutofillTest { "www.coolblue.nl", ) - assertEquals(1, matches.size) + assertEquals(2, matches.size) assertEquals("Coolblue", matches[0].service.name) + assertEquals("Coolblue App", matches[1].service.name) } @Test