Updated on 2026-08-14
This commit is contained in:
parent
3da4771d66
commit
3baed1e815
57 changed files with 1797 additions and 370 deletions
|
|
@ -5,9 +5,7 @@ import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
|
|||
|
||||
interface AddToPortfolioComponent : ComposableBottomSheetComponent {
|
||||
|
||||
data class Params(
|
||||
val addToPortfolioManager: AddToPortfolioManager,
|
||||
)
|
||||
data class Params(val addToPortfolioManager: AddToPortfolioManager)
|
||||
|
||||
interface Factory : ComponentFactory<Params, AddToPortfolioComponent>
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.tangem.features.commonfeatures.api.addtoportfolio
|
|||
import com.tangem.domain.markets.TokenMarketInfo
|
||||
import com.tangem.domain.markets.TokenMarketParams
|
||||
import com.tangem.domain.models.account.AccountStatus
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.wallet.UserWallet
|
||||
import com.tangem.features.commonfeatures.api.portfolioselector.PortfolioFetcher
|
||||
|
|
@ -18,6 +19,7 @@ interface AddToPortfolioManager : AddToPortfolioManagerInternal {
|
|||
|
||||
val onDismiss: Channel<Unit>
|
||||
val onSuccessAdded: Channel<Result>
|
||||
val onAddedTokenClick: Channel<Result>
|
||||
|
||||
val portfolioFetcher: PortfolioFetcher
|
||||
val state: StateFlow<State>
|
||||
|
|
@ -27,36 +29,34 @@ interface AddToPortfolioManager : AddToPortfolioManagerInternal {
|
|||
|
||||
sealed interface State {
|
||||
data object Loading : State
|
||||
data class Ready(
|
||||
val availableToAddData: AvailableToAddData,
|
||||
) : State {
|
||||
data class Ready(val availableToAddData: AvailableToAddData) : State {
|
||||
val isAvailableToAdd: Boolean get() = availableToAddData.isAvailableToAdd
|
||||
val isSinglePortfolio: Boolean get() = availableToAddData.isSinglePortfolio
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class AnalyticsParams(
|
||||
val source: String?,
|
||||
)
|
||||
data class AnalyticsParams(val source: String?)
|
||||
|
||||
interface Factory {
|
||||
fun create(scope: CoroutineScope, settings: Settings, analyticsParams: AnalyticsParams): AddToPortfolioManager
|
||||
}
|
||||
|
||||
sealed interface LaunchMode {
|
||||
data object DirectAdd : LaunchMode
|
||||
data class ViaUserPortfolio(val rawCurrencyId: CryptoCurrency.RawID) : LaunchMode
|
||||
}
|
||||
|
||||
/**
|
||||
* Immutable settings
|
||||
*/
|
||||
data class Settings(
|
||||
val shouldSkipTokenActionsScreen: Boolean = false,
|
||||
val launchMode: LaunchMode = LaunchMode.DirectAdd,
|
||||
) {
|
||||
companion object {
|
||||
val DefaultMarket = Settings(
|
||||
shouldSkipTokenActionsScreen = false,
|
||||
)
|
||||
val ChooseToken = Settings(
|
||||
shouldSkipTokenActionsScreen = true,
|
||||
)
|
||||
val DefaultMarket = Settings(shouldSkipTokenActionsScreen = false)
|
||||
val ChooseToken = Settings(shouldSkipTokenActionsScreen = true)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -64,10 +64,7 @@ interface AddToPortfolioManager : AddToPortfolioManagerInternal {
|
|||
* Mutable parameters
|
||||
* Updates may trigger reload [State]
|
||||
*/
|
||||
data class Params(
|
||||
val networks: List<TokenMarketInfo.Network>,
|
||||
val token: TokenMarketParams,
|
||||
)
|
||||
data class Params(val networks: List<TokenMarketInfo.Network>, val token: TokenMarketParams)
|
||||
|
||||
data class Result(
|
||||
val wallet: UserWallet,
|
||||
|
|
@ -88,4 +85,5 @@ interface AddToPortfolioManagerInternal {
|
|||
|
||||
fun onDismiss()
|
||||
fun onSuccessAdded(result: AddToPortfolioManager.Result)
|
||||
fun onAddedTokenClick(result: AddToPortfolioManager.Result)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue