From 22dfefccc2875ae823469b0f1aab91637b120df6 Mon Sep 17 00:00:00 2001 From: bakyt Date: Mon, 20 May 2024 13:57:42 +0600 Subject: [PATCH] Add setting to hide balance tab buttons --- .../bankwallet/core/Interfaces.kt | 2 ++ .../core/managers/LocalStorageManager.kt | 9 ++++++ .../modules/balance/BalanceViewModel.kt | 14 +++++++-- .../modules/balance/ui/BalanceItems.kt | 2 +- .../settings/appearance/AppearanceFragment.kt | 29 +++++++++++++++++-- .../appearance/AppearanceViewModel.kt | 12 +++++++- app/src/main/res/values/strings.xml | 1 + 7 files changed, 63 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/Interfaces.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/Interfaces.kt index 732272a1cb..4dd5b0ebb3 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/Interfaces.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/Interfaces.kt @@ -112,6 +112,8 @@ interface ILocalStorage { var relaunchBySettingChange: Boolean var marketsTabEnabled: Boolean val marketsTabEnabledFlow: StateFlow + var balanceTabButtonsEnabled: Boolean + val balanceTabButtonsEnabledFlow: StateFlow var nonRecommendedAccountAlertDismissedAccounts: Set var personalSupportEnabled: Boolean var hideSuspiciousTransactions: Boolean diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/LocalStorageManager.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/LocalStorageManager.kt index f50ada537c..48842eb06a 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/LocalStorageManager.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/LocalStorageManager.kt @@ -450,6 +450,15 @@ class LocalStorageManager( } } + override var balanceTabButtonsEnabled: Boolean + get() = preferences.getBoolean("balanceTabButtonsEnabled", true) + set(value) { + preferences.edit().putBoolean("balanceTabButtonsEnabled", value).apply() + balanceTabButtonsEnabledFlow.update { value } + } + + override val balanceTabButtonsEnabledFlow = MutableStateFlow(balanceTabButtonsEnabled) + override var personalSupportEnabled: Boolean get() = preferences.getBoolean(PERSONAL_SUPPORT_ENABLED, false) set(enabled) { diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/BalanceViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/BalanceViewModel.kt index a839f9d0d3..446a0110e2 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/BalanceViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/BalanceViewModel.kt @@ -52,6 +52,7 @@ class BalanceViewModel( private var isRefreshing = false private var openSendTokenSelect: OpenSendTokenSelect? = null private var errorMessage: String? = null + private var balanceTabButtonsEnabled = localStorage.balanceTabButtonsEnabled val sortTypes = listOf(BalanceSortType.Value, BalanceSortType.Name, BalanceSortType.PercentGrowth) @@ -90,18 +91,26 @@ class BalanceViewModel( } } + viewModelScope.launch { + localStorage.balanceTabButtonsEnabledFlow.collect { + balanceTabButtonsEnabled = it + emitState() + } + } + service.start() totalBalance.start(viewModelScope) } - override fun createState()= BalanceUiState( + override fun createState() = BalanceUiState( balanceViewItems = balanceViewItems, viewState = viewState, isRefreshing = isRefreshing, headerNote = headerNote(), errorMessage = errorMessage, - openSend = openSendTokenSelect + openSend = openSendTokenSelect, + balanceTabButtonsEnabled = balanceTabButtonsEnabled ) private suspend fun handleUpdatedBalanceViewType(balanceViewType: BalanceViewType) { @@ -329,6 +338,7 @@ data class BalanceUiState( val headerNote: HeaderNote, val errorMessage: String?, val openSend: OpenSendTokenSelect? = null, + val balanceTabButtonsEnabled: Boolean, ) data class OpenSendTokenSelect( diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/ui/BalanceItems.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/ui/BalanceItems.kt index 8f389452ce..b863315231 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/ui/BalanceItems.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/ui/BalanceItems.kt @@ -261,7 +261,7 @@ fun BalanceItems( ) } - if (!accountViewItem.isWatchAccount) { + if (uiState.balanceTabButtonsEnabled && !accountViewItem.isWatchAccount) { item { Row( modifier = Modifier.padding(horizontal = 24.dp), diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/settings/appearance/AppearanceFragment.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/settings/appearance/AppearanceFragment.kt index f51a4fb889..cc04211228 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/settings/appearance/AppearanceFragment.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/settings/appearance/AppearanceFragment.kt @@ -159,7 +159,7 @@ fun AppearanceScreen(navController: NavController) { HeaderText(text = stringResource(id = R.string.Appearance_Tab)) CellUniversalLawrenceSection( - listOf { + listOf({ RowUniversal( modifier = Modifier.padding(horizontal = 16.dp), ) { @@ -185,8 +185,33 @@ fun AppearanceScreen(navController: NavController) { ) } + }, { + RowUniversal( + modifier = Modifier.padding(horizontal = 16.dp), + ) { + Image( + modifier = Modifier.size(24.dp), + painter = painterResource(id = R.drawable.ic_more_24), + contentDescription = null, + colorFilter = ColorFilter.tint(ComposeAppTheme.colors.grey) + ) - } + body_leah( + text = stringResource(id = R.string.Appearance_BalanceTabButtons), + modifier = Modifier + .weight(1f) + .padding(horizontal = 16.dp) + ) + + HsSwitch( + checked = uiState.balanceTabButtonsEnabled, + onCheckedChange = { + viewModel.onSetBalanceTabButtons(it) + } + ) + + } + }) ) Spacer(modifier = Modifier.height(24.dp)) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/settings/appearance/AppearanceViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/settings/appearance/AppearanceViewModel.kt index 000a00df24..a3b9e0db68 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/settings/appearance/AppearanceViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/settings/appearance/AppearanceViewModel.kt @@ -33,6 +33,7 @@ class AppearanceViewModel( private var themeOptions = themeService.optionsFlow.value private var baseTokenOptions = buildBaseTokenSelect(baseTokenManager.baseTokenFlow.value) private var marketsTabEnabled = localStorage.marketsTabEnabled + private var balanceTabButtonsEnabled = localStorage.balanceTabButtonsEnabled private var balanceViewTypeOptions = buildBalanceViewTypeSelect(balanceViewTypeManager.balanceViewTypeFlow.value) private val currentLanguageDisplayName: String @@ -87,7 +88,8 @@ class AppearanceViewModel( balanceViewTypeOptions = balanceViewTypeOptions, marketsTabEnabled = marketsTabEnabled, currentLanguage = currentLanguageDisplayName, - baseCurrencyCode = baseCurrencyCode + baseCurrencyCode = baseCurrencyCode, + balanceTabButtonsEnabled = balanceTabButtonsEnabled ) private fun buildBaseTokenSelect(token: Token?): SelectOptional { @@ -153,6 +155,13 @@ class AppearanceViewModel( emitState() } + fun onSetBalanceTabButtons(enabled: Boolean) { + localStorage.balanceTabButtonsEnabled = enabled + + balanceTabButtonsEnabled = enabled + emitState() + } + } data class AppearanceUIState( @@ -164,4 +173,5 @@ data class AppearanceUIState( val marketsTabEnabled: Boolean, val currentLanguage: String, val baseCurrencyCode: String, + val balanceTabButtonsEnabled: Boolean, ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 85d2a305c9..b786c9a06f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -967,6 +967,7 @@ BALANCE VALUE Changing icon will close application Markets Tab + Balance Tab Buttons Balance Auto Hide Automatically hides balance each time the app is opened, regardless of previous preferences.