@@ -13,6 +13,8 @@ import com.getcode.solana.keys.base58
1313import com.getcode.util.resources.ResourceHelper
1414import com.flipcash.libs.coroutines.DispatcherProvider
1515import com.getcode.opencode.internal.solana.extensions.timelockSwapAccounts
16+ import com.flipcash.app.featureflags.FeatureFlag
17+ import com.flipcash.app.featureflags.FeatureFlagController
1618import com.getcode.opencode.model.financial.Token
1719import com.getcode.opencode.model.financial.usdf
1820import com.getcode.view.BaseViewModel2
@@ -22,6 +24,7 @@ import kotlinx.coroutines.flow.filterIsInstance
2224import kotlinx.coroutines.flow.launchIn
2325import kotlinx.coroutines.flow.mapNotNull
2426import kotlinx.coroutines.flow.onEach
27+ import kotlinx.coroutines.launch
2528import javax.inject.Inject
2629import kotlin.time.Duration.Companion.seconds
2730
@@ -32,6 +35,7 @@ internal class DepositViewModel @Inject constructor(
3235 clipboardManager : ClipboardManager ,
3336 resources : ResourceHelper ,
3437 dispatchers : DispatcherProvider ,
38+ featureFlags : FeatureFlagController ,
3539) : BaseViewModel2<DepositViewModel.State, DepositViewModel.Event>(
3640 initialState = State (),
3741 updateStateForEvent = updateStateForEvent,
@@ -58,30 +62,37 @@ internal class DepositViewModel @Inject constructor(
5862 .mapNotNull { tokenController.getTokenMetadata(it.mint) }
5963 .onResult(
6064 onSuccess = { result ->
61- val address = if (result.token.address == Mint .usdf) {
62- val usdfSwapAccounts = userManager.accountCluster?.let {
63- Token .usdf.timelockSwapAccounts(it.authorityPublicKey)
65+ viewModelScope.launch {
66+ val directDeposit = featureFlags.get(FeatureFlag .DepositUsdc )
67+ val address = if (result.token.address == Mint .usdf && directDeposit) {
68+ val usdfSwapAccounts = userManager.accountCluster?.let {
69+ Token .usdf.timelockSwapAccounts(it.authorityPublicKey)
70+ }
71+ usdfSwapAccounts?.ata?.publicKey?.base58()
72+ } else {
73+ userManager.accountCluster?.depositAddressFor(result.token)?.base58()
6474 }
65- usdfSwapAccounts?.pda?.publicKey?.base58()
66- } else {
67- userManager.accountCluster?.depositAddressFor(result.token)?.base58()
68- }
6975
70- if (address == null ) {
71- BottomBarManager .showError(
72- title = resources.getString(R .string.error_title_tokenNotFound),
73- message = resources.getString(R .string.error_description_tokenNotFound),
74- ) {
75- dispatchEvent(Event .Exit )
76+ if (address == null ) {
77+ BottomBarManager .showError(
78+ title = resources.getString(R .string.error_title_tokenNotFound),
79+ message = resources.getString(R .string.error_description_tokenNotFound),
80+ ) {
81+ dispatchEvent(Event .Exit )
82+ }
83+ return @launch
7684 }
77- return @onResult
78- }
79- val tokenName = if (result.token.address == Mint .usdf) {
80- resources.getString(R .string.displayName_usdc)
81- } else {
82- result.token.name
85+ val tokenName = when {
86+ directDeposit && result.token.address == Mint .usdf -> {
87+ resources.getString(R .string.displayName_usdc)
88+ }
89+ result.token.address == Mint .usdf -> {
90+ resources.getString(R .string.displayName_usdf)
91+ }
92+ else -> result.token.name
93+ }
94+ dispatchEvent(Event .OnTokenChanged (address, tokenName))
8395 }
84- dispatchEvent(Event .OnTokenChanged (address, tokenName))
8596 },
8697 onError = {
8798 BottomBarManager .showError(
0 commit comments