Updated on 2026-08-14

This commit is contained in:
Tangem 2025-10-15 15:59:43 +07:00
parent b92bb00c7f
commit 5e6bf6aaae
14 changed files with 172 additions and 109 deletions

View file

@ -6,7 +6,6 @@ import androidx.compose.ui.Modifier
import com.arkivanov.decompose.ComponentContext
import com.arkivanov.decompose.extensions.compose.subscribeAsState
import com.arkivanov.decompose.router.slot.childSlot
import com.arkivanov.decompose.router.slot.dismiss
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.context.childByContext
import com.tangem.core.decompose.model.getOrCreateModel
@ -46,7 +45,7 @@ class DefaultReferralComponent @AssistedInject constructor(
params = PortfolioSelectorComponent.Params(
portfolioFetcher = model.portfolioFetcher,
controller = model.portfolioSelectorController,
onDismiss = model.bottomSheetNavigation::dismiss,
bsCallback = model.portfolioSelectorCallback,
),
)

View file

@ -7,6 +7,7 @@ import androidx.compose.runtime.setValue
import arrow.core.getOrElse
import com.arkivanov.decompose.router.slot.SlotNavigation
import com.arkivanov.decompose.router.slot.activate
import com.arkivanov.decompose.router.slot.dismiss
import com.tangem.common.routing.AppRouter
import com.tangem.common.ui.userwallet.ext.walletInterationIcon
import com.tangem.core.analytics.api.AnalyticsEventHandler
@ -41,6 +42,7 @@ import com.tangem.feature.referral.models.DemoModeException
import com.tangem.feature.referral.models.ReferralStateHolder
import com.tangem.feature.referral.models.ReferralStateHolder.*
import com.tangem.features.account.PortfolioFetcher
import com.tangem.features.account.PortfolioSelectorComponent
import com.tangem.features.account.PortfolioSelectorController
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.flow.*
@ -84,6 +86,11 @@ internal class ReferralModel @Inject constructor(
var uiState: ReferralStateHolder by mutableStateOf(createInitiallyUiState())
private set
val portfolioSelectorCallback = object : PortfolioSelectorComponent.BottomSheetCallback {
override val onDismiss: () -> Unit = { bottomSheetNavigation::dismiss }
override val onBack: () -> Unit = { bottomSheetNavigation::dismiss }
}
init {
analyticsEventHandler.send(ReferralEvents.ReferralScreenOpened)
if (accountsFeatureToggles.isFeatureEnabled) {
@ -172,7 +179,7 @@ internal class ReferralModel @Inject constructor(
modelScope.launch {
val lastInfoState = uiState.referralInfoState
val portfolioId = when (accountsFeatureToggles.isFeatureEnabled) {
true -> PortfolioId(requireNotNull(portfolioSelectorController.selectedAccount.value))
true -> PortfolioId(requireNotNull(portfolioSelectorController.selectedAccountSync))
false -> PortfolioId(params.userWalletId)
}
runCatching { referralInteractor.startReferral(portfolioId) }
@ -259,7 +266,7 @@ internal class ReferralModel @Inject constructor(
private suspend fun selectAccount(referralData: ReferralData) {
when (referralData) {
is ReferralData.NonParticipantData -> if (portfolioSelectorController.selectedAccount.value == null) {
is ReferralData.NonParticipantData -> if (portfolioSelectorController.selectedAccountSync == null) {
portfolioSelectorController.selectAccount(
accountId = walletAccounts(params.userWalletId).first().mainAccount.account.accountId,
)