Skip to content

Commit 85e1243

Browse files
committed
Fix crash when user disables Market tab
1 parent 037d7a9 commit 85e1243

3 files changed

Lines changed: 11 additions & 12 deletions

File tree

app/src/main/java/io/horizontalsystems/bankwallet/modules/main/MainFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,8 @@ private fun MainScreen(
192192
}
193193
) { paddingValues ->
194194
Column {
195-
Crossfade(uiState.selectedTabIndex) {
196-
when (uiState.mainNavItems[it].mainNavItem) {
195+
Crossfade(uiState.selectedTabItem) { navItem ->
196+
when (navItem) {
197197
MainNavigation.Market -> MarketScreen(fragmentNavController)
198198
MainNavigation.Balance -> BalanceScreen(fragmentNavController)
199199
MainNavigation.Transactions -> TransactionsScreen(

app/src/main/java/io/horizontalsystems/bankwallet/modules/main/MainModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ object MainModule {
8989
}
9090

9191
data class UiState(
92-
val selectedTabIndex: Int,
9392
val deeplinkPage: DeeplinkPage?,
9493
val mainNavItems: List<NavigationViewItem>,
9594
val showRateAppDialog: Boolean,
@@ -98,6 +97,7 @@ object MainModule {
9897
val torEnabled: Boolean,
9998
val wcSupportState: WCManager.SupportState?,
10099
val openSend: OpenSendTokenSelect?,
100+
val selectedTabItem: MainNavigation
101101
)
102102
}
103103

app/src/main/java/io/horizontalsystems/bankwallet/modules/main/MainViewModel.kt

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ class MainViewModel(
8787
MainNavigation.Settings,
8888
)
8989
}
90+
private val selectedTabItem: MainNavigation
91+
get() = mainNavItems.firstOrNull { it.selected }?.mainNavItem
92+
?: MainNavigation.Balance
9093

9194
private var selectedTabIndex = getTabIndexToOpen()
9295
private var deeplinkPage: DeeplinkPage? = null
@@ -100,15 +103,7 @@ class MainViewModel(
100103

101104
init {
102105
localStorage.marketsTabEnabledFlow.collectWith(viewModelScope) { enabled ->
103-
var navItemSize = items.size
104106
marketsTabEnabled = enabled
105-
if (navItemSize != items.size) {
106-
if (enabled) {
107-
selectedTabIndex += 1
108-
} else {
109-
selectedTabIndex -= 1
110-
}
111-
}
112107
syncNavigation()
113108
}
114109

@@ -165,7 +160,6 @@ class MainViewModel(
165160
}
166161

167162
override fun createState() = MainModule.UiState(
168-
selectedTabIndex = selectedTabIndex,
169163
deeplinkPage = deeplinkPage,
170164
mainNavItems = mainNavItems,
171165
showRateAppDialog = showRateAppDialog,
@@ -174,6 +168,7 @@ class MainViewModel(
174168
wcSupportState = wcSupportState,
175169
torEnabled = torEnabled,
176170
openSend = openSendTokenSelect,
171+
selectedTabItem = selectedTabItem,
177172
)
178173

179174
private fun isTransactionsTabEnabled(): Boolean = !accountManager.isAccountsEmpty
@@ -379,6 +374,10 @@ class MainViewModel(
379374
}
380375

381376
private fun syncNavigation() {
377+
val currentNavItem = mainNavItems.getOrNull(selectedTabIndex)?.mainNavItem
378+
val newIndex = currentNavItem?.let { items.indexOf(it) } ?: -1
379+
selectedTabIndex = if (newIndex >= 0) newIndex else items.indexOf(MainNavigation.Balance).coerceAtLeast(0)
380+
382381
val newNavItems = navigationItems()
383382

384383
// Only update if structure changed

0 commit comments

Comments
 (0)