diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c77a086..87f112a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,6 +30,9 @@ + R.id.nav_transfer + "sh.sar.basedbank.OPEN_SCAN_QR" -> R.id.nav_transfer + "sh.sar.basedbank.OPEN_PAY_WITH_CARD" -> R.id.nav_pay_with_card + else -> -1 + } + val autoScan = intent?.action == "sh.sar.basedbank.OPEN_SCAN_QR" + val target = when { !onboardingDone -> OnboardingActivity::class.java !hasCredentials -> LoginActivity::class.java @@ -31,7 +40,10 @@ class MainActivity : AppCompatActivity() { (application as BasedBankApp).isUnlocked = true } - startActivity(Intent(this, target)) + startActivity(Intent(this, target).apply { + if (navDestination != -1) putExtra("nav_destination", navDestination) + if (autoScan) putExtra("auto_scan", true) + }) finish() } } diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt index e8fd174..eaef1be 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt @@ -229,10 +229,19 @@ class HomeActivity : AppCompatActivity() { viewModel.hideAmounts.value = getSharedPreferences("prefs", MODE_PRIVATE).getBoolean("hide_amounts", false) - // Show dashboard on first create + // Show dashboard on first create, or navigate to shortcut destination if (savedInstanceState == null) { - show(DashboardFragment()) - binding.navigationView.setCheckedItem(R.id.nav_dashboard) + val navDest = intent.getIntExtra("nav_destination", -1) + val autoScan = intent.getBooleanExtra("auto_scan", false) + if (navDest != -1) { + val fragment = if (autoScan && navDest == R.id.nav_transfer) + TransferFragment.newInstanceWithAutoScan() + else null + navigateTo(navDest, fragment) + } else { + show(DashboardFragment()) + binding.navigationView.setCheckedItem(R.id.nav_dashboard) + } } onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt index 1f7fb0b..9418aa6 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt @@ -151,6 +151,11 @@ class TransferFragment : Fragment() { private const val ARG_AMOUNT_PREFILL = "amount_prefill" private const val ARG_REMARKS_PREFILL = "remarks_prefill" private const val ARG_BML_QR_URL = "bml_qr_url" + private const val ARG_AUTO_SCAN = "auto_scan" + + fun newInstanceWithAutoScan() = TransferFragment().apply { + arguments = Bundle().apply { putBoolean(ARG_AUTO_SCAN, true) } + } fun newInstanceFromBmlQr(qrUrl: String, fromAccountNumber: String? = null) = TransferFragment().apply { arguments = Bundle().apply { @@ -253,6 +258,10 @@ class TransferFragment : Fragment() { arguments?.getString(ARG_REMARKS_PREFILL)?.let { binding.etRemarks.setText(it) } arguments?.getString(ARG_BML_QR_URL)?.let { lookupBmlQrMerchant(it) } + + if (arguments?.getBoolean(ARG_AUTO_SCAN, false) == true) { + qrLauncher.launch(Intent(requireContext(), QrScannerActivity::class.java)) + } } private fun lookupBmlQrMerchant(qrUrl: String) { diff --git a/app/src/main/res/drawable/ic_shortcut_pay_card.xml b/app/src/main/res/drawable/ic_shortcut_pay_card.xml new file mode 100644 index 0000000..d7c04ef --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_pay_card.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_shortcut_pay_card_fg.xml b/app/src/main/res/drawable/ic_shortcut_pay_card_fg.xml new file mode 100644 index 0000000..61f4b7e --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_pay_card_fg.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_shortcut_scan_qr.xml b/app/src/main/res/drawable/ic_shortcut_scan_qr.xml new file mode 100644 index 0000000..b9dd5cc --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_scan_qr.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_shortcut_scan_qr_fg.xml b/app/src/main/res/drawable/ic_shortcut_scan_qr_fg.xml new file mode 100644 index 0000000..e8cc08e --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_scan_qr_fg.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_shortcut_transfer.xml b/app/src/main/res/drawable/ic_shortcut_transfer.xml new file mode 100644 index 0000000..e7ace6b --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_transfer.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_shortcut_transfer_fg.xml b/app/src/main/res/drawable/ic_shortcut_transfer_fg.xml new file mode 100644 index 0000000..db83b8f --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_transfer_fg.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/xml/shortcuts.xml b/app/src/main/res/xml/shortcuts.xml new file mode 100644 index 0000000..c8d5579 --- /dev/null +++ b/app/src/main/res/xml/shortcuts.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + +