Updated on 2026-08-14
This commit is contained in:
commit
ff2da3ec3e
8 changed files with 42 additions and 15 deletions
|
|
@ -50,7 +50,8 @@ 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.changeUpdateEnabled(false)
|
||||
stateHolder.updateWithHiddenBalancesNotification()
|
||||
reduxNavController.navigate(NavigationAction.NavigateTo(AppScreen.ModalNotification))
|
||||
}
|
||||
|
|
@ -79,7 +80,9 @@ internal class MainViewModel @Inject constructor(
|
|||
return@onEach
|
||||
}
|
||||
|
||||
displayBalancesHiddenStatusToast(settings)
|
||||
if (!settings.isUpdateFromToast) {
|
||||
displayBalancesHiddenStatusToast(settings)
|
||||
}
|
||||
|
||||
previousSettings = settings
|
||||
}
|
||||
|
|
@ -96,7 +99,10 @@ internal class MainViewModel @Inject constructor(
|
|||
override fun onHiddenBalanceToastAction() {
|
||||
viewModelScope.launch {
|
||||
updateBalanceHidingSettingsUseCase.invoke {
|
||||
copy(isBalanceHidden = false)
|
||||
copy(
|
||||
isBalanceHidden = false,
|
||||
isUpdateFromToast = true,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -104,7 +110,10 @@ internal class MainViewModel @Inject constructor(
|
|||
override fun onShownBalanceToastAction() {
|
||||
viewModelScope.launch {
|
||||
updateBalanceHidingSettingsUseCase.invoke {
|
||||
copy(isBalanceHidden = true)
|
||||
copy(
|
||||
isBalanceHidden = true,
|
||||
isUpdateFromToast = true,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -112,6 +121,7 @@ internal class MainViewModel @Inject constructor(
|
|||
override fun onHiddenBalanceNotificationAction(isPermanent: Boolean) {
|
||||
onDismissBottomSheet()
|
||||
|
||||
stateHolder.updateWithHiddenBalancesToast(true)
|
||||
if (isPermanent) {
|
||||
viewModelScope.launch {
|
||||
updateBalanceHidingSettingsUseCase.invoke {
|
||||
|
|
@ -122,6 +132,8 @@ internal class MainViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onDismissBottomSheet() {
|
||||
listenToFlipsUseCase.changeUpdateEnabled(true)
|
||||
stateHolder.updateWithoutModalNotification()
|
||||
stateHolder.updateWithHiddenBalancesToast(true)
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ internal class DefaultBalanceHidingRepository(
|
|||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
) : BalanceHidingRepository {
|
||||
|
||||
override var isUpdateEnabled: Boolean = true
|
||||
|
||||
override fun getBalanceHidingSettingsFlow(): Flow<BalanceHidingSettings> {
|
||||
return balanceHidingSettingsStore.get()
|
||||
.onStart { emit(getBalanceHidingSettings()) }
|
||||
|
|
|
|||
|
|
@ -4,4 +4,5 @@ data class BalanceHidingSettings(
|
|||
val isHidingEnabledInSettings: Boolean,
|
||||
val isBalanceHidden: Boolean,
|
||||
val isBalanceHidingNotificationEnabled: Boolean,
|
||||
val isUpdateFromToast: Boolean = false,
|
||||
)
|
||||
|
|
@ -24,12 +24,13 @@ class ListenToFlipsUseCase(
|
|||
},
|
||||
)
|
||||
|
||||
if (balanceHidingSettings.isHidingEnabledInSettings) {
|
||||
if (balanceHidingSettings.isHidingEnabledInSettings && balanceHidingRepository.isUpdateEnabled) {
|
||||
catch(
|
||||
block = {
|
||||
balanceHidingRepository.storeBalanceHidingSettings(
|
||||
balanceHidingSettings.copy(
|
||||
isBalanceHidden = !balanceHidingSettings.isBalanceHidden,
|
||||
isUpdateFromToast = false,
|
||||
),
|
||||
)
|
||||
},
|
||||
|
|
@ -40,4 +41,8 @@ class ListenToFlipsUseCase(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun changeUpdateEnabled(isUpdateEnabled: Boolean) {
|
||||
balanceHidingRepository.isUpdateEnabled = isUpdateEnabled
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,8 @@ import kotlinx.coroutines.flow.Flow
|
|||
|
||||
interface BalanceHidingRepository {
|
||||
|
||||
var isUpdateEnabled: Boolean
|
||||
|
||||
fun getBalanceHidingSettingsFlow(): Flow<BalanceHidingSettings>
|
||||
|
||||
suspend fun storeBalanceHidingSettings(isBalanceHidden: BalanceHidingSettings)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue