diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/AddToPortfolioBSContentUMFactory.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/AddToPortfolioBSContentUMFactory.kt index 9461484567..5f82c6c481 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/AddToPortfolioBSContentUMFactory.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/AddToPortfolioBSContentUMFactory.kt @@ -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?, ): TangemBottomSheetConfig { - return TangemBottomSheetConfig( + return (currentState ?: TangemBottomSheetConfig.Empty).copy( isShown = portfolioUIData.portfolioBSVisibilityModel.addToPortfolioBSVisibility, onDismissRequest = { onAddToPortfolioVisibilityChange(false) }, content = if (selectedWallet != null && alreadyAddedNetworks != null) { diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MyPortfolioUMFactory.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MyPortfolioUMFactory.kt index 1bc2ecf543..5729f632b6 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MyPortfolioUMFactory.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MyPortfolioUMFactory.kt @@ -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, diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/MyPortfolio.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/MyPortfolio.kt index 51596ceb54..115a39f0bc 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/MyPortfolio.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/MyPortfolio.kt @@ -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) } } diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/state/MyPortfolioUM.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/state/MyPortfolioUM.kt index 104b4fc5e6..5d3286bdb5 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/state/MyPortfolioUM.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/state/MyPortfolioUM.kt @@ -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, 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 + } } \ No newline at end of file