Updated on 2026-08-14
This commit is contained in:
parent
c637c9a194
commit
0b3914cf6a
29 changed files with 453 additions and 37 deletions
|
|
@ -87,6 +87,7 @@ internal class ChooseTokenListItemConverter(
|
|||
when (accountStatus) {
|
||||
is AccountStatus.CryptoPortfolio -> accountStatus.toPortfolioItem(params)
|
||||
is AccountStatus.Payment -> accountStatus.createPaymentAccountItem(params.expandedAccounts)
|
||||
is AccountStatus.Virtual -> null
|
||||
}
|
||||
}
|
||||
.filter { portfolio -> portfolio.tokens.isNotEmpty() }
|
||||
|
|
|
|||
|
|
@ -5,12 +5,12 @@ import com.tangem.common.ui.account.CryptoPortfolioIconConverter
|
|||
import com.tangem.common.ui.account.PortfolioSelectUM
|
||||
import com.tangem.common.ui.account.toUM
|
||||
import com.tangem.common.ui.addtoken.AddTokenUM
|
||||
import com.tangem.common.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
|
||||
import com.tangem.common.ui.extensions.iconResId
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.common.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
|
||||
import com.tangem.core.ui.components.token.state.TokenItemState
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.common.ui.extensions.iconResId
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
import com.tangem.domain.account.status.usecase.IsAccountsModeEnabledUseCase
|
||||
|
|
@ -51,6 +51,7 @@ internal class OnrampAddTokenUiBuilder @Inject constructor(
|
|||
accountIcon = when (accountStatus) {
|
||||
is AccountStatus.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(accountStatus.account.icon)
|
||||
is AccountStatus.Payment -> AccountIconUM.Payment
|
||||
is AccountStatus.Virtual -> AccountIconUM.Virtual
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -234,6 +234,7 @@ internal class SendDestinationModel @Inject constructor(
|
|||
when (accountStatus) {
|
||||
is AccountStatus.CryptoPortfolio -> accountStatus.getDestinationWalletUM(wallet)
|
||||
is AccountStatus.Payment -> listOfNotNull(accountStatus.getDestinationWalletUM(wallet))
|
||||
is AccountStatus.Virtual -> emptyList()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ internal class SendRecipientWalletListConverter(
|
|||
account.icon,
|
||||
)
|
||||
is Account.Payment -> AccountIconUM.Payment
|
||||
is Account.Virtual -> AccountIconUM.Virtual
|
||||
},
|
||||
prefixText = stringReference(StringsSigns.DOT),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -110,6 +110,8 @@ internal class InitialCurrenciesResolver @Inject constructor(
|
|||
val currencyStatuses = when (accountStatus) {
|
||||
is AccountStatus.CryptoPortfolio -> accountStatus.flattenCurrencies()
|
||||
is AccountStatus.Payment -> getPaymentAccountCurrencies(accountStatus)
|
||||
// Virtual account isn't a swap source in the MVP (withdrawal reuses the send flow)
|
||||
is AccountStatus.Virtual -> emptyList()
|
||||
}
|
||||
val availabilityStates = rampStateManager.availableForSwap(
|
||||
userWalletId,
|
||||
|
|
|
|||
|
|
@ -1571,6 +1571,8 @@ internal class SwapModel @Inject constructor(
|
|||
userWalletId = swapCurrencyStatus.userWalletId,
|
||||
cryptoCurrency = swapCurrency,
|
||||
).map { (_, status) -> status }
|
||||
// Virtual account isn't a swap source in the MVP (withdrawal reuses the send flow)
|
||||
is Account.Virtual -> emptyFlow()
|
||||
}.distinctUntilChanged { old, new -> old.value.amount == new.value.amount } // Check only balance changes
|
||||
.onEach { currencyStatus ->
|
||||
|
||||
|
|
|
|||
|
|
@ -1265,6 +1265,7 @@ internal class StateBuilder(
|
|||
return when (this) {
|
||||
is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(icon)
|
||||
is Account.Payment -> AccountIconUM.Payment
|
||||
is Account.Virtual -> AccountIconUM.Virtual
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ internal class SwapTransferStateBuilder @Inject constructor(
|
|||
return when (this) {
|
||||
is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(icon)
|
||||
is Account.Payment -> AccountIconUM.Payment
|
||||
is Account.Virtual -> AccountIconUM.Virtual
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
package com.tangem.features.virtualaccount
|
||||
|
||||
interface VirtualAccountFeatureToggles {
|
||||
val isVirtualAccountsEnabled: Boolean
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
plugins {
|
||||
alias(deps.plugins.android.library)
|
||||
alias(deps.plugins.kotlin.android)
|
||||
alias(deps.plugins.kotlin.kapt)
|
||||
alias(deps.plugins.hilt.android)
|
||||
id("configuration")
|
||||
}
|
||||
|
||||
|
|
@ -9,4 +11,13 @@ android {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation(projects.features.virtualAccounts.details.api)
|
||||
|
||||
implementation(projects.core.configToggles)
|
||||
|
||||
implementation(deps.compose.runtime)
|
||||
|
||||
/** DI */
|
||||
implementation(deps.hilt.android)
|
||||
kapt(deps.hilt.kapt)
|
||||
}
|
||||
|
|
@ -1,15 +1,12 @@
|
|||
package com.tangem.features.virtualaccount.onboarding.impl
|
||||
package com.tangem.features.virtualaccount
|
||||
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.features.virtualaccount.onboarding.api.VirtualAccountsFeatureToggles
|
||||
import javax.inject.Inject
|
||||
|
||||
internal class DefaultVirtualAccountsFeatureToggles
|
||||
@Inject constructor(
|
||||
internal class DefaultVirtualAccountFeatureToggles @Inject constructor(
|
||||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) : VirtualAccountsFeatureToggles {
|
||||
|
||||
) : VirtualAccountFeatureToggles {
|
||||
override val isVirtualAccountsEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(toggle = FeatureToggles.VIRTUAL_ACCOUNTS_ENABLED)
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.tangem.features.virtualaccount.di
|
||||
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.features.virtualaccount.DefaultVirtualAccountFeatureToggles
|
||||
import com.tangem.features.virtualaccount.VirtualAccountFeatureToggles
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
internal object VirtualAccountDetailsModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideVirtualAccountFeatureToggles(
|
||||
featureTogglesManager: FeatureTogglesManager,
|
||||
): VirtualAccountFeatureToggles {
|
||||
return DefaultVirtualAccountFeatureToggles(featureTogglesManager = featureTogglesManager)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
package com.tangem.features.virtualaccount.onboarding.api
|
||||
|
||||
interface VirtualAccountsFeatureToggles {
|
||||
val isVirtualAccountsEnabled: Boolean
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
package com.tangem.features.virtualaccount.onboarding.impl.di
|
||||
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.features.virtualaccount.onboarding.api.VirtualAccountsFeatureToggles
|
||||
import com.tangem.features.virtualaccount.onboarding.impl.DefaultVirtualAccountsFeatureToggles
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
internal object VirtualAccountsOnboardingModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideVirtualAccountsFeatureToggles(
|
||||
featureTogglesManager: FeatureTogglesManager,
|
||||
): VirtualAccountsFeatureToggles {
|
||||
return DefaultVirtualAccountsFeatureToggles(featureTogglesManager)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue