Updated on 2026-08-14
This commit is contained in:
parent
1ffa785bc0
commit
e910d4cb3e
11 changed files with 56 additions and 6 deletions
|
|
@ -28,6 +28,7 @@ import com.tangem.feature.wallet.presentation.organizetokens.OrganizeTokensScree
|
|||
import com.tangem.feature.wallet.presentation.organizetokens.OrganizeTokensViewModel
|
||||
import com.tangem.feature.wallet.presentation.wallet.ui.WalletScreen
|
||||
import com.tangem.feature.wallet.presentation.wallet.viewmodels.WalletViewModel
|
||||
import com.tangem.features.managetokens.navigation.ExpandableState
|
||||
import com.tangem.features.managetokens.navigation.ManageTokensUi
|
||||
import com.tangem.features.tokendetails.navigation.TokenDetailsRouter
|
||||
import kotlin.properties.Delegates
|
||||
|
|
@ -62,10 +63,13 @@ internal class DefaultWalletRouter(
|
|||
state = viewModel.uiState.collectAsStateWithLifecycle().value,
|
||||
bottomSheetHeaderHeightProvider = { bottomSheetHeaderHeight },
|
||||
bottomSheetContent = {
|
||||
val state = remember { mutableStateOf(ExpandableState.COLLAPSED) }
|
||||
// Manage Tokens
|
||||
manageTokensUi.Content(
|
||||
onHeaderSizeChange = { bottomSheetHeaderHeight = it },
|
||||
state = state,
|
||||
)
|
||||
viewModel.setExpandableState(state)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,5 +58,6 @@ internal interface InnerWalletRouter : WalletRouter {
|
|||
/** Open manage tokens screen */
|
||||
fun openManageTokensScreen()
|
||||
|
||||
/** Open scan failed dialog */
|
||||
fun openScanFailedDialog()
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package com.tangem.feature.wallet.presentation.wallet.state
|
||||
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent
|
||||
import com.tangem.core.ui.event.consumedEvent
|
||||
import com.tangem.domain.wallets.models.UserWalletId
|
||||
|
|
@ -11,6 +12,7 @@ import com.tangem.feature.wallet.presentation.wallet.state.transformers.CloseBot
|
|||
import com.tangem.feature.wallet.presentation.wallet.state.transformers.OpenBottomSheetTransformer
|
||||
import com.tangem.feature.wallet.presentation.wallet.state.transformers.WalletScreenStateTransformer
|
||||
import com.tangem.features.managetokens.featuretoggles.ManageTokensFeatureToggles
|
||||
import com.tangem.features.managetokens.navigation.ExpandableState
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
|
@ -86,6 +88,7 @@ internal class WalletStateController @Inject constructor(
|
|||
event = consumedEvent(),
|
||||
isHidingMode = false,
|
||||
manageTokenRedesignToggle = manageTokensFeatureToggles.isRedesignedScreenEnabled,
|
||||
manageTokensExpandableState = mutableStateOf(ExpandableState.EXPANDED),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,13 @@
|
|||
package com.tangem.feature.wallet.presentation.wallet.state.model
|
||||
|
||||
import androidx.compose.runtime.MutableState
|
||||
import com.tangem.core.ui.event.StateEvent
|
||||
import com.tangem.features.managetokens.navigation.ExpandableState
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
||||
internal data class WalletScreenState(
|
||||
val onBackClick: () -> Unit,
|
||||
val manageTokensExpandableState: MutableState<ExpandableState>,
|
||||
val topBarConfig: WalletTopBarConfig,
|
||||
val selectedWalletIndex: Int,
|
||||
val wallets: ImmutableList<WalletState>,
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ import com.tangem.feature.wallet.presentation.wallet.ui.components.visa.VisaTxDe
|
|||
import com.tangem.feature.wallet.presentation.wallet.ui.components.visa.balancesAndLimitsBlock
|
||||
import com.tangem.feature.wallet.presentation.wallet.ui.components.visa.depositButton
|
||||
import com.tangem.feature.wallet.presentation.wallet.ui.utils.changeWalletAnimator
|
||||
import com.tangem.features.managetokens.navigation.ExpandableState
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
|
@ -264,6 +265,7 @@ private fun BaseScaffoldManageTokenRedesign(
|
|||
|
||||
BottomSheetStateEffects(
|
||||
bottomSheetState = bottomSheetState,
|
||||
state = state,
|
||||
showManageTokensBottomSheet = showManageTokensBottomSheet,
|
||||
alertConfig = alertConfig,
|
||||
keyboardShown = keyboardShown,
|
||||
|
|
@ -370,9 +372,11 @@ private fun BottomSheetScrim(color: Color, visible: Boolean, onDismissRequest: (
|
|||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Suppress("CyclomaticComplexMethod")
|
||||
@Composable
|
||||
private fun BottomSheetStateEffects(
|
||||
bottomSheetState: SheetState,
|
||||
state: WalletScreenState,
|
||||
showManageTokensBottomSheet: Boolean,
|
||||
alertConfig: WalletAlertState?,
|
||||
keyboardShown: State<Keyboard>,
|
||||
|
|
@ -437,6 +441,15 @@ private fun BottomSheetStateEffects(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
val isSheetHidden = bottomSheetState.targetValue == SheetValue.PartiallyExpanded
|
||||
LaunchedEffect(isSheetHidden) {
|
||||
if (isSheetHidden) {
|
||||
state.manageTokensExpandableState.value = ExpandableState.COLLAPSED
|
||||
} else {
|
||||
state.manageTokensExpandableState.value = ExpandableState.EXPANDED
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.tangem.feature.wallet.presentation.wallet.viewmodels
|
||||
|
||||
import androidx.compose.runtime.MutableState
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
|
|
@ -26,6 +27,7 @@ import com.tangem.feature.wallet.presentation.wallet.state.transformers.*
|
|||
import com.tangem.feature.wallet.presentation.wallet.state.utils.WalletEventSender
|
||||
import com.tangem.feature.wallet.presentation.wallet.utils.ScreenLifecycleProvider
|
||||
import com.tangem.feature.wallet.presentation.wallet.viewmodels.intents.WalletClickIntents
|
||||
import com.tangem.features.managetokens.navigation.ExpandableState
|
||||
import com.tangem.utils.Provider
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.coroutines.JobHolder
|
||||
|
|
@ -81,6 +83,12 @@ internal class WalletViewModel @Inject constructor(
|
|||
clickIntents.initialize(router, viewModelScope)
|
||||
}
|
||||
|
||||
fun setExpandableState(state: MutableState<ExpandableState>) {
|
||||
stateHolder.update {
|
||||
it.copy(manageTokensExpandableState = state)
|
||||
}
|
||||
}
|
||||
|
||||
fun subscribeToLifecycle(lifecycleOwner: LifecycleOwner) {
|
||||
lifecycleOwner.lifecycle.addObserver(screenLifecycleProvider)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue