From 59afa8d7108f3e06768db844a7bc75c0a3e73dcb Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Sat, 21 Feb 2026 21:05:56 +0530 Subject: [PATCH 1/3] fix: toast in autofill service --- .../passcodes/autofill/PasswordAutofillService.kt | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt b/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt index a5d30837..99cb548e 100644 --- a/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt +++ b/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt @@ -10,7 +10,6 @@ import android.service.autofill.SaveCallback import android.service.autofill.SaveRequest import android.view.autofill.AutofillValue import android.widget.RemoteViews -import android.widget.Toast import com.jeeldobariya.passcodes.database.master.PasswordEntity import com.jeeldobariya.passcodes.database.master.PasswordsDao import kotlinx.coroutines.CoroutineScope @@ -51,12 +50,6 @@ class PasswordAutofillService : AutofillService() { } serviceScope.launch { - Toast.makeText( - applicationContext, - "Passcodes autofill is preview feature!!!", - Toast.LENGTH_LONG - ).show() - val passwordsDao by inject() val passwords = passwordsDao.getAllPasswords().first() val responseBuilder = FillResponse.Builder() @@ -108,11 +101,6 @@ class PasswordAutofillService : AutofillService() { notes = "Save using autofill service..." ) ) - Toast.makeText( - applicationContext, - "Open passcodes app and configure the saved password!!!", - Toast.LENGTH_LONG - ).show() } callback.onSuccess() From db1dd8fe9b2848b3e5cebc3848fd5303d87ef92e Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Sat, 21 Feb 2026 22:06:28 +0530 Subject: [PATCH 2/3] fix: autosave. --- .../passcodes/autofill/PasswordAutofillService.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt b/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt index 99cb548e..9718caf4 100644 --- a/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt +++ b/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt @@ -7,6 +7,7 @@ import android.service.autofill.FillCallback import android.service.autofill.FillRequest import android.service.autofill.FillResponse import android.service.autofill.SaveCallback +import android.service.autofill.SaveInfo import android.service.autofill.SaveRequest import android.view.autofill.AutofillValue import android.widget.RemoteViews @@ -73,6 +74,13 @@ class PasswordAutofillService : AutofillService() { responseBuilder.addDataset(dataset) } + responseBuilder.setSaveInfo( + SaveInfo.Builder( + SaveInfo.SAVE_DATA_TYPE_EMAIL_ADDRESS or SaveInfo.SAVE_DATA_TYPE_USERNAME or SaveInfo.SAVE_DATA_TYPE_PASSWORD, + arrayOf(usernameId, passwordId) + ).build() + ) + callback.onSuccess(responseBuilder.build()) } } From f3d2ac2cb3bb690839009ac42c2cd60a4ba4273a Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Sat, 21 Feb 2026 22:18:20 +0530 Subject: [PATCH 3/3] chore: add TODO's to shpw path forward --- .../passcodes/autofill/PasswordAutofillService.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt b/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt index 9718caf4..37042437 100644 --- a/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt +++ b/autofill/src/main/kotlin/com/jeeldobariya/passcodes/autofill/PasswordAutofillService.kt @@ -19,7 +19,7 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch import org.koin.android.ext.android.inject -// TODO: currently the code here serves as a foundation for autofill features.. +// TODO: Docs for this autofill is need in @github:PasscodesApp/Passcodes-Docs class PasswordAutofillService : AutofillService() { private val serviceScope = CoroutineScope(Dispatchers.IO) @@ -35,6 +35,8 @@ class PasswordAutofillService : AutofillService() { val viewNodes = mutableMapOf() parseStructure(structure.getWindowNodeAt(0).rootViewNode, viewNodes) + // TODO: Add support for newUsername & newPassword autofill hints. + // https://developer.android.com/reference/androidx/autofill/HintConstants#AUTOFILL_HINT_NEW_USERNAME() val usernameNode = viewNodes["username"] ?: viewNodes["emailAddress"] val passwordNode = viewNodes["password"] @@ -47,7 +49,7 @@ class PasswordAutofillService : AutofillService() { val passwordId = passwordNode.autofillId!! cancellationSignal.setOnCancelListener { - // Handle cancellation + // TODO: Handle cancellation } serviceScope.launch { @@ -67,6 +69,8 @@ class PasswordAutofillService : AutofillService() { ) } + // TODO: Migrate to Presentations + // @docs:developer.android.com/reference/android/service/autofill/Presentations.Builder val dataset = android.service.autofill.Dataset.Builder(presentation) .setValue(usernameId, AutofillValue.forText(password.username)) .setValue(passwordId, AutofillValue.forText(password.password)) @@ -92,6 +96,7 @@ class PasswordAutofillService : AutofillService() { val viewNodes = mutableMapOf() parseStructure(structure.getWindowNodeAt(0).rootViewNode, viewNodes) + // TODO: Add support for newUsername & newPassword autofill hints. val usernameNode = viewNodes["username"] ?: viewNodes["emailAddress"] val passwordNode = viewNodes["password"]