|  | @@ -10,6 +10,7 @@ import android.service.autofill.FillResponse
 | 
	
		
			
				|  |  |  import android.view.autofill.AutofillId
 | 
	
		
			
				|  |  |  import android.view.autofill.AutofillValue
 | 
	
		
			
				|  |  |  import android.widget.RemoteViews
 | 
	
		
			
				|  |  | +import com.fastest.pass.R
 | 
	
		
			
				|  |  |  import com.fastest.pass.home.domain.model.AddPassword
 | 
	
		
			
				|  |  |  import com.fastest.pass.sharedpref.CredentialManager
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -32,9 +33,9 @@ class FastestPassAutofillService : AutofillService() {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Fetch credentials matching the package name or domain
 | 
	
		
			
				|  |  | -       /* val data = getCredentials().filter {
 | 
	
		
			
				|  |  | -            it.url.contains(packageName)
 | 
	
		
			
				|  |  | -        }*/
 | 
	
		
			
				|  |  | +        /* val data = getCredentials().filter {
 | 
	
		
			
				|  |  | +             it.url.contains(packageName)
 | 
	
		
			
				|  |  | +         }*/
 | 
	
		
			
				|  |  |          val data = getCredentials()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (data.isEmpty()) {
 | 
	
	
		
			
				|  | @@ -46,48 +47,48 @@ class FastestPassAutofillService : AutofillService() {
 | 
	
		
			
				|  |  |          for (i in 0 until structure.windowNodeCount) {
 | 
	
		
			
				|  |  |              val windowNode = structure.getWindowNodeAt(i)
 | 
	
		
			
				|  |  |              val viewNode = windowNode.rootViewNode
 | 
	
		
			
				|  |  | -         parseViewNode(viewNode, data, fillResponseBuilder)
 | 
	
		
			
				|  |  | +            parseViewNode(viewNode, data, fillResponseBuilder)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    callback.onSuccess(fillResponseBuilder.build())
 | 
	
		
			
				|  |  | +        callback.onSuccess(fillResponseBuilder.build())
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      override fun onSaveRequest(
 | 
	
		
			
				|  |  |          request: android.service.autofill.SaveRequest,
 | 
	
		
			
				|  |  |          callback: android.service.autofill.SaveCallback
 | 
	
		
			
				|  |  |      ) {
 | 
	
		
			
				|  |  | -      /*  val credentialManager = CredentialManager(applicationContext)
 | 
	
		
			
				|  |  | +        /*  val credentialManager = CredentialManager(applicationContext)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // Extracting the FillContexts from the SaveRequest
 | 
	
		
			
				|  |  | -        val fillContexts = request.fillContexts
 | 
	
		
			
				|  |  | +          // Extracting the FillContexts from the SaveRequest
 | 
	
		
			
				|  |  | +          val fillContexts = request.fillContexts
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // For each field in the SaveRequest, extract the autofill values (email and password)
 | 
	
		
			
				|  |  | -        val credentials = mutableListOf<AddPassword>()
 | 
	
		
			
				|  |  | +          // For each field in the SaveRequest, extract the autofill values (email and password)
 | 
	
		
			
				|  |  | +          val credentials = mutableListOf<AddPassword>()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        for (context in fillContexts) {
 | 
	
		
			
				|  |  | -            val structure = context.structure
 | 
	
		
			
				|  |  | +          for (context in fillContexts) {
 | 
	
		
			
				|  |  | +              val structure = context.structure
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            // Loop through the views in the structure and extract the autofill values
 | 
	
		
			
				|  |  | -            for (i in 0 until structure.windowNodeCount) {
 | 
	
		
			
				|  |  | -                val windowNode = structure.getWindowNodeAt(i)
 | 
	
		
			
				|  |  | -                val rootNode = windowNode.rootViewNode
 | 
	
		
			
				|  |  | +              // Loop through the views in the structure and extract the autofill values
 | 
	
		
			
				|  |  | +              for (i in 0 until structure.windowNodeCount) {
 | 
	
		
			
				|  |  | +                  val windowNode = structure.getWindowNodeAt(i)
 | 
	
		
			
				|  |  | +                  val rootNode = windowNode.rootViewNode
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                // Extract the values from the autofill fields
 | 
	
		
			
				|  |  | -                val title = extractAutofillValue(rootNode, "personFirstName") ?: ""
 | 
	
		
			
				|  |  | -                val url = extractAutofillValue(rootNode, "personLastName") ?: ""
 | 
	
		
			
				|  |  | -                val username = extractAutofillValue(rootNode, "username") ?: ""
 | 
	
		
			
				|  |  | -                val password = extractAutofillValue(rootNode, "password") ?: ""
 | 
	
		
			
				|  |  | -                val notes = extractAutofillValue(rootNode, "addressStreet") ?: ""
 | 
	
		
			
				|  |  | +                  // Extract the values from the autofill fields
 | 
	
		
			
				|  |  | +                  val title = extractAutofillValue(rootNode, "personFirstName") ?: ""
 | 
	
		
			
				|  |  | +                  val url = extractAutofillValue(rootNode, "personLastName") ?: ""
 | 
	
		
			
				|  |  | +                  val username = extractAutofillValue(rootNode, "username") ?: ""
 | 
	
		
			
				|  |  | +                  val password = extractAutofillValue(rootNode, "password") ?: ""
 | 
	
		
			
				|  |  | +                  val notes = extractAutofillValue(rootNode, "addressStreet") ?: ""
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                // Create a new Credential object and add it to the list
 | 
	
		
			
				|  |  | -                val credential = AddPassword(title, url, username, password, notes)
 | 
	
		
			
				|  |  | -                credentials.add(credential)
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +                  // Create a new Credential object and add it to the list
 | 
	
		
			
				|  |  | +                  val credential = AddPassword(title, url, username, password, notes)
 | 
	
		
			
				|  |  | +                  credentials.add(credential)
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // Save the credentials in SharedPreferences
 | 
	
		
			
				|  |  | -        credentialManager.saveCredentials(credentials)*/
 | 
	
		
			
				|  |  | +          // Save the credentials in SharedPreferences
 | 
	
		
			
				|  |  | +          credentialManager.saveCredentials(credentials)*/
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          callback.onSuccess()
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -132,13 +133,11 @@ class FastestPassAutofillService : AutofillService() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (username != null || emailAddress != null || passwordId != null) {
 | 
	
		
			
				|  |  |                  credentials.forEach { credential ->
 | 
	
		
			
				|  |  | -                    val presentation =
 | 
	
		
			
				|  |  | -                        RemoteViews(packageName, android.R.layout.simple_list_item_1).apply {
 | 
	
		
			
				|  |  | -                            setTextViewText(
 | 
	
		
			
				|  |  | -                                android.R.id.text1,
 | 
	
		
			
				|  |  | -                                "${credential.username} @ ${credential.url}"
 | 
	
		
			
				|  |  | -                            )
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | +                    val presentation = RemoteViews(packageName, R.layout.item_auto_fill).apply {
 | 
	
		
			
				|  |  | +                        // Set the TextView text for the suggestion
 | 
	
		
			
				|  |  | +                        setTextViewText(R.id.text, "${credential.username} @ ${credential.url}")
 | 
	
		
			
				|  |  | +                        // Optionally, set an icon/image
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                      val datasetBuilder = Dataset.Builder()
 | 
	
		
			
				|  |  |                      emailAddress?.let {
 | 
	
		
			
				|  |  |                          datasetBuilder.setValue(
 | 
	
	
		
			
				|  | @@ -170,7 +169,7 @@ class FastestPassAutofillService : AutofillService() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Recursively parse child nodes
 | 
	
		
			
				|  |  |          for (i in 0 until node.childCount) {
 | 
	
		
			
				|  |  | -           parseViewNode(node.getChildAt(i), credentials, fillResponseBuilder)
 | 
	
		
			
				|  |  | +            parseViewNode(node.getChildAt(i), credentials, fillResponseBuilder)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 |