Updated on 2026-08-14
This commit is contained in:
parent
77a12bcb13
commit
ae09293604
37 changed files with 36 additions and 257 deletions
|
|
@ -43,7 +43,6 @@ import com.tangem.domain.wallets.builder.ColdUserWalletBuilder
|
|||
import com.tangem.domain.wallets.repository.WalletsRepository
|
||||
import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles
|
||||
import com.tangem.hot.sdk.TangemHotSdk
|
||||
import com.tangem.tap.common.analytics.CustomerIoFeatureToggles
|
||||
import com.tangem.tap.common.analytics.handlers.BlockchainExceptionHandler
|
||||
import com.tangem.tap.common.analytics.handlers.appsflyer.AppsFlyerClient
|
||||
import com.tangem.tap.common.log.TangemAppLoggerInitializer
|
||||
|
|
@ -151,7 +150,5 @@ interface ApplicationEntryPoint {
|
|||
|
||||
fun getAppsFlyerClientFactory(): AppsFlyerClient.Factory
|
||||
|
||||
fun getCustomerIoFeatureToggles(): CustomerIoFeatureToggles
|
||||
|
||||
fun getScanFailsRequester(): ScanFailsRequester
|
||||
}
|
||||
|
|
@ -60,7 +60,6 @@ import com.tangem.domain.wallets.repository.WalletsRepository
|
|||
import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles
|
||||
import com.tangem.operations.attestation.api.TangemApiServiceSettings
|
||||
import com.tangem.tap.common.analytics.AnalyticsFactory
|
||||
import com.tangem.tap.common.analytics.CustomerIoFeatureToggles
|
||||
import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder
|
||||
import com.tangem.tap.common.analytics.handlers.BlockchainExceptionHandler
|
||||
import com.tangem.tap.common.analytics.handlers.amplitude.AmplitudeAnalyticsHandler
|
||||
|
|
@ -236,9 +235,6 @@ open class TangemApplication : Application(), ImageLoaderFactory, Configuration.
|
|||
private val appsFlyerClientFactory: AppsFlyerClient.Factory
|
||||
get() = entryPoint.getAppsFlyerClientFactory()
|
||||
|
||||
private val customerIoFeatureToggles: CustomerIoFeatureToggles
|
||||
get() = entryPoint.getCustomerIoFeatureToggles()
|
||||
|
||||
private val scanFailsRequester
|
||||
get() = entryPoint.getScanFailsRequester()
|
||||
|
||||
|
|
@ -415,9 +411,7 @@ open class TangemApplication : Application(), ImageLoaderFactory, Configuration.
|
|||
factory.addHandlerBuilder(FirebaseAnalyticsHandler.Builder())
|
||||
factory.addHandlerBuilder(AppsFlyerAnalyticsHandler.Builder(appsFlyerClientFactory))
|
||||
|
||||
if (customerIoFeatureToggles.isFeatureEnabled) {
|
||||
factory.addHandlerBuilder(CustomerIoAnalyticsHandler.Builder())
|
||||
}
|
||||
factory.addHandlerBuilder(CustomerIoAnalyticsHandler.Builder())
|
||||
|
||||
factory.addFilter(oneTimeEventFilter)
|
||||
factory.addFilter(AppsFlyerEventFilter())
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
package com.tangem.tap.common.analytics
|
||||
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import javax.inject.Inject
|
||||
|
||||
class CustomerIoFeatureToggles @Inject constructor(
|
||||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) {
|
||||
|
||||
val isFeatureEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(toggle = FeatureToggles.CUSTOMER_IO_ENABLED)
|
||||
}
|
||||
|
|
@ -3,19 +3,12 @@ package com.tangem.tap.common.pushes
|
|||
import android.annotation.SuppressLint
|
||||
import com.google.firebase.messaging.FirebaseMessagingService
|
||||
import com.google.firebase.messaging.RemoteMessage
|
||||
import com.tangem.tap.common.analytics.CustomerIoFeatureToggles
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import io.customer.messagingpush.CustomerIOFirebaseMessagingService
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
@SuppressLint("MissingFirebaseInstanceTokenRefresh")
|
||||
internal class TangemPushNotificationService : FirebaseMessagingService() {
|
||||
|
||||
@Inject
|
||||
lateinit var customerIoFeatureToggles: CustomerIoFeatureToggles
|
||||
|
||||
private val pushNotificationDelegate: PushNotificationDelegate by lazy {
|
||||
PushNotificationDelegate(applicationContext)
|
||||
}
|
||||
|
|
@ -24,21 +17,17 @@ internal class TangemPushNotificationService : FirebaseMessagingService() {
|
|||
super.onNewToken(token)
|
||||
TangemLogger.d("New FCM token received: $token")
|
||||
|
||||
if (customerIoFeatureToggles.isFeatureEnabled) {
|
||||
CustomerIOFirebaseMessagingService.onNewToken(applicationContext, token)
|
||||
}
|
||||
CustomerIOFirebaseMessagingService.onNewToken(applicationContext, token)
|
||||
}
|
||||
|
||||
override fun onMessageReceived(message: RemoteMessage) {
|
||||
super.onMessageReceived(message)
|
||||
|
||||
if (customerIoFeatureToggles.isFeatureEnabled) {
|
||||
CustomerIOFirebaseMessagingService.onMessageReceived(
|
||||
context = applicationContext,
|
||||
remoteMessage = message,
|
||||
handleNotificationTrigger = false,
|
||||
)
|
||||
}
|
||||
CustomerIOFirebaseMessagingService.onMessageReceived(
|
||||
context = applicationContext,
|
||||
remoteMessage = message,
|
||||
handleNotificationTrigger = false,
|
||||
)
|
||||
|
||||
val notification = message.notification ?: return
|
||||
val channelId = notification.channelId ?: TANGEM_CHANNEL_ID
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
package com.tangem.tap.core.ui
|
||||
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import javax.inject.Inject
|
||||
|
||||
class DefaultHoldToConfirmButtonFeatureToggles @Inject constructor(
|
||||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) : HoldToConfirmButtonFeatureToggles {
|
||||
override val isHoldToConfirmEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.HOLD_TO_CONFIRM_BUTTON_ENABLED)
|
||||
}
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
package com.tangem.tap.di.core.ui
|
||||
|
||||
import com.tangem.core.ui.DesignFeatureToggles
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.tap.core.ui.DefaultDesignFeatureToggles
|
||||
import com.tangem.tap.core.ui.DefaultHoldToConfirmButtonFeatureToggles
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.hilt.InstallIn
|
||||
|
|
@ -15,9 +13,4 @@ interface CoreUiBindsModule {
|
|||
|
||||
@Binds
|
||||
fun bindDesignFeatureToggles(impl: DefaultDesignFeatureToggles): DesignFeatureToggles
|
||||
|
||||
@Binds
|
||||
fun bindHoldToConfirmButtonFeatureToggles(
|
||||
impl: DefaultHoldToConfirmButtonFeatureToggles,
|
||||
): HoldToConfirmButtonFeatureToggles
|
||||
}
|
||||
|
|
@ -20,30 +20,10 @@
|
|||
"name": "SWAP_REDESIGN_ENABLED",
|
||||
"version": "undefined"
|
||||
},
|
||||
{
|
||||
"name": "HOT_WALLET_CREATION_RESTRICTION_ENABLED",
|
||||
"version": "5.32.0"
|
||||
},
|
||||
{
|
||||
"name": "APP_REDESIGN_ENABLED",
|
||||
"version": "undefined"
|
||||
},
|
||||
{
|
||||
"name": "SWAP_MARKET_LIST_ENABLED",
|
||||
"version": "5.34"
|
||||
},
|
||||
{
|
||||
"name": "EARN_BLOCK_ENABLED",
|
||||
"version": "5.35"
|
||||
},
|
||||
{
|
||||
"name": "HOLD_TO_CONFIRM_BUTTON_ENABLED",
|
||||
"version": "5.35"
|
||||
},
|
||||
{
|
||||
"name": "WALLET_REORDER_FEATURE_ENABLED",
|
||||
"version": "5.34"
|
||||
},
|
||||
{
|
||||
"name": "GASLESS_APPROVAL_ENABLED",
|
||||
"version": "5.37"
|
||||
|
|
@ -56,14 +36,6 @@
|
|||
"name": "DYNAMIC_ADDRESSES_ENABLED",
|
||||
"version": "undefined"
|
||||
},
|
||||
{
|
||||
"name": "CUSTOMER_IO_ENABLED",
|
||||
"version": "5.35"
|
||||
},
|
||||
{
|
||||
"name": "MAIN_SCREEN_QR_SCANNING_ENABLED",
|
||||
"version": "5.36"
|
||||
},
|
||||
{
|
||||
"name": "NEW_PROMO_BANNERS_ENABLED",
|
||||
"version": "5.37"
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
package com.tangem.core.ui
|
||||
|
||||
interface HoldToConfirmButtonFeatureToggles {
|
||||
val isHoldToConfirmEnabled: Boolean
|
||||
}
|
||||
|
|
@ -21,7 +21,6 @@ import com.tangem.features.details.entity.WalletReorderUM
|
|||
import com.tangem.features.details.impl.R
|
||||
import com.tangem.domain.settings.HotWalletRestrictionManager
|
||||
import com.tangem.features.details.utils.UserWalletSaver
|
||||
import com.tangem.features.wallet.featuretoggles.WalletFeatureToggles
|
||||
import com.tangem.features.wallet.utils.UserWalletsFetcher
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
|
@ -43,7 +42,6 @@ internal class UserWalletListModel @Inject constructor(
|
|||
private val hotWalletRestrictionManager: HotWalletRestrictionManager,
|
||||
private val unlockWalletUseCase: UnlockWalletUseCase,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
private val walletFeatureToggles: WalletFeatureToggles,
|
||||
private val applyUserWalletListSortingUseCase: ApplyUserWalletListSortingUseCase,
|
||||
) : Model() {
|
||||
|
||||
|
|
@ -93,7 +91,7 @@ internal class UserWalletListModel @Inject constructor(
|
|||
isWalletSavingInProgress = isWalletSavingInProgress,
|
||||
addNewWalletText = resourceReference(R.string.user_wallet_list_add_button),
|
||||
walletReorderUM = WalletReorderUM(
|
||||
isDragEnabled = walletFeatureToggles.isWalletReorderFeatureEnabled && userWallets.size > 1,
|
||||
isDragEnabled = userWallets.size > 1,
|
||||
onMove = ::onWalletReorder,
|
||||
onDragStopped = ::onWalletDragStopped,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
package com.tangem.features.feed.entry.featuretoggle
|
||||
|
||||
interface FeedFeatureToggle {
|
||||
val isEarnBlockEnabled: Boolean
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
package com.tangem.features.feed.di
|
||||
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
import com.tangem.features.feed.featuretoggle.DefaultFeedFeatureToggle
|
||||
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 FeedFeatureToggleModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideFeedFeatureToggle(featureTogglesManager: FeatureTogglesManager): FeedFeatureToggle {
|
||||
return DefaultFeedFeatureToggle(
|
||||
featureTogglesManager = featureTogglesManager,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
package com.tangem.features.feed.featuretoggle
|
||||
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
|
||||
internal class DefaultFeedFeatureToggle(
|
||||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) : FeedFeatureToggle {
|
||||
|
||||
override val isEarnBlockEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.EARN_BLOCK_ENABLED)
|
||||
}
|
||||
|
|
@ -32,7 +32,6 @@ import com.tangem.domain.news.usecase.ManageTrendingNewsUseCase
|
|||
import com.tangem.features.feed.components.feed.DefaultFeedComponent
|
||||
import com.tangem.features.feed.components.feed.FeedBottomSheetRoute
|
||||
import com.tangem.features.commonfeatures.api.addtoportfolio.AddToPortfolioPreselectedDataComponent
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
import com.tangem.features.feed.impl.R
|
||||
import com.tangem.features.feed.model.earn.analytics.EarnAnalyticsEvent
|
||||
import com.tangem.features.feed.model.feed.analytics.FeedAnalyticsEvent
|
||||
|
|
@ -63,7 +62,6 @@ internal class FeedComponentModel @Inject constructor(
|
|||
private val manageTrendingNewsUseCase: ManageTrendingNewsUseCase,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
private val stateController: FeedStateController,
|
||||
private val feedFeatureToggle: FeedFeatureToggle,
|
||||
private val fetchTopEarnTokensUseCase: FetchTopEarnTokensUseCase,
|
||||
private val getTopEarnTokensUseCase: GetTopEarnTokensUseCase,
|
||||
private val appRouter: AppRouter,
|
||||
|
|
@ -147,7 +145,6 @@ internal class FeedComponentModel @Inject constructor(
|
|||
}
|
||||
},
|
||||
analyticsEventHandler = analyticsEventHandler,
|
||||
feedFeatureToggle = feedFeatureToggle,
|
||||
)
|
||||
|
||||
val currentState = stateController.value
|
||||
|
|
@ -171,7 +168,7 @@ internal class FeedComponentModel @Inject constructor(
|
|||
analyticsEventHandler = analyticsEventHandler,
|
||||
),
|
||||
UpdateEarnStateTransformer(
|
||||
isEarnEnabled = feedFeatureToggle.isEarnBlockEnabled,
|
||||
isEarnEnabled = true,
|
||||
onItemClick = ::handleEarnTokenClick,
|
||||
onRetryClick = ::fetchEarnData,
|
||||
earnResult = earnResult,
|
||||
|
|
@ -206,7 +203,6 @@ internal class FeedComponentModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun fetchEarnData() {
|
||||
if (!feedFeatureToggle.isEarnBlockEnabled) return
|
||||
modelScope.launch(dispatchers.default) {
|
||||
stateController.update(UpdateEarnLoadingStateTransformer())
|
||||
fetchTopEarnTokensUseCase()
|
||||
|
|
@ -280,11 +276,7 @@ internal class FeedComponentModel @Inject constructor(
|
|||
currentSortByType = SortByTypeUM.TopGainers,
|
||||
),
|
||||
globalState = GlobalFeedState.Loading,
|
||||
earnListUM = if (feedFeatureToggle.isEarnBlockEnabled) {
|
||||
EarnListUM.Loading
|
||||
} else {
|
||||
EarnListUM.Empty
|
||||
},
|
||||
earnListUM = EarnListUM.Loading,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.tangem.features.feed.model.feed.state
|
|||
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
import com.tangem.features.feed.model.feed.state.transformers.FeedListUMTransformer
|
||||
import com.tangem.features.feed.model.market.list.state.SortByTypeUM
|
||||
import com.tangem.features.feed.ui.earn.state.EarnListUM
|
||||
|
|
@ -16,9 +15,7 @@ import kotlinx.coroutines.flow.update
|
|||
import javax.inject.Inject
|
||||
|
||||
@ModelScoped
|
||||
internal class FeedStateController @Inject constructor(
|
||||
private val feedFeatureToggle: FeedFeatureToggle,
|
||||
) {
|
||||
internal class FeedStateController @Inject constructor() {
|
||||
|
||||
private val mutableUiState: MutableStateFlow<FeedListUM> = MutableStateFlow(value = getInitialState())
|
||||
|
||||
|
|
@ -67,11 +64,7 @@ internal class FeedStateController @Inject constructor(
|
|||
currentSortByType = SortByTypeUM.Trending,
|
||||
),
|
||||
globalState = GlobalFeedState.Loading,
|
||||
earnListUM = if (feedFeatureToggle.isEarnBlockEnabled) {
|
||||
EarnListUM.Loading
|
||||
} else {
|
||||
EarnListUM.Empty
|
||||
},
|
||||
earnListUM = EarnListUM.Loading,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,6 @@ package com.tangem.features.feed.model.feed.state.transformers
|
|||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.domain.models.earn.EarnTopToken
|
||||
import com.tangem.domain.models.news.TrendingNews
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
import com.tangem.features.feed.model.feed.analytics.FeedAnalyticsEvent
|
||||
import com.tangem.features.feed.model.market.list.state.SortByTypeUM
|
||||
import com.tangem.features.feed.ui.earn.state.EarnListUM
|
||||
|
|
@ -19,16 +18,13 @@ internal class UpdateGlobalFeedStateTransformer(
|
|||
private val earnResult: EarnTopToken?,
|
||||
private val onRetryClicked: () -> Unit,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
private val feedFeatureToggle: FeedFeatureToggle,
|
||||
) : FeedListUMTransformer {
|
||||
|
||||
override fun transform(prevState: FeedListUM): FeedListUM {
|
||||
val blockStates = buildList {
|
||||
add(getNewsState(prevState))
|
||||
add(getChartsState())
|
||||
if (feedFeatureToggle.isEarnBlockEnabled) {
|
||||
add(getEarnState(prevState))
|
||||
}
|
||||
add(getEarnState(prevState))
|
||||
}
|
||||
|
||||
val newGlobalState = when {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.tangem.features.hotwallet
|
||||
|
||||
interface HotWalletFeatureToggles {
|
||||
val isWalletCreationRestrictionEnabled: Boolean
|
||||
val isAssetsDiscoveryEnabled: Boolean
|
||||
}
|
||||
|
|
@ -7,9 +7,6 @@ internal class DefaultHotWalletFeatureToggles(
|
|||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) : HotWalletFeatureToggles {
|
||||
|
||||
override val isWalletCreationRestrictionEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.HOT_WALLET_CREATION_RESTRICTION_ENABLED)
|
||||
|
||||
override val isAssetsDiscoveryEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.ASSETS_DISCOVERY_ENABLED)
|
||||
}
|
||||
|
|
@ -61,7 +61,6 @@ import com.tangem.features.onramp.utils.ClearSearchBarTransformer
|
|||
import com.tangem.features.onramp.utils.UpdateSearchBarActiveStateTransformer
|
||||
import com.tangem.features.onramp.utils.UpdateSearchBarCallbacksTransformer
|
||||
import com.tangem.features.onramp.utils.UpdateSearchQueryTransformer
|
||||
import com.tangem.features.swap.SwapFeatureToggles
|
||||
import com.tangem.lib.crypto.BlockchainUtils
|
||||
import com.tangem.utils.Provider
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
|
|
@ -90,7 +89,6 @@ internal class AvailableSwapPairsModel @Inject constructor(
|
|||
private val addToPortfolioManagerFactory: AddToPortfolioManager.Factory,
|
||||
private val excludedBlockchains: ExcludedBlockchains,
|
||||
private val getAccountCurrencyStatusUseCase: GetAccountCurrencyStatusUseCase,
|
||||
swapFeatureToggles: SwapFeatureToggles,
|
||||
getWalletsUseCase: GetWalletsUseCase,
|
||||
) : Model() {
|
||||
|
||||
|
|
@ -150,10 +148,8 @@ internal class AvailableSwapPairsModel @Inject constructor(
|
|||
subscribeOnSelectedStatusChange()
|
||||
subscribeOnAvailablePairsUpdates()
|
||||
|
||||
if (swapFeatureToggles.isMarketListFeatureEnabled) {
|
||||
subscribeOnMarketsUpdates()
|
||||
subscribeOnVisibleMarketItems()
|
||||
}
|
||||
subscribeOnMarketsUpdates()
|
||||
subscribeOnVisibleMarketItems()
|
||||
addToPortfolioManager.onDismiss.receiveAsFlow()
|
||||
.onEach { bottomSheetNavigation.dismiss() }
|
||||
.launchIn(modelScope)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ import com.tangem.core.decompose.model.ParamsContainer
|
|||
import com.tangem.core.decompose.navigation.Router
|
||||
import com.tangem.core.navigation.share.ShareManager
|
||||
import com.tangem.core.navigation.url.UrlOpener
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
|
|
@ -114,7 +113,6 @@ internal class SendConfirmModel @Inject constructor(
|
|||
private val manageCryptoCurrenciesUseCase: ManageCryptoCurrenciesUseCase,
|
||||
private val currenciesRepository: CurrenciesRepository,
|
||||
private val createAndSendGaslessTransactionUseCase: CreateAndSendGaslessTransactionUseCase,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
sendBalanceUpdaterFactory: SendBalanceUpdater.Factory,
|
||||
) : Model(), SendConfirmClickIntents, FeeSelectorModelCallback, SendNotificationsComponent.ModelCallback {
|
||||
|
||||
|
|
@ -586,8 +584,7 @@ internal class SendConfirmModel @Inject constructor(
|
|||
val confirmUM = uiState.value.confirmUM
|
||||
val isContent = confirmUM is ConfirmUM.Content
|
||||
val isReadyToSend = isContent && !confirmUM.isSending
|
||||
val isHoldToConfirm = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
userWallet.isHotWallet && isContent
|
||||
val isHoldToConfirm = userWallet.isHotWallet && isContent
|
||||
return NavigationButton(
|
||||
textReference = getPrimaryButtonText(confirmUM, isHoldToConfirm),
|
||||
iconRes = walletInterationIcon(userWallet),
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ import com.tangem.core.decompose.model.ParamsContainer
|
|||
import com.tangem.core.decompose.navigation.Router
|
||||
import com.tangem.core.navigation.share.ShareManager
|
||||
import com.tangem.core.navigation.url.UrlOpener
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
|
|
@ -91,7 +90,6 @@ internal class NFTSendConfirmModel @Inject constructor(
|
|||
private val nftSendAnalyticHelper: NFTSendAnalyticHelper,
|
||||
private val nftSendSuccessTrigger: NFTSendSuccessTrigger,
|
||||
private val feeSelectorReloadTrigger: FeeSelectorReloadTrigger,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
sendBalanceUpdaterFactory: SendBalanceUpdater.Factory,
|
||||
) : Model(), NFTSendConfirmClickIntents, SendNotificationsComponent.ModelCallback, FeeSelectorModelCallback {
|
||||
|
||||
|
|
@ -424,8 +422,7 @@ internal class NFTSendConfirmModel @Inject constructor(
|
|||
val confirmUM = uiState.value.confirmUM
|
||||
val isContent = confirmUM is ConfirmUM.Content
|
||||
val isReadyToSend = isContent && !confirmUM.isSending
|
||||
val isHoldToConfirm = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
userWallet.isHotWallet && isContent
|
||||
val isHoldToConfirm = userWallet.isHotWallet && isContent
|
||||
return NavigationButton(
|
||||
textReference = getPrimaryButtonText(confirmUM, isHoldToConfirm),
|
||||
iconRes = walletInterationIcon(userWallet),
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ import kotlinx.coroutines.flow.StateFlow
|
|||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.domain.models.wallet.isColdWallet
|
||||
import com.tangem.domain.models.wallet.isHotWallet
|
||||
import javax.inject.Inject
|
||||
|
|
@ -23,7 +22,6 @@ import javax.inject.Inject
|
|||
@ModelScoped
|
||||
internal class StakingStateController @Inject constructor(
|
||||
urlOpener: UrlOpener,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
) {
|
||||
|
||||
private val mutableUiState: MutableStateFlow<StakingUiState> = MutableStateFlow(value = getInitialState())
|
||||
|
|
@ -39,8 +37,7 @@ internal class StakingStateController @Inject constructor(
|
|||
mutableUiState.update { state ->
|
||||
state.copy(
|
||||
isColdWalletInteractionIconVisible = userWallet.isColdWallet,
|
||||
shouldShowHoldToConfirmButton = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
userWallet.isHotWallet,
|
||||
shouldShowHoldToConfirmButton = userWallet.isHotWallet,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import com.tangem.core.decompose.di.ModelScoped
|
|||
import com.tangem.core.decompose.model.Model
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.core.decompose.navigation.Router
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.domain.account.status.usecase.GetAccountCurrencyByAddressUseCase
|
||||
|
|
@ -101,7 +100,6 @@ internal class SendWithSwapConfirmModel @Inject constructor(
|
|||
private val swapAlertFactory: SwapAlertFactory,
|
||||
private val appRouter: AppRouter,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
swapTransactionSenderFactory: SwapTransactionSender.Factory,
|
||||
paramsContainer: ParamsContainer,
|
||||
) : Model(), FeeSelectorModelCallback, SendNotificationsComponent.ModelCallback {
|
||||
|
|
@ -571,8 +569,7 @@ internal class SendWithSwapConfirmModel @Inject constructor(
|
|||
val confirmUM = state.confirmUM
|
||||
val isContent = confirmUM is ConfirmUM.Content
|
||||
val isReadyToSend = isContent && !confirmUM.isTransactionInProcess
|
||||
val isHoldToConfirm = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
params.userWallet.isHotWallet && isContent
|
||||
val isHoldToConfirm = params.userWallet.isHotWallet && isContent
|
||||
params.callback.onResult(
|
||||
route = SendWithSwapRoute.Confirm,
|
||||
sendWithSwapUM = state.copy(
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
package com.tangem.features.swap
|
||||
|
||||
interface SwapFeatureToggles {
|
||||
val isMarketListFeatureEnabled: Boolean
|
||||
}
|
||||
interface SwapFeatureToggles
|
||||
|
|
@ -1,12 +1,5 @@
|
|||
package com.tangem.feature.swap
|
||||
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.features.swap.SwapFeatureToggles
|
||||
|
||||
internal class DefaultSwapFeatureToggles(
|
||||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) : SwapFeatureToggles {
|
||||
override val isMarketListFeatureEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.SWAP_MARKET_LIST_ENABLED)
|
||||
}
|
||||
internal class DefaultSwapFeatureToggles : SwapFeatureToggles
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package com.tangem.feature.swap.di
|
||||
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.feature.swap.DefaultSwapComponent
|
||||
import com.tangem.feature.swap.DefaultSwapFeatureToggles
|
||||
import com.tangem.features.swap.SwapComponent
|
||||
|
|
@ -18,8 +17,8 @@ internal object SwapFeatureModule {
|
|||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideSwapFeatureToggles(featureTogglesManager: FeatureTogglesManager): SwapFeatureToggles {
|
||||
return DefaultSwapFeatureToggles(featureTogglesManager)
|
||||
fun provideSwapFeatureToggles(): SwapFeatureToggles {
|
||||
return DefaultSwapFeatureToggles()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ import com.tangem.core.decompose.model.Model
|
|||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.core.decompose.ui.UiMessageSender
|
||||
import com.tangem.core.navigation.url.UrlOpener
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.core.ui.R
|
||||
import com.tangem.core.ui.extensions.*
|
||||
import com.tangem.core.ui.message.DialogMessage
|
||||
|
|
@ -146,7 +145,6 @@ internal class SwapModel @Inject constructor(
|
|||
private val feeSelectorReloadTrigger: FeeSelectorReloadTrigger,
|
||||
private val getTangemPayCustomerIdUseCase: GetTangemPayCustomerIdUseCase,
|
||||
private val appsFlyerStore: AppsFlyerStore,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
private val messageSender: UiMessageSender,
|
||||
private val paymentAccountCryptoCurrencyStatusUseCase: GetPaymentAccountCryptoCurrencyStatusUseCase,
|
||||
private val allowPermissionsHandler: AllowPermissionsHandler,
|
||||
|
|
@ -169,8 +167,7 @@ internal class SwapModel @Inject constructor(
|
|||
}
|
||||
private val swapInteractor = swapInteractorFactory.create(userWalletId)
|
||||
|
||||
val isHoldToConfirmEnabled: Boolean =
|
||||
holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled && userWallet.isHotWallet
|
||||
val isHoldToConfirmEnabled: Boolean = userWallet.isHotWallet
|
||||
|
||||
private lateinit var initialFromStatus: CryptoCurrencyStatus
|
||||
private var initialToStatus: CryptoCurrencyStatus? = null
|
||||
|
|
@ -195,7 +192,6 @@ internal class SwapModel @Inject constructor(
|
|||
appCurrencyProvider = Provider(selectedAppCurrencyFlow::value),
|
||||
isAccountsModeProvider = Provider { isAccountsMode },
|
||||
iGaslessFeeSupportedForNetwork = iGaslessFeeSupportedForNetwork,
|
||||
holdToConfirmButtonFeatureToggles = holdToConfirmButtonFeatureToggles,
|
||||
)
|
||||
|
||||
private val inputNumberFormatter =
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import com.tangem.common.ui.account.toUM
|
|||
import com.tangem.common.ui.bottomsheet.permission.state.*
|
||||
import com.tangem.common.ui.notifications.NotificationUM
|
||||
import com.tangem.common.ui.userwallet.ext.walletInterationIcon
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig
|
||||
import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
|
||||
import com.tangem.core.ui.extensions.*
|
||||
|
|
@ -59,11 +58,9 @@ internal class StateBuilder(
|
|||
private val appCurrencyProvider: Provider<AppCurrency>,
|
||||
private val isAccountsModeProvider: Provider<Boolean>,
|
||||
private val iGaslessFeeSupportedForNetwork: IsGaslessFeeSupportedForNetwork,
|
||||
holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
) {
|
||||
|
||||
private val isHoldToConfirmEnabled: Boolean =
|
||||
holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled && userWalletProvider().isHotWallet
|
||||
private val isHoldToConfirmEnabled: Boolean = userWalletProvider().isHotWallet
|
||||
|
||||
private val iconStateConverter by lazy(::CryptoCurrencyToIconStateConverter)
|
||||
|
||||
|
|
|
|||
|
|
@ -7,9 +7,5 @@ package com.tangem.features.wallet.featuretoggles
|
|||
*/
|
||||
interface WalletFeatureToggles {
|
||||
|
||||
val isWalletReorderFeatureEnabled: Boolean
|
||||
|
||||
val isMainScreenQrScanningEnabled: Boolean
|
||||
|
||||
val isAddAndManageTokensEnabled: Boolean
|
||||
}
|
||||
|
|
@ -65,7 +65,6 @@ import com.tangem.features.biometry.AskBiometryComponent
|
|||
import com.tangem.features.pushnotifications.api.PushNotificationsModelCallbacks
|
||||
import com.tangem.features.tangempay.TangemPayFeatureToggles
|
||||
import com.tangem.features.wallet.deeplink.WalletDeepLinkActionListener
|
||||
import com.tangem.features.wallet.featuretoggles.WalletFeatureToggles
|
||||
import com.tangem.utils.Provider
|
||||
import com.tangem.utils.coroutines.*
|
||||
import kotlinx.coroutines.*
|
||||
|
|
@ -118,7 +117,6 @@ internal class WalletModel @Inject constructor(
|
|||
private val appsFlyerStore: AppsFlyerStore,
|
||||
private val getSelectedAppCurrencyUseCase: GetSelectedAppCurrencyUseCase,
|
||||
private val getWalletIconUseCase: GetWalletIconUseCase,
|
||||
private val walletFeatureToggles: WalletFeatureToggles,
|
||||
private val listenToQrScanningUseCase: ListenToQrScanningUseCase,
|
||||
private val wcPairService: WcPairService,
|
||||
private val resolveQrSendTargetsUseCase: ResolveQrSendTargetsUseCase,
|
||||
|
|
@ -552,7 +550,6 @@ internal class WalletModel @Inject constructor(
|
|||
wallets = action.wallets,
|
||||
clickIntents = clickIntents,
|
||||
walletImageResolver = walletImageResolver,
|
||||
isMainScreenQrScanningEnabled = walletFeatureToggles.isMainScreenQrScanningEnabled,
|
||||
getWalletIconUseCase = getWalletIconUseCase,
|
||||
isTangemPayRefactorEnabled = tangemPayFeatureToggles.isTangemPayAccountsRefactorEnabled,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -9,12 +9,6 @@ internal class DefaultWalletFeatureToggles @Inject constructor(
|
|||
private val featureToggles: FeatureTogglesManager,
|
||||
) : WalletFeatureToggles {
|
||||
|
||||
override val isWalletReorderFeatureEnabled: Boolean
|
||||
get() = featureToggles.isFeatureEnabled(FeatureToggles.WALLET_REORDER_FEATURE_ENABLED)
|
||||
|
||||
override val isMainScreenQrScanningEnabled: Boolean
|
||||
get() = featureToggles.isFeatureEnabled(FeatureToggles.MAIN_SCREEN_QR_SCANNING_ENABLED)
|
||||
|
||||
override val isAddAndManageTokensEnabled: Boolean
|
||||
get() = featureToggles.isFeatureEnabled(FeatureToggles.ADD_AND_MANAGE_TOKENS_ENABLED)
|
||||
}
|
||||
|
|
@ -27,7 +27,6 @@ internal class InitializeWalletsTransformer(
|
|||
private val clickIntents: WalletClickIntents,
|
||||
private val walletImageResolver: WalletImageResolver,
|
||||
private val getWalletIconUseCase: GetWalletIconUseCase,
|
||||
private val isMainScreenQrScanningEnabled: Boolean = false,
|
||||
private val isTangemPayRefactorEnabled: Boolean,
|
||||
) : WalletScreenStateTransformer {
|
||||
|
||||
|
|
@ -65,15 +64,11 @@ internal class InitializeWalletsTransformer(
|
|||
|
||||
private fun createTopBarConfig(): WalletTopBarConfig {
|
||||
return WalletTopBarConfig(
|
||||
endActions = listOfNotNull(
|
||||
if (isMainScreenQrScanningEnabled) {
|
||||
TangemTopBarActionUM(
|
||||
iconRes = CoreUiR.drawable.ic_qrcode_scaner_24,
|
||||
onClick = clickIntents::onScanQrClick,
|
||||
)
|
||||
} else {
|
||||
null
|
||||
},
|
||||
endActions = listOf(
|
||||
TangemTopBarActionUM(
|
||||
iconRes = CoreUiR.drawable.ic_qrcode_scaner_24,
|
||||
onClick = clickIntents::onScanQrClick,
|
||||
),
|
||||
TangemTopBarActionUM(
|
||||
iconRes = CoreUiR.drawable.ic_more_default_24,
|
||||
onClick = clickIntents::onDetailsClick,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ import com.tangem.features.walletconnect.transaction.entity.common.WcTransaction
|
|||
import com.tangem.features.walletconnect.transaction.entity.send.WcSendTransactionItemUM
|
||||
import com.tangem.features.walletconnect.transaction.entity.send.WcSendTransactionUM
|
||||
import com.tangem.features.walletconnect.utils.WcNotificationsFactory
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.domain.models.wallet.isHotWallet
|
||||
import com.tangem.utils.converter.Converter
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
|
@ -27,7 +26,6 @@ internal class WcSendTransactionUMConverter @Inject constructor(
|
|||
private val networkInfoUMConverter: WcNetworkInfoUMConverter,
|
||||
private val requestBlockUMConverter: WcTransactionRequestBlockUMConverter,
|
||||
private val notificationsFactory: WcNotificationsFactory,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
) : Converter<WcSendTransactionUMConverter.Input, WcSendTransactionUM?> {
|
||||
|
||||
override fun convert(value: Input): WcSendTransactionUM? {
|
||||
|
|
@ -65,8 +63,7 @@ internal class WcSendTransactionUMConverter @Inject constructor(
|
|||
}
|
||||
},
|
||||
feeErrorNotification = feeErrorNotification,
|
||||
isHoldToConfirmEnabled = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
value.context.session.wallet.isHotWallet,
|
||||
isHoldToConfirmEnabled = value.context.session.wallet.isHotWallet,
|
||||
),
|
||||
feeSelectorUM = when (value.feeState) {
|
||||
WcTransactionFeeState.None -> FeeSelectorUM.Loading
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import com.tangem.features.walletconnect.transaction.entity.common.WcTransaction
|
|||
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionRequestInfoUM
|
||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionItemUM
|
||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionUM
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.domain.models.wallet.isHotWallet
|
||||
import com.tangem.utils.converter.Converter
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
|
@ -20,7 +19,6 @@ internal class WcSignTransactionUMConverter @Inject constructor(
|
|||
private val appInfoContentUMConverter: WcTransactionAppInfoContentUMConverter,
|
||||
private val networkInfoUMConverter: WcNetworkInfoUMConverter,
|
||||
private val requestBlockUMConverter: WcTransactionRequestBlockUMConverter,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
) : Converter<WcSignTransactionUMConverter.Input, WcSignTransactionUM> {
|
||||
|
||||
override fun convert(value: Input) = WcSignTransactionUM(
|
||||
|
|
@ -38,8 +36,7 @@ internal class WcSignTransactionUMConverter @Inject constructor(
|
|||
isLoading = value.signState.domainStep == WcSignStep.Signing,
|
||||
address = WcAddressConverter.convert(value.context.derivationState),
|
||||
walletInteractionIcon = walletInterationIcon(value.context.session.wallet),
|
||||
isHoldToConfirmEnabled = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
value.context.session.wallet.isHotWallet,
|
||||
isHoldToConfirmEnabled = value.context.session.wallet.isHotWallet,
|
||||
),
|
||||
transactionRequestInfo = WcTransactionRequestInfoUM(
|
||||
requestBlockUMConverter.convert(
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import com.tangem.features.walletconnect.transaction.entity.common.WcTransaction
|
|||
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionRequestInfoUM
|
||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionItemUM
|
||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionUM
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.domain.models.wallet.isHotWallet
|
||||
import com.tangem.utils.converter.Converter
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
|
@ -20,7 +19,6 @@ internal class WcSignTypedDataUMConverter @Inject constructor(
|
|||
private val appInfoContentUMConverter: WcTransactionAppInfoContentUMConverter,
|
||||
private val networkInfoUMConverter: WcNetworkInfoUMConverter,
|
||||
private val requestBlockUMConverter: WcTransactionRequestBlockUMConverter,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
) : Converter<WcSignTypedDataUMConverter.Input, WcSignTransactionUM> {
|
||||
|
||||
override fun convert(value: Input): WcSignTransactionUM = WcSignTransactionUM(
|
||||
|
|
@ -38,8 +36,7 @@ internal class WcSignTypedDataUMConverter @Inject constructor(
|
|||
address = WcAddressConverter.convert(value.context.derivationState),
|
||||
isLoading = value.signState.domainStep == WcSignStep.Signing,
|
||||
walletInteractionIcon = walletInterationIcon(value.context.session.wallet),
|
||||
isHoldToConfirmEnabled = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
value.context.session.wallet.isHotWallet,
|
||||
isHoldToConfirmEnabled = value.context.session.wallet.isHotWallet,
|
||||
),
|
||||
transactionRequestInfo = WcTransactionRequestInfoUM(
|
||||
blocks = buildList {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import com.tangem.core.decompose.di.ModelScoped
|
|||
import com.tangem.core.decompose.model.Model
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.core.navigation.url.UrlOpener
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
|
|
@ -65,7 +64,6 @@ internal class YieldSupplyApproveModel @Inject constructor(
|
|||
private val yieldSupplyGetContractAddressUseCase: YieldSupplyGetContractAddressUseCase,
|
||||
private val yieldSupplyPendingTracker: YieldSupplyPendingTracker,
|
||||
private val yieldSupplyAlertFactory: YieldSupplyAlertFactory,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
) : Model(), YieldSupplyNotificationsComponent.ModelCallback {
|
||||
|
||||
private val params: YieldSupplyApproveComponent.Params = paramsContainer.require()
|
||||
|
|
@ -102,8 +100,7 @@ internal class YieldSupplyApproveModel @Inject constructor(
|
|||
yieldSupplyFeeUM = YieldSupplyFeeUM.Loading,
|
||||
isPrimaryButtonEnabled = false,
|
||||
isTransactionSending = false,
|
||||
isHoldToConfirmEnabled = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
params.userWallet.isHotWallet,
|
||||
isHoldToConfirmEnabled = params.userWallet.isHotWallet,
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import com.tangem.core.analytics.models.Basic
|
|||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.decompose.model.Model
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.wrappedList
|
||||
|
|
@ -71,7 +70,6 @@ internal class YieldSupplyStartEarningModel @Inject constructor(
|
|||
private val yieldSupplyRepository: YieldSupplyRepository,
|
||||
private val yieldSupplyPendingTracker: YieldSupplyPendingTracker,
|
||||
private val appsFlyerStore: AppsFlyerStore,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
) : Model(), YieldSupplyNotificationsComponent.ModelCallback {
|
||||
|
||||
private val params: YieldSupplyStartEarningComponent.Params = paramsContainer.require()
|
||||
|
|
@ -317,8 +315,7 @@ internal class YieldSupplyStartEarningModel @Inject constructor(
|
|||
userWallet = wallet
|
||||
uiState.update {
|
||||
it.copy(
|
||||
isHoldToConfirmEnabled = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
wallet.isHotWallet,
|
||||
isHoldToConfirmEnabled = wallet.isHotWallet,
|
||||
)
|
||||
}
|
||||
getCurrenciesStatusUpdates()
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.tangem.core.decompose.di.ModelScoped
|
|||
import com.tangem.core.decompose.model.Model
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.core.navigation.url.UrlOpener
|
||||
import com.tangem.core.ui.HoldToConfirmButtonFeatureToggles
|
||||
import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.wrappedList
|
||||
|
|
@ -67,7 +66,6 @@ internal class YieldSupplyStopEarningModel @Inject constructor(
|
|||
private val yieldSupplyRepository: YieldSupplyRepository,
|
||||
private val yieldSupplyPendingTracker: YieldSupplyPendingTracker,
|
||||
private val appsFlyerStore: AppsFlyerStore,
|
||||
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
|
||||
) : Model(), YieldSupplyNotificationsComponent.ModelCallback {
|
||||
|
||||
private val params: YieldSupplyStopEarningComponent.Params = paramsContainer.require()
|
||||
|
|
@ -104,8 +102,7 @@ internal class YieldSupplyStopEarningModel @Inject constructor(
|
|||
yieldSupplyFeeUM = YieldSupplyFeeUM.Loading,
|
||||
isPrimaryButtonEnabled = false,
|
||||
isTransactionSending = false,
|
||||
isHoldToConfirmEnabled = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
|
||||
params.userWallet.isHotWallet,
|
||||
isHoldToConfirmEnabled = params.userWallet.isHotWallet,
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue