From 4d672d072b51afe38560d3147253629e9b6721a1 Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Mon, 26 Jan 2026 20:24:44 +0530 Subject: [PATCH 1/6] feat: improve mimetypes --- .../password_manager/oldui/PasswordManagerActivity.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt index 00ec9ecc..c3d59a53 100644 --- a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt +++ b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt @@ -120,7 +120,7 @@ class PasswordManagerActivity : AppCompatActivity() { private fun exportCsvFilePicker() { val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) - type = "text/csv" + setType("text/csv") putExtra(Intent.EXTRA_TITLE, "passwords.csv") } @@ -130,7 +130,7 @@ class PasswordManagerActivity : AppCompatActivity() { private fun importCsvFilePicker() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) - type = "text/*" + setTypeAndNormalize("text/csv|text/comma-separated-values|application/csv") putExtra(Intent.EXTRA_TITLE, "passwords.csv") } From 575ae0fc2a1f0eaf9aa946b859c7a517b42939cd Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Mon, 26 Jan 2026 20:34:58 +0530 Subject: [PATCH 2/6] fix: mimetypes --- .../password_manager/oldui/PasswordManagerActivity.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt index c3d59a53..75565b8a 100644 --- a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt +++ b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt @@ -130,8 +130,11 @@ class PasswordManagerActivity : AppCompatActivity() { private fun importCsvFilePicker() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) - setTypeAndNormalize("text/csv|text/comma-separated-values|application/csv") putExtra(Intent.EXTRA_TITLE, "passwords.csv") + setType("*/*") + putExtra(Intent.EXTRA_MIME_TYPES, "text/csv") + putExtra(Intent.EXTRA_MIME_TYPES, "text/comma-separated-values") + putExtra(Intent.EXTRA_MIME_TYPES, "application/csv") } importCsvLauncher.launch(intent) From 96416ac23e7da2fe1a3b70c36680af3ce3f0b0de Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Mon, 26 Jan 2026 20:50:22 +0530 Subject: [PATCH 3/6] fix: improve mimetypes & import files picker --- .../password_manager/oldui/PasswordManagerActivity.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt index 75565b8a..05c32cfd 100644 --- a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt +++ b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt @@ -120,7 +120,7 @@ class PasswordManagerActivity : AppCompatActivity() { private fun exportCsvFilePicker() { val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) - setType("text/csv") + setType("text/comma-separated-values") putExtra(Intent.EXTRA_TITLE, "passwords.csv") } @@ -130,11 +130,9 @@ class PasswordManagerActivity : AppCompatActivity() { private fun importCsvFilePicker() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) + setType("text/comma-separated-values") + putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("text/csv", "application/csv")) putExtra(Intent.EXTRA_TITLE, "passwords.csv") - setType("*/*") - putExtra(Intent.EXTRA_MIME_TYPES, "text/csv") - putExtra(Intent.EXTRA_MIME_TYPES, "text/comma-separated-values") - putExtra(Intent.EXTRA_MIME_TYPES, "application/csv") } importCsvLauncher.launch(intent) From 8b79993bdf943672c986001111f7c9d0932d38d7 Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Mon, 26 Jan 2026 21:06:56 +0530 Subject: [PATCH 4/6] refactor: activity result --- .../oldui/PasswordManagerActivity.kt | 48 ++++++++----------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt index 05c32cfd..6343fb26 100644 --- a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt +++ b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt @@ -30,9 +30,27 @@ class PasswordManagerActivity : AppCompatActivity() { private lateinit var binding: ActivityPasswordManagerBinding - private lateinit var exportCsvLauncher: ActivityResultLauncher + private val exportCsvLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == RESULT_OK) { + val uri = result.data?.data + requireNotNull(uri) - private lateinit var importCsvLauncher: ActivityResultLauncher + lifecycleScope.launch(Dispatchers.IO) { + exportPasswordUseCase(uri) + } + } + } + + private val importCsvLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == RESULT_OK) { + val uri = result.data?.data + requireNotNull(uri) + + lifecycleScope.launch(Dispatchers.IO) { + importPasswordUseCase(uri) + } + } + } override fun onCreate(savedInstanceState: Bundle?) { runBlocking { @@ -42,32 +60,6 @@ class PasswordManagerActivity : AppCompatActivity() { binding = ActivityPasswordManagerBinding.inflate(layoutInflater) setContentView(binding.root) - importCsvLauncher = registerForActivityResult( - ActivityResultContracts.StartActivityForResult() - ) { result -> - if (result.resultCode == RESULT_OK) { - val uri = result.data?.data - requireNotNull(uri) - - lifecycleScope.launch(Dispatchers.IO) { - importPasswordUseCase(uri) - } - } - } - - exportCsvLauncher = registerForActivityResult( - ActivityResultContracts.StartActivityForResult() - ) { result -> - if (result.resultCode == RESULT_OK) { - val uri = result.data?.data - requireNotNull(uri) - - lifecycleScope.launch(Dispatchers.IO) { - exportPasswordUseCase(uri) - } - } - } - collectLatestLifecycleFlow(featureFlagsDatastore.data) { if (!it.isPreviewFeaturesEnabled) { binding.importPasswordBtn.visibility = GONE From 076976c449b0b3d066319c26faaf09955056cc9f Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Mon, 26 Jan 2026 21:07:55 +0530 Subject: [PATCH 5/6] feat: add ui feedback for importing & exporting --- .../password_manager/oldui/PasswordManagerActivity.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt index 6343fb26..22105801 100644 --- a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt +++ b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt @@ -4,7 +4,6 @@ import android.content.Intent import android.os.Bundle import android.view.View.GONE import android.widget.Toast -import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat @@ -35,9 +34,13 @@ class PasswordManagerActivity : AppCompatActivity() { val uri = result.data?.data requireNotNull(uri) + Toast.makeText(this@PasswordManagerActivity, "Exporting...", Toast.LENGTH_SHORT).show() + lifecycleScope.launch(Dispatchers.IO) { exportPasswordUseCase(uri) } + } else { + Toast.makeText(this@PasswordManagerActivity, "Something went wrong...", Toast.LENGTH_SHORT).show() } } @@ -46,9 +49,13 @@ class PasswordManagerActivity : AppCompatActivity() { val uri = result.data?.data requireNotNull(uri) + Toast.makeText(this@PasswordManagerActivity, "Importing...", Toast.LENGTH_SHORT).show() + lifecycleScope.launch(Dispatchers.IO) { importPasswordUseCase(uri) } + } else { + Toast.makeText(this@PasswordManagerActivity, "Something went wrong...", Toast.LENGTH_SHORT).show() } } From 151c4ffccdcd79b110de6d50a6d8582985bb9d06 Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Mon, 26 Jan 2026 21:24:28 +0530 Subject: [PATCH 6/6] fix: finally, finally, finally, i crack it... --- .../passcodes/password_manager/oldui/PasswordManagerActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt index 22105801..1b789ee8 100644 --- a/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt +++ b/password_manager/src/main/kotlin/com/jeeldobariya/passcodes/password_manager/oldui/PasswordManagerActivity.kt @@ -130,7 +130,6 @@ class PasswordManagerActivity : AppCompatActivity() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) setType("text/comma-separated-values") - putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("text/csv", "application/csv")) putExtra(Intent.EXTRA_TITLE, "passwords.csv") }