Updated on 2026-08-14

This commit is contained in:
Tangem 2025-01-17 10:47:02 +03:00
parent 10fc588872
commit 30364467f1
4 changed files with 25 additions and 12 deletions

View file

@ -38,18 +38,20 @@ internal class AddToPortfolioBSContentUMFactory(
/**
* Create [TangemBottomSheetConfig]
*
* @param portfolioData portfolio data
* @param portfolioUIData portfolio bottom sheet visibility model
* @param selectedWallet selected wallet
* @param alreadyAddedNetworks already added networks
*/
fun create(
currentState: TangemBottomSheetConfig?,
portfolioData: PortfolioData,
portfolioUIData: PortfolioUIData,
selectedWallet: UserWallet?,
alreadyAddedNetworks: Set<String>?,
): TangemBottomSheetConfig {
return TangemBottomSheetConfig(
return (currentState ?: TangemBottomSheetConfig.Empty).copy(
isShown = portfolioUIData.portfolioBSVisibilityModel.addToPortfolioBSVisibility,
onDismissRequest = { onAddToPortfolioVisibilityChange(false) },
content = if (selectedWallet != null && alreadyAddedNetworks != null) {

View file

@ -14,8 +14,11 @@ import kotlinx.collections.immutable.ImmutableList
/**
* Factory for creating [MyPortfolioUM]
*
* @property onAddClick callback when user wants to add new token
* @property onTokenItemClick callback when user wants to see actions with token
* @property onAddClick callback when user wants to add new token
* @property addToPortfolioBSContentUMFactory factory for creating add to portfolio bottom sheet content
* @property tokenActionsHandler token actions handler
* @property currentState current state provider
* @property updateTokens callback for updating tokens
*
[REDACTED_AUTHOR]
*/
@ -87,6 +90,7 @@ internal class MyPortfolioUMFactory(
?.toSet()
return addToPortfolioBSContentUMFactory.create(
currentState = currentState().addToPortfolioBSConfig,
portfolioData = portfolioData,
portfolioUIData = portfolioUIData,
selectedWallet = selectedWallet,

View file

@ -58,10 +58,9 @@ internal fun MyPortfolio(state: MyPortfolioUM, modifier: Modifier = Modifier) {
}
}
when (state) {
is MyPortfolioUM.AddFirstToken -> AddToPortfolioBottomSheet(config = state.addToPortfolioBSConfig)
is MyPortfolioUM.Tokens -> AddToPortfolioBottomSheet(config = state.addToPortfolioBSConfig)
else -> Unit
val bsConfig = state.addToPortfolioBSConfig
if (bsConfig != null) {
AddToPortfolioBottomSheet(config = bsConfig)
}
}

View file

@ -7,10 +7,12 @@ import kotlinx.collections.immutable.ImmutableList
@Immutable
internal sealed class MyPortfolioUM {
abstract val addToPortfolioBSConfig: TangemBottomSheetConfig?
data class Tokens(
override val addToPortfolioBSConfig: TangemBottomSheetConfig,
val tokens: ImmutableList<PortfolioTokenUM>,
val buttonState: AddButtonState,
val addToPortfolioBSConfig: TangemBottomSheetConfig,
val tokenReceiveBSConfig: TangemBottomSheetConfig,
val onAddClick: () -> Unit,
) : MyPortfolioUM() {
@ -23,13 +25,19 @@ internal sealed class MyPortfolioUM {
}
data class AddFirstToken(
val addToPortfolioBSConfig: TangemBottomSheetConfig,
override val addToPortfolioBSConfig: TangemBottomSheetConfig,
val onAddClick: () -> Unit,
) : MyPortfolioUM()
data object Loading : MyPortfolioUM()
data object Loading : MyPortfolioUM() {
override val addToPortfolioBSConfig: TangemBottomSheetConfig? = null
}
data object Unavailable : MyPortfolioUM()
data object Unavailable : MyPortfolioUM() {
override val addToPortfolioBSConfig: TangemBottomSheetConfig? = null
}
data object UnavailableForWallet : MyPortfolioUM()
data object UnavailableForWallet : MyPortfolioUM() {
override val addToPortfolioBSConfig: TangemBottomSheetConfig? = null
}
}