diff --git a/app/src/main/assets/features_dev.json b/app/src/main/assets/features_dev.json index 33cf6e331b..236d0285bd 100644 --- a/app/src/main/assets/features_dev.json +++ b/app/src/main/assets/features_dev.json @@ -6,5 +6,9 @@ { "name": "isTopUpEnabled", "value": true + }, + { + "name": "isCreatingTwinCardsAllowed", + "value": false } ] \ No newline at end of file diff --git a/app/src/main/assets/features_prod.json b/app/src/main/assets/features_prod.json index ede61eb088..39b226d053 100644 --- a/app/src/main/assets/features_prod.json +++ b/app/src/main/assets/features_prod.json @@ -6,5 +6,9 @@ { "name": "isTopUpEnabled", "value": false + }, + { + "name": "isCreatingTwinCardsAllowed", + "value": true } ] \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index f9da8875d4..11fa152761 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -100,7 +100,10 @@ class TapWalletManager { val secondCardId = TwinsHelper.getTwinsCardId(data.card.cardId) val cardNumber = TwinsHelper.getTwinCardNumber(data.card.cardId) if (secondCardId != null && cardNumber != null) { - store.dispatch(WalletAction.TwinsAction.SetTwinCard(secondCardId, cardNumber)) + store.dispatch(WalletAction.TwinsAction.SetTwinCard( + secondCardId, cardNumber, + configManager?.config?.isCreatingTwinCardsAllowed ?: false + )) } } loadData(data) diff --git a/app/src/main/java/com/tangem/tap/domain/config/ConfigManager.kt b/app/src/main/java/com/tangem/tap/domain/config/ConfigManager.kt index 339aeb3124..5bacbd31ba 100644 --- a/app/src/main/java/com/tangem/tap/domain/config/ConfigManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/config/ConfigManager.kt @@ -11,6 +11,7 @@ data class Config( val moonPayApiSecretKey: String = "sk_test_V8w4M19LbDjjYOt170s0tGuvXAgyEb1C", val isWalletPayIdEnabled: Boolean = true, val isTopUpEnabled: Boolean = false, + val isCreatingTwinCardsAllowed: Boolean = false ) class ConfigManager( @@ -38,6 +39,7 @@ class ConfigManager( when (name) { isWalletPayIdEnabled -> config = config.copy(isWalletPayIdEnabled = false) isTopUpEnabled -> config = config.copy(isTopUpEnabled = false) + isCreatingTwinCardsAllowed -> config = config.copy(isCreatingTwinCardsAllowed = false) } } @@ -45,6 +47,8 @@ class ConfigManager( when (name) { isWalletPayIdEnabled -> config = config.copy(isWalletPayIdEnabled = defaultConfig.isWalletPayIdEnabled) isTopUpEnabled -> config = config.copy(isTopUpEnabled = defaultConfig.isTopUpEnabled) + isCreatingTwinCardsAllowed -> config = + config.copy(isCreatingTwinCardsAllowed = defaultConfig.isCreatingTwinCardsAllowed) } } @@ -60,6 +64,10 @@ class ConfigManager( config = config.copy(isTopUpEnabled = newValue) defaultConfig = defaultConfig.copy(isTopUpEnabled = newValue) } + isCreatingTwinCardsAllowed -> { + config = config.copy(isCreatingTwinCardsAllowed = newValue) + defaultConfig = defaultConfig.copy(isCreatingTwinCardsAllowed = newValue) + } } } @@ -83,6 +91,7 @@ class ConfigManager( companion object { const val isWalletPayIdEnabled = "isWalletPayIdEnabled" const val isTopUpEnabled = "useTopUp" + const val isCreatingTwinCardsAllowed = "isCreatingTwinCardsAllowed" const val coinMarketCapKey = "coinMarketCapKey" const val moonPayApiKey = "moonPayApiKey" const val moonPayApiSecretKey = "moonPayApiSecretKey" diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt index 1fb22f9243..fe8c56708e 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt @@ -18,6 +18,7 @@ sealed class DetailsAction : Action { val card: Card, val scanNoteResponse: ScanNoteResponse, val wallet: Wallet?, + val isCreatingTwinWalletAllowed: Boolean?, val fiatCurrencyName: FiatCurrencyName, val fiatCurrencies: List? = null, ) : DetailsAction() diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt index 52e245bd7b..58997e57b6 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt @@ -10,7 +10,6 @@ import com.tangem.tap.domain.TwinsHelper import com.tangem.tap.domain.extensions.toSendableAmounts import com.tangem.tap.features.details.redux.twins.CreateTwinWalletReducer import com.tangem.tap.features.details.redux.twins.CreateTwinWalletState -import com.tangem.wallet.BuildConfig import org.rekotlin.Action import java.util.* @@ -62,7 +61,7 @@ private fun handlePrepareScreen(action: DetailsAction.PrepareScreen, state: Deta twinCardNumber = TwinsHelper.getTwinCardNumber(action.card.cardId), createTwinWallet = null, showAlert = false, - allowRecreatingWallet = BuildConfig.DEBUG + allowRecreatingWallet = action.isCreatingTwinWalletAllowed ) } else { null diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt index b8d37bc479..58ffdb8acc 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt @@ -94,11 +94,14 @@ sealed class WalletAction : Action { data class TopUp(val context: Context, val toolbarColor: Int) : TopUpAction() } - data class ChangeSelectedAddress(val type: AddressType): WalletAction() + data class ChangeSelectedAddress(val type: AddressType) : WalletAction() sealed class TwinsAction : WalletAction() { object ShowOnboarding : TwinsAction() object SetOnboardingShown : TwinsAction() - data class SetTwinCard(val secondCardId: String, val number: TwinCardNumber) : TwinsAction() + data class SetTwinCard( + val secondCardId: String, val number: TwinCardNumber, + val isCreatingTwinCardsAllowed: Boolean + ) : TwinsAction() } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt index 92e07f9616..05436a495a 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt @@ -34,12 +34,17 @@ private fun internalReduce(action: Action, state: AppState): WalletState { when (action) { is WalletAction.ResetState -> newState = WalletState() - is WalletAction.EmptyWallet -> newState = newState.copy( - state = ProgressState.Done, - currencyData = BalanceWidgetData(BalanceStatus.EmptyCard), - mainButton = WalletMainButton.CreateWalletButton(true), - topUpState = TopUpState(false) - ) + is WalletAction.EmptyWallet -> { + val creatingWalletAllowed = !(newState.twinCardsState != null && + newState.twinCardsState?.isCreatingTwinCardsAllowed != true) + + newState = newState.copy( + state = ProgressState.Done, + currencyData = BalanceWidgetData(BalanceStatus.EmptyCard), + mainButton = WalletMainButton.CreateWalletButton(creatingWalletAllowed), + topUpState = TopUpState(false) + ) + } is WalletAction.LoadData.Failure -> { when (action.error) { is TapError.NoInternetConnection -> { @@ -224,13 +229,18 @@ private fun internalReduce(action: Action, state: AppState): WalletState { twinCardsState = TwinCardsState( secondCardId = action.secondCardId, cardNumber = action.number, - newState.twinCardsState?.showTwinOnboarding ?: false) + showTwinOnboarding = newState.twinCardsState?.showTwinOnboarding + ?: false, + isCreatingTwinCardsAllowed = action.isCreatingTwinCardsAllowed + ) ) } is WalletAction.TwinsAction.ShowOnboarding -> { newState = newState.copy( twinCardsState = newState.twinCardsState?.copy(showTwinOnboarding = true) - ?: TwinCardsState(null, null, true) + ?: TwinCardsState(null, null, + showTwinOnboarding = true, + isCreatingTwinCardsAllowed = false) ) } is WalletAction.TwinsAction.SetOnboardingShown -> { diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt index 40872e913b..7593182093 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt @@ -105,5 +105,6 @@ data class TopUpState( data class TwinCardsState( val secondCardId: String?, val cardNumber: TwinCardNumber?, - val showTwinOnboarding: Boolean + val showTwinOnboarding: Boolean, + val isCreatingTwinCardsAllowed: Boolean ) \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt index 29d5da7833..6e921e5b9b 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt @@ -101,7 +101,7 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber