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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+