From 894958995e42f19499d0ba6b45844d6215fe9d5a Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 14 Nov 2023 17:53:07 +0300 Subject: [PATCH 1/7] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt index e919fa41ec..42bd7ec930 100644 --- a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt @@ -112,6 +112,7 @@ internal class MainViewModel @Inject constructor( override fun onHiddenBalanceNotificationAction(isPermanent: Boolean) { onDismissBottomSheet() + stateHolder.updateWithHiddenBalancesToast(true) if (isPermanent) { viewModelScope.launch { updateBalanceHidingSettingsUseCase.invoke { @@ -123,5 +124,6 @@ internal class MainViewModel @Inject constructor( override fun onDismissBottomSheet() { stateHolder.updateWithoutModalNotification() + stateHolder.updateWithHiddenBalancesToast(true) } } \ No newline at end of file From 608fc06cf177b12b09d233e8cf21a2b3663ba306 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 14 Nov 2023 17:54:05 +0300 Subject: [PATCH 2/7] Updated on 2026-08-14 --- .../main/java/com/tangem/tap/features/main/MainViewModel.kt | 2 ++ .../com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt index 42bd7ec930..0d810f77fb 100644 --- a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt @@ -51,6 +51,7 @@ internal class MainViewModel @Inject constructor( } .onEach { if (state.value.modalNotification?.isShow != true) { + listenToFlipsUseCase.isEnabled = false stateHolder.updateWithHiddenBalancesNotification() reduxNavController.navigate(NavigationAction.NavigateTo(AppScreen.ModalNotification)) } @@ -123,6 +124,7 @@ internal class MainViewModel @Inject constructor( } override fun onDismissBottomSheet() { + listenToFlipsUseCase.isEnabled = true stateHolder.updateWithoutModalNotification() stateHolder.updateWithHiddenBalancesToast(true) } diff --git a/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt b/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt index c80577e10e..0c926f6acf 100644 --- a/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt +++ b/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt @@ -14,6 +14,8 @@ class ListenToFlipsUseCase( private val balanceHidingRepository: BalanceHidingRepository, ) { + var isEnabled: Boolean = true + operator fun invoke(): Flow> = channelFlow { flipDetector.getDeviceFlipFlow().collectLatest { val balanceHidingSettings = catch( @@ -24,7 +26,7 @@ class ListenToFlipsUseCase( }, ) - if (balanceHidingSettings.isHidingEnabledInSettings) { + if (balanceHidingSettings.isHidingEnabledInSettings && isEnabled) { catch( block = { balanceHidingRepository.storeBalanceHidingSettings( From cf66f5f2d82e25bc07977201eecee5f6a50df99c Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 14 Nov 2023 17:56:21 +0300 Subject: [PATCH 3/7] Updated on 2026-08-14 --- .../main/ui/ModalNotificationBottomSheetFragment.kt | 8 +++++++- .../main/ui/components/ModalNotificationScreen.kt | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/main/ui/ModalNotificationBottomSheetFragment.kt b/app/src/main/java/com/tangem/tap/features/main/ui/ModalNotificationBottomSheetFragment.kt index 2a40e92ef8..ec7cb8d416 100644 --- a/app/src/main/java/com/tangem/tap/features/main/ui/ModalNotificationBottomSheetFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/main/ui/ModalNotificationBottomSheetFragment.kt @@ -2,12 +2,14 @@ package com.tangem.tap.features.main.ui import android.content.DialogInterface import androidx.activity.compose.BackHandler +import androidx.compose.foundation.background import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.fragment.app.activityViewModels import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.screen.ComposeBottomSheetFragment import com.tangem.core.ui.theme.AppThemeModeHolder import com.tangem.tap.features.main.MainViewModel @@ -37,7 +39,11 @@ internal class ModalNotificationBottomSheetFragment : ComposeBottomSheetFragment when (val content = notification.content) { is ModalNotification -> ModalNotificationContent( - modifier = modifier, + modifier = modifier + .background( + color = TangemTheme.colors.background.primary, + shape = TangemTheme.shapes.bottomSheet, + ), notification = content, ) else -> Unit diff --git a/app/src/main/java/com/tangem/tap/features/main/ui/components/ModalNotificationScreen.kt b/app/src/main/java/com/tangem/tap/features/main/ui/components/ModalNotificationScreen.kt index 3ebb87e8dd..587b734dc0 100644 --- a/app/src/main/java/com/tangem/tap/features/main/ui/components/ModalNotificationScreen.kt +++ b/app/src/main/java/com/tangem/tap/features/main/ui/components/ModalNotificationScreen.kt @@ -88,9 +88,9 @@ private fun ModalNotificationContentPreview_Light( ) { TangemTheme(isDark = false) { ModalNotificationContent( - param, + notification = param, modifier = Modifier.background( - color = TangemTheme.colors.background.plain, + color = TangemTheme.colors.background.primary, shape = TangemTheme.shapes.bottomSheet, ), ) @@ -104,9 +104,9 @@ private fun ModalNotificationContentPreview_Dark( ) { TangemTheme(isDark = true) { ModalNotificationContent( - param, + notification = param, modifier = Modifier.background( - color = TangemTheme.colors.background.plain, + color = TangemTheme.colors.background.primary, shape = TangemTheme.shapes.bottomSheet, ), ) From ed34a8da881674d86710b6d5805e15340c224e86 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 14 Nov 2023 17:57:09 +0300 Subject: [PATCH 4/7] Updated on 2026-08-14 --- .../com/tangem/tap/features/send/ui/SendViewModel.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/SendViewModel.kt b/app/src/main/java/com/tangem/tap/features/send/ui/SendViewModel.kt index fe7c000ae6..4d9bdb266a 100644 --- a/app/src/main/java/com/tangem/tap/features/send/ui/SendViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/send/ui/SendViewModel.kt @@ -17,10 +17,10 @@ import com.tangem.utils.coroutines.CoroutineDispatcherProvider import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import timber.log.Timber import javax.inject.Inject @@ -44,13 +44,12 @@ internal class SendViewModel @Inject constructor( getBalanceHidingSettingsUseCase() .flowWithLifecycle(owner.lifecycle) .onEach { - withContext(dispatchers.main) { - appStateHolder.mainStore?.dispatch(AmountAction.HideBalance(it.isBalanceHidden)) - } + appStateHolder.mainStore?.dispatch(AmountAction.HideBalance(it.isBalanceHidden)) } + .flowOn(dispatchers.main) .launchIn(viewModelScope) - viewModelScope.launch { + viewModelScope.launch(dispatchers.main) { listenToFlipsUseCase() .flowWithLifecycle(owner.lifecycle) .collect() From 7763737278680ab28bdfb52595f7ffec1465feaf Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 14 Nov 2023 17:58:14 +0300 Subject: [PATCH 5/7] Updated on 2026-08-14 --- .../com/tangem/tap/features/main/MainViewModel.kt | 14 +++++++++++--- .../domain/balancehiding/BalanceHidingSettings.kt | 1 + .../domain/balancehiding/ListenToFlipsUseCase.kt | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt index 0d810f77fb..8c26991fa2 100644 --- a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt @@ -80,7 +80,9 @@ internal class MainViewModel @Inject constructor( return@onEach } - displayBalancesHiddenStatusToast(settings) + if (!settings.isUpdateFromToast) { + displayBalancesHiddenStatusToast(settings) + } previousSettings = settings } @@ -97,7 +99,10 @@ internal class MainViewModel @Inject constructor( override fun onHiddenBalanceToastAction() { viewModelScope.launch { updateBalanceHidingSettingsUseCase.invoke { - copy(isBalanceHidden = false) + copy( + isBalanceHidden = false, + isUpdateFromToast = true + ) } } } @@ -105,7 +110,10 @@ internal class MainViewModel @Inject constructor( override fun onShownBalanceToastAction() { viewModelScope.launch { updateBalanceHidingSettingsUseCase.invoke { - copy(isBalanceHidden = true) + copy( + isBalanceHidden = true, + isUpdateFromToast = true + ) } } } diff --git a/domain/balance-hiding/models/src/main/kotlin/com/tangem/domain/balancehiding/BalanceHidingSettings.kt b/domain/balance-hiding/models/src/main/kotlin/com/tangem/domain/balancehiding/BalanceHidingSettings.kt index 2432bbc2ec..b646dd8c30 100644 --- a/domain/balance-hiding/models/src/main/kotlin/com/tangem/domain/balancehiding/BalanceHidingSettings.kt +++ b/domain/balance-hiding/models/src/main/kotlin/com/tangem/domain/balancehiding/BalanceHidingSettings.kt @@ -4,4 +4,5 @@ data class BalanceHidingSettings( val isHidingEnabledInSettings: Boolean, val isBalanceHidden: Boolean, val isBalanceHidingNotificationEnabled: Boolean, + val isUpdateFromToast: Boolean = false, ) \ No newline at end of file diff --git a/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt b/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt index 0c926f6acf..38b29bb587 100644 --- a/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt +++ b/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt @@ -32,6 +32,7 @@ class ListenToFlipsUseCase( balanceHidingRepository.storeBalanceHidingSettings( balanceHidingSettings.copy( isBalanceHidden = !balanceHidingSettings.isBalanceHidden, + isUpdateFromToast = false, ), ) }, From cef6a7b3722c9a7b002bfddcea9d405ab0ab2603 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 14 Nov 2023 18:26:36 +0300 Subject: [PATCH 6/7] Updated on 2026-08-14 --- .../main/java/com/tangem/tap/features/main/MainViewModel.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt index 8c26991fa2..951ad331bc 100644 --- a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt @@ -50,7 +50,7 @@ internal class MainViewModel @Inject constructor( it.isBalanceHidingNotificationEnabled && it.isBalanceHidden } .onEach { - if (state.value.modalNotification?.isShow != true) { + if (state.value.modalNotification?.isShow != true && !it.isUpdateFromToast) { listenToFlipsUseCase.isEnabled = false stateHolder.updateWithHiddenBalancesNotification() reduxNavController.navigate(NavigationAction.NavigateTo(AppScreen.ModalNotification)) @@ -101,7 +101,7 @@ internal class MainViewModel @Inject constructor( updateBalanceHidingSettingsUseCase.invoke { copy( isBalanceHidden = false, - isUpdateFromToast = true + isUpdateFromToast = true, ) } } @@ -112,7 +112,7 @@ internal class MainViewModel @Inject constructor( updateBalanceHidingSettingsUseCase.invoke { copy( isBalanceHidden = true, - isUpdateFromToast = true + isUpdateFromToast = true, ) } } From f394a5b57b5cbe37e3001a731c0c6b51e3850e29 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 14 Nov 2023 19:07:28 +0300 Subject: [PATCH 7/7] Updated on 2026-08-14 --- .../java/com/tangem/tap/features/main/MainViewModel.kt | 4 ++-- .../data/balancehiding/DefaultBalanceHidingRepository.kt | 2 ++ .../tangem/domain/balancehiding/ListenToFlipsUseCase.kt | 8 +++++--- .../balancehiding/repositories/BalanceHidingRepository.kt | 2 ++ 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt index 951ad331bc..5725564ef4 100644 --- a/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/main/MainViewModel.kt @@ -51,7 +51,7 @@ internal class MainViewModel @Inject constructor( } .onEach { if (state.value.modalNotification?.isShow != true && !it.isUpdateFromToast) { - listenToFlipsUseCase.isEnabled = false + listenToFlipsUseCase.changeUpdateEnabled(false) stateHolder.updateWithHiddenBalancesNotification() reduxNavController.navigate(NavigationAction.NavigateTo(AppScreen.ModalNotification)) } @@ -132,7 +132,7 @@ internal class MainViewModel @Inject constructor( } override fun onDismissBottomSheet() { - listenToFlipsUseCase.isEnabled = true + listenToFlipsUseCase.changeUpdateEnabled(true) stateHolder.updateWithoutModalNotification() stateHolder.updateWithHiddenBalancesToast(true) } diff --git a/data/balance-hiding/src/main/java/com/tangem/data/balancehiding/DefaultBalanceHidingRepository.kt b/data/balance-hiding/src/main/java/com/tangem/data/balancehiding/DefaultBalanceHidingRepository.kt index 879bef5f17..780b3705a8 100644 --- a/data/balance-hiding/src/main/java/com/tangem/data/balancehiding/DefaultBalanceHidingRepository.kt +++ b/data/balance-hiding/src/main/java/com/tangem/data/balancehiding/DefaultBalanceHidingRepository.kt @@ -15,6 +15,8 @@ internal class DefaultBalanceHidingRepository( private val dispatchers: CoroutineDispatcherProvider, ) : BalanceHidingRepository { + override var isUpdateEnabled: Boolean = true + override fun getBalanceHidingSettingsFlow(): Flow { return balanceHidingSettingsStore.get() .onStart { emit(getBalanceHidingSettings()) } diff --git a/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt b/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt index 38b29bb587..d518006d05 100644 --- a/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt +++ b/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/ListenToFlipsUseCase.kt @@ -14,8 +14,6 @@ class ListenToFlipsUseCase( private val balanceHidingRepository: BalanceHidingRepository, ) { - var isEnabled: Boolean = true - operator fun invoke(): Flow> = channelFlow { flipDetector.getDeviceFlipFlow().collectLatest { val balanceHidingSettings = catch( @@ -26,7 +24,7 @@ class ListenToFlipsUseCase( }, ) - if (balanceHidingSettings.isHidingEnabledInSettings && isEnabled) { + if (balanceHidingSettings.isHidingEnabledInSettings && balanceHidingRepository.isUpdateEnabled) { catch( block = { balanceHidingRepository.storeBalanceHidingSettings( @@ -43,4 +41,8 @@ class ListenToFlipsUseCase( } } } + + fun changeUpdateEnabled(isUpdateEnabled: Boolean) { + balanceHidingRepository.isUpdateEnabled = isUpdateEnabled + } } \ No newline at end of file diff --git a/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/repositories/BalanceHidingRepository.kt b/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/repositories/BalanceHidingRepository.kt index 84161a07d9..93d21ef4b2 100644 --- a/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/repositories/BalanceHidingRepository.kt +++ b/domain/balance-hiding/src/main/kotlin/com/tangem/domain/balancehiding/repositories/BalanceHidingRepository.kt @@ -5,6 +5,8 @@ import kotlinx.coroutines.flow.Flow interface BalanceHidingRepository { + var isUpdateEnabled: Boolean + fun getBalanceHidingSettingsFlow(): Flow suspend fun storeBalanceHidingSettings(isBalanceHidden: BalanceHidingSettings)