From 0654c711d68804bc2e599d54678c632a3b6c912a Mon Sep 17 00:00:00 2001 From: Shihaam Abdul Rahman Date: Wed, 27 May 2026 21:28:19 +0500 Subject: [PATCH] bug fix: nav bar buttons disappearing after some updates --- .../sar/basedbank/ui/home/NavCustomization.kt | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/NavCustomization.kt b/app/src/main/java/sh/sar/basedbank/ui/home/NavCustomization.kt index 74495f5..91a3426 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/NavCustomization.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/NavCustomization.kt @@ -9,6 +9,7 @@ object NavCustomization { data class NavItemDef( val id: Int, + val key: String, @DrawableRes val iconRes: Int, @StringRes val titleRes: Int, @StringRes val descriptionRes: Int @@ -16,42 +17,48 @@ object NavCustomization { /** All items that can occupy either a bottom nav slot or the "More" screen. */ val ALL_SWAPPABLE = listOf( - NavItemDef(R.id.nav_accounts, R.drawable.ic_nav_accounts, R.string.nav_accounts, R.string.nav_desc_accounts), - NavItemDef(R.id.nav_contacts, R.drawable.ic_contacts, R.string.nav_contacts, R.string.nav_desc_contacts), - NavItemDef(R.id.nav_transfer, R.drawable.ic_send, R.string.transfer, R.string.nav_desc_transfer), - NavItemDef(R.id.nav_pay_mv_qr, R.drawable.ic_qr_scan, R.string.pay_mv_qr, R.string.nav_desc_pay_mv_qr), - NavItemDef(R.id.nav_activities, R.drawable.ic_nav_activities, R.string.nav_activities, R.string.nav_desc_activities), - NavItemDef(R.id.nav_transfer_history, R.drawable.ic_nav_transfer_history, R.string.nav_transfer_history, R.string.nav_desc_transfer_history), - NavItemDef(R.id.nav_finances, R.drawable.ic_nav_finances, R.string.nav_finances, R.string.nav_desc_finances), - NavItemDef(R.id.nav_pay_with_card, R.drawable.ic_nav_card, R.string.nav_pay_with_card, R.string.nav_desc_pay_with_card), - NavItemDef(R.id.nav_card_settings, R.drawable.ic_nav_card, R.string.nav_card_settings, R.string.nav_desc_card_settings), - NavItemDef(R.id.nav_otp, R.drawable.ic_nav_otp, R.string.nav_otp, R.string.nav_desc_otp), - NavItemDef(R.id.nav_settings, R.drawable.ic_nav_settings, R.string.nav_settings, R.string.nav_desc_settings), + NavItemDef(R.id.nav_accounts, "nav_accounts", R.drawable.ic_nav_accounts, R.string.nav_accounts, R.string.nav_desc_accounts), + NavItemDef(R.id.nav_contacts, "nav_contacts", R.drawable.ic_contacts, R.string.nav_contacts, R.string.nav_desc_contacts), + NavItemDef(R.id.nav_transfer, "nav_transfer", R.drawable.ic_send, R.string.transfer, R.string.nav_desc_transfer), + NavItemDef(R.id.nav_pay_mv_qr, "nav_pay_mv_qr", R.drawable.ic_qr_scan, R.string.pay_mv_qr, R.string.nav_desc_pay_mv_qr), + NavItemDef(R.id.nav_activities, "nav_activities", R.drawable.ic_nav_activities, R.string.nav_activities, R.string.nav_desc_activities), + NavItemDef(R.id.nav_transfer_history, "nav_transfer_history", R.drawable.ic_nav_transfer_history, R.string.nav_transfer_history, R.string.nav_desc_transfer_history), + NavItemDef(R.id.nav_finances, "nav_finances", R.drawable.ic_nav_finances, R.string.nav_finances, R.string.nav_desc_finances), + NavItemDef(R.id.nav_pay_with_card, "nav_pay_with_card", R.drawable.ic_nav_card, R.string.nav_pay_with_card, R.string.nav_desc_pay_with_card), + NavItemDef(R.id.nav_card_settings, "nav_card_settings", R.drawable.ic_nav_card, R.string.nav_card_settings, R.string.nav_desc_card_settings), + NavItemDef(R.id.nav_otp, "nav_otp", R.drawable.ic_nav_otp, R.string.nav_otp, R.string.nav_desc_otp), + NavItemDef(R.id.nav_settings, "nav_settings", R.drawable.ic_nav_settings, R.string.nav_settings, R.string.nav_desc_settings), ) + private fun keyToId(key: String?, default: Int) = + ALL_SWAPPABLE.find { it.key == key }?.id ?: default + + private fun idToKey(id: Int) = + ALL_SWAPPABLE.find { it.id == id }?.key + fun getSlots(prefs: SharedPreferences): List = listOf( - prefs.getInt("bottom_nav_slot_1", R.id.nav_accounts), - prefs.getInt("bottom_nav_slot_2", R.id.nav_contacts), - prefs.getInt("bottom_nav_slot_3", R.id.nav_transfer), + keyToId(prefs.getString("bottom_nav_slot_1_key", null), R.id.nav_accounts), + keyToId(prefs.getString("bottom_nav_slot_2_key", null), R.id.nav_contacts), + keyToId(prefs.getString("bottom_nav_slot_3_key", null), R.id.nav_transfer), ) fun saveSlots(prefs: SharedPreferences, slots: List) { prefs.edit() - .putInt("bottom_nav_slot_1", slots[0]) - .putInt("bottom_nav_slot_2", slots[1]) - .putInt("bottom_nav_slot_3", slots[2]) + .putString("bottom_nav_slot_1_key", idToKey(slots[0]) ?: "nav_accounts") + .putString("bottom_nav_slot_2_key", idToKey(slots[1]) ?: "nav_contacts") + .putString("bottom_nav_slot_3_key", idToKey(slots[2]) ?: "nav_transfer") .apply() } fun getQuickActions(prefs: SharedPreferences): List = listOf( - prefs.getInt("quick_action_1", R.id.nav_transfer), - prefs.getInt("quick_action_2", R.id.nav_pay_mv_qr), + keyToId(prefs.getString("quick_action_1_key", null), R.id.nav_transfer), + keyToId(prefs.getString("quick_action_2_key", null), R.id.nav_pay_mv_qr), ) fun saveQuickActions(prefs: SharedPreferences, ids: List) { prefs.edit() - .putInt("quick_action_1", ids[0]) - .putInt("quick_action_2", ids[1]) + .putString("quick_action_1_key", idToKey(ids[0]) ?: "nav_transfer") + .putString("quick_action_2_key", idToKey(ids[1]) ?: "nav_pay_mv_qr") .apply() }