0bf8b57c3a19

restore passkey selection after unlock and bump version to 2.15.7

time
2026-09-06 14:10 UTC · 1 month ago
machine
koh2
agent
claude-opus-5
session
credential search remember
parent
db5f9dcb07f7
2 files VERSION+1 −1app/src/main/java/com/peachpasswords/credentials/CredentialProviderUnlockActivity.kt+36 −5
VERSION+1 −1
@@ -1 +1 @@1-2.15.61+2.15.7

view file

app/src/main/java/com/peachpasswords/credentials/CredentialProviderUnlockActivity.kt+36 −5
@@ -9,12 +9,17 @@99 import com.peachpasswords.ui.components.SecureWindowPolicy1010 import androidx.credentials.provider.BeginGetCredentialRequest1111 import androidx.credentials.provider.BeginGetPasswordOption12+import androidx.credentials.provider.BeginGetPublicKeyCredentialOption1213 import androidx.credentials.provider.BeginGetCredentialResponse14+import androidx.credentials.provider.CredentialEntry1315 import androidx.credentials.provider.PasswordCredentialEntry1416 import androidx.credentials.provider.PendingIntentHandler17+import androidx.credentials.provider.PublicKeyCredentialEntry1518 import androidx.fragment.app.FragmentActivity1619 import com.peachpasswords.R1720 import com.peachpasswords.passkeys.PasskeyCallerOrigin21+import com.peachpasswords.passkeys.PasskeyCredentialPlanner22+import com.peachpasswords.passkeys.PasskeyCredentialSelectionActivity1823 import com.peachpasswords.passkeys.PasskeyUnlockIntent1924 import com.peachpasswords.autofill.appLinkDomains2025 import com.peachpasswords.shared.extractDomain@@ -72,10 +77,13 @@7277             info?.let { appLinkDomains(this, it.packageName).toSet() }.orEmpty()7378         }7479         val packageName = info?.packageName?.takeIf { webOrigin.isNullOrBlank() }75-        val entries = request.beginGetCredentialOptions76-            .filterIsInstance<BeginGetPasswordOption>()77-            .flatMap { option ->78-                PasswordCredentialPlanner.candidates(80+        val icon = Icon.createWithResource(this, R.drawable.ic_peach_mark)81+        val callerOrigin = info?.let {82+            PasskeyCallerOrigin.resolve(it, allowlist)83+        }84+        val entries = request.beginGetCredentialOptions.flatMap { option ->85+            when (option) {86+                is BeginGetPasswordOption -> PasswordCredentialPlanner.candidates(7987                     vault.getEntries(),8088                     domains,8189                     packageName = packageName,@@ -89,11 +97,34 @@8997                     )9098                         .setDisplayName(candidate.title)9199                         .setLastUsedTime(Instant.ofEpochMilli(candidate.lastUsedAt ?: 0L))92-                        .setIcon(Icon.createWithResource(this, R.drawable.ic_peach_mark))100+                        .setIcon(icon)93101                         .setAutoSelectAllowed(false)94102                         .build()95103                 }104+                is BeginGetPublicKeyCredentialOption -> PasskeyCredentialPlanner.candidates(105+                    vault.getEntries(),106+                    option.requestJson,107+                    callerOrigin,108+                ).map { candidate ->109+                    PublicKeyCredentialEntry(110+                        context = this,111+                        username = candidate.username,112+                        pendingIntent = PasskeyCredentialSelectionActivity.pendingIntent(113+                            this,114+                            candidate.entryId,115+                            option.requestJson,116+                        ),117+                        beginGetPublicKeyCredentialOption = option,118+                        displayName = candidate.displayName,119+                        lastUsedTime = Instant.ofEpochMilli(candidate.lastUsedAt ?: 0L),120+                        icon = icon,121+                        isAutoSelectAllowed = false,122+                    )123+                }124+                else -> emptyList<CredentialEntry>()96125             }126+        }127+97128         val result = Intent()98129         PendingIntentHandler.setBeginGetCredentialResponse(99130             result,

view file