From cee1bec47eb2d972e1965f681070d3e3ffd522e9 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 20 Oct 2022 22:20:27 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .idea/inspectionProfiles/Project_Default.xml | 6 +- .../products/note/OnboardingNoteFragment.kt | 56 +-- .../OnboardingOtherCardsFragment.kt | 56 ++- .../products/twins/ui/TwinsCardsFragment.kt | 357 +++++++++--------- .../res/layout/fragment_onboarding_main.xml | 26 +- .../res/layout/layout_onboarding_main.xml | 25 ++ 6 files changed, 246 insertions(+), 280 deletions(-) create mode 100644 app/src/main/res/layout/layout_onboarding_main.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index ba5af7a4ce..c914631447 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -84,9 +84,9 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt index a81bc28e87..a54a27bd28 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt @@ -1,19 +1,14 @@ package com.tangem.tap.features.onboarding.products.note -import android.graphics.Bitmap -import android.graphics.drawable.BitmapDrawable import android.os.Bundle import android.view.View import android.view.animation.OvershootInterpolator -import android.widget.ImageView import androidx.annotation.LayoutRes import androidx.constraintlayout.widget.ConstraintSet import androidx.core.view.isVisible import androidx.transition.TransitionManager import coil.load import com.tangem.blockchain.common.Blockchain -import com.tangem.tangem_sdk_new.extensions.fadeIn -import com.tangem.tangem_sdk_new.extensions.fadeOut import com.tangem.tap.common.extensions.getDrawableCompat import com.tangem.tap.common.extensions.stripZeroPlainString import com.tangem.tap.common.redux.navigation.ShareElement @@ -33,23 +28,18 @@ import com.tangem.wallet.R class OnboardingNoteFragment : BaseOnboardingFragment() { private var previousStep: OnboardingNoteStep = OnboardingNoteStep.None + private val mainBinding by lazy { binding.vMain } private lateinit var btnRefreshBalanceWidget: RefreshBalanceWidget - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - postponeEnterTransition() - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) addBackPressHandler(this) - binding.onboardingTopContainer.imvFrontCard.transitionName = ShareElement.imvFrontCard - startPostponedEnterTransition() + mainBinding.onboardingTopContainer.imvFrontCard.transitionName = ShareElement.imvFrontCard binding.toolbar.setTitle(R.string.onboarding_title) - btnRefreshBalanceWidget = RefreshBalanceWidget(binding.onboardingTopContainer.onboardingWalletContainer) + btnRefreshBalanceWidget = RefreshBalanceWidget(mainBinding.onboardingTopContainer.onboardingWalletContainer) store.dispatch(OnboardingNoteAction.LoadCardArtwork) store.dispatch(OnboardingNoteAction.DetermineStepOfScreen) @@ -67,7 +57,7 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { override fun newState(state: OnboardingNoteState) { if (activity == null || view == null) return - binding.onboardingTopContainer.imvFrontCard.load(state.cardArtworkUrl) { + mainBinding.onboardingTopContainer.imvFrontCard.load(state.cardArtworkUrl) { placeholder(R.drawable.card_placeholder_black) error(R.drawable.card_placeholder_black) fallback(R.drawable.card_placeholder_black) @@ -90,7 +80,7 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { private fun setBalance(state: OnboardingNoteState) { if (state.walletBalance.currency.blockchain == Blockchain.Unknown) return - with (binding.onboardingTopContainer.onboardingTvBalance) { + with(mainBinding.onboardingTopContainer.onboardingTvBalance) { if (state.balanceCriticalError == null) { val balanceValue = state.walletBalance.value.stripZeroPlainString() tvBalanceValue.text = balanceValue @@ -102,7 +92,7 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { } } - private fun setupNoneState() = with(binding.onboardingActionContainer) { + private fun setupNoneState() = with(mainBinding.onboardingActionContainer) { btnMainAction.isVisible = false btnAlternativeAction.isVisible = false btnRefreshBalanceWidget.show(false) @@ -116,7 +106,7 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { } private fun setupCreateWalletState(state: OnboardingNoteState) = - with(binding.onboardingActionContainer) { + with(mainBinding.onboardingActionContainer) { btnMainAction.setText(R.string.onboarding_create_wallet_button_create_wallet) btnMainAction.setOnClickListener { store.dispatch(OnboardingNoteAction.CreateWallet) } btnAlternativeAction.setText(R.string.onboarding_button_what_does_it_mean) @@ -127,15 +117,15 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { tvHeader.setText(R.string.onboarding_create_wallet_header) tvBody.setText(R.string.onboarding_create_wallet_body) - binding.onboardingTopContainer.imvCardBackground.setBackgroundDrawable( - requireContext().getDrawableCompat(R.drawable.shape_circle) + mainBinding.onboardingTopContainer.imvCardBackground.setBackgroundDrawable( + requireContext().getDrawableCompat(R.drawable.shape_circle), ) updateConstraints(state.currentStep, R.layout.lp_onboarding_create_wallet) btnAlternativeAction.isVisible = false // temporary } - private fun setupTopUpWalletState(state: OnboardingNoteState) = with(binding.onboardingActionContainer) { + private fun setupTopUpWalletState(state: OnboardingNoteState) = with(mainBinding.onboardingActionContainer) { if (state.isBuyAllowed) { btnMainAction.setText(R.string.onboarding_top_up_button_but_crypto) btnMainAction.setOnClickListener { @@ -163,7 +153,7 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { state.walletBalance.amountToCreateAccount?.let { amount -> val tvBodyMessage = getString( R.string.onboarding_top_up_body_no_account_error, - amount, state.walletBalance.currency.currencySymbol + amount, state.walletBalance.currency.currencySymbol, ) tvBody.text = tvBodyMessage } @@ -175,12 +165,13 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { store.dispatch(OnboardingNoteAction.Balance.Update) } } - binding.onboardingTopContainer.imvCardBackground - .setBackgroundDrawable(requireContext().getDrawableCompat(R.drawable.shape_rectangle_rounded_8)) + + val drawable = requireContext().getDrawableCompat(R.drawable.shape_rectangle_rounded_8) + mainBinding.onboardingTopContainer.imvCardBackground.setBackgroundDrawable(drawable) updateConstraints(state.currentStep, R.layout.lp_onboarding_topup_wallet) } - private fun setupDoneState(state: OnboardingNoteState) = with(binding.onboardingActionContainer) { + private fun setupDoneState(state: OnboardingNoteState) = with(mainBinding.onboardingActionContainer) { btnMainAction.setText(R.string.onboarding_done_button_continue) btnMainAction.setOnClickListener { showConfetti(false) @@ -188,15 +179,15 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { } btnAlternativeAction.isVisible = false - btnAlternativeAction.setText("") + btnAlternativeAction.text = "" btnAlternativeAction.setOnClickListener { } btnRefreshBalanceWidget.mainView.setOnClickListener(null) tvHeader.setText(R.string.onboarding_done_header) tvBody.setText(R.string.onboarding_done_body) - binding.onboardingTopContainer.imvCardBackground.setBackgroundDrawable( - requireContext().getDrawableCompat(R.drawable.shape_rectangle_rounded_8) + mainBinding.onboardingTopContainer.imvCardBackground.setBackgroundDrawable( + requireContext().getDrawableCompat(R.drawable.shape_rectangle_rounded_8), ) updateConstraints(state.currentStep, R.layout.lp_onboarding_done_activation) } @@ -204,7 +195,7 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { private fun updateConstraints(currentStep: OnboardingNoteStep, @LayoutRes layoutId: Int) { if (this.previousStep == currentStep) return - with(binding.onboardingTopContainer) { + with(mainBinding.onboardingTopContainer) { val constraintSet = ConstraintSet() constraintSet.clone(requireContext(), layoutId) constraintSet.applyTo(onboardingWalletContainer) @@ -213,13 +204,4 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { TransitionManager.beginDelayedTransition(onboardingWalletContainer, transition) } } -} - -fun ImageView.swapToBitmapDrawable(bitmap: Bitmap?, duration: Long = 200) { - if (drawable is BitmapDrawable && (drawable as BitmapDrawable).bitmap == bitmap) return - - fadeOut(duration) { - setImageBitmap(bitmap) - fadeIn(duration) - } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt index bb09b3d434..0ed23143da 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt @@ -24,17 +24,13 @@ import com.tangem.wallet.R */ class OnboardingOtherCardsFragment : BaseOnboardingFragment() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - postponeEnterTransition() - } + private val mainBinding by lazy { binding.vMain } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) addBackPressHandler(this) - binding.onboardingTopContainer.imvFrontCard.transitionName = ShareElement.imvFrontCard - startPostponedEnterTransition() + mainBinding.onboardingTopContainer.imvFrontCard.transitionName = ShareElement.imvFrontCard binding.toolbar.setTitle(R.string.onboarding_title) store.dispatch(OnboardingOtherCardsAction.LoadCardArtwork) @@ -54,7 +50,7 @@ class OnboardingOtherCardsFragment : BaseOnboardingFragment() { + private val mainBinding by lazy { binding.vMain } private var previousStep = TwinCardsStep.None private lateinit var twinsWidget: TwinsCardWidget @@ -47,7 +48,6 @@ class TwinsCardsFragment : BaseOnboardingFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - postponeEnterTransition() store.dispatch(TwinCardsAction.Init) } @@ -66,30 +66,30 @@ class TwinsCardsFragment : BaseOnboardingFragment() { super.onViewCreated(view, savedInstanceState) addBackPressHandler(this) - reconfigureLayoutForTwins(binding.onboardingTopContainer) + reconfigureLayoutForTwins(mainBinding.onboardingTopContainer) val typedValue = TypedValue() resources.getValue(R.dimen.device_scale_factor_for_twins_welcome, typedValue, true) val deviceScaleFactorForWelcomeState = typedValue.float twinsWidget = TwinsCardWidget( - LeapfrogWidget(binding.onboardingTopContainer.cardsContainer), - deviceScaleFactorForWelcomeState + LeapfrogWidget(mainBinding.onboardingTopContainer.cardsContainer), + deviceScaleFactorForWelcomeState, ) { 285f * deviceScaleFactorForWelcomeState } btnRefreshBalanceWidget = - RefreshBalanceWidget(binding.onboardingTopContainer.onboardingWalletContainer) + RefreshBalanceWidget(mainBinding.onboardingTopContainer.onboardingWalletContainer) binding.toolbar.title = getText(R.string.twins_recreate_toolbar) - binding.onboardingTopContainer.imvTwinFrontCard.load(Artwork.TWIN_CARD_1) { + mainBinding.onboardingTopContainer.imvTwinFrontCard.load(Artwork.TWIN_CARD_1) { placeholder(R.drawable.card_placeholder_black) error(R.drawable.card_placeholder_black) fallback(R.drawable.card_placeholder_black) } - binding.onboardingTopContainer.imvTwinBackCard.load(Artwork.TWIN_CARD_2) { + mainBinding.onboardingTopContainer.imvTwinBackCard.load(Artwork.TWIN_CARD_2) { placeholder(R.drawable.card_placeholder_white) error(R.drawable.card_placeholder_white) fallback(R.drawable.card_placeholder_white) @@ -143,7 +143,7 @@ class TwinsCardsFragment : BaseOnboardingFragment() { private fun setBalance(state: TwinCardsState) { if (state.walletBalance.currency.blockchain == Blockchain.Unknown) return - with(binding.onboardingTopContainer.onboardingTvBalance) { + with(mainBinding.onboardingTopContainer.onboardingTvBalance) { if (state.balanceCriticalError == null) { val balanceValue = state.walletBalance.value.stripZeroPlainString() tvBalanceValue.text = balanceValue @@ -167,26 +167,26 @@ class TwinsCardsFragment : BaseOnboardingFragment() { } private fun setupWelcomeState(state: TwinCardsState, mainAction: VoidCallback) = - with(binding.onboardingActionContainer) { - twinsWidget.toWelcome(false) { startPostponedEnterTransition() } + with(mainBinding.onboardingActionContainer) { + twinsWidget.toWelcome(false) - binding.onboardingTopContainer.onboardingTwinsWelcomeBg.root.show() + mainBinding.onboardingTopContainer.onboardingTwinsWelcomeBg.root.show() pbBinding.pbState.hide() tvHeader.setText(R.string.twins_onboarding_subtitle) tvBody.text = getString( R.string.twins_onboarding_description_format, - state.cardNumber?.pairIndexNumber() + state.cardNumber?.pairIndexNumber(), ) btnMainAction.setText(R.string.common_continue) btnMainAction.setOnClickListener { mainAction() } } - private fun setupWarningState(state: TwinCardsState) = with(binding.onboardingActionContainer) { - twinsWidget.toWelcome(false) { startPostponedEnterTransition() } + private fun setupWarningState(state: TwinCardsState) = with(mainBinding.onboardingActionContainer) { + twinsWidget.toWelcome(false) - binding.onboardingTopContainer.onboardingTwinsWelcomeBg.root.hide() + mainBinding.onboardingTopContainer.onboardingTwinsWelcomeBg.root.hide() pbBinding.pbState.hide() chbUnderstand.show() @@ -203,184 +203,175 @@ class TwinsCardsFragment : BaseOnboardingFragment() { } } - private fun setupCreateFirstWalletState(state: TwinCardsState) = - with(binding.onboardingActionContainer) { - binding.onboardingTopContainer.onboardingTwinsWelcomeBg.root.hide() - binding.onboardingTopContainer.onboardingTwinsWelcomeBg.bgCircleLarge.hide() - binding.onboardingTopContainer.onboardingTwinsWelcomeBg.bgCircleMedium.hide() - binding.onboardingTopContainer.onboardingTwinsWelcomeBg.bgCircleMin.hide() - chbUnderstand.hide() - pbBinding.pbState.show() + private fun setupCreateFirstWalletState(state: TwinCardsState) = with(mainBinding.onboardingActionContainer) { + mainBinding.onboardingTopContainer.onboardingTwinsWelcomeBg.root.hide() + mainBinding.onboardingTopContainer.onboardingTwinsWelcomeBg.bgCircleLarge.hide() + mainBinding.onboardingTopContainer.onboardingTwinsWelcomeBg.bgCircleMedium.hide() + mainBinding.onboardingTopContainer.onboardingTwinsWelcomeBg.bgCircleMin.hide() + chbUnderstand.hide() + pbBinding.pbState.show() - binding.onboardingTopContainer.onboardingWalletContainer.beginDelayedTransition() + mainBinding.onboardingTopContainer.onboardingWalletContainer.beginDelayedTransition() - when (previousStep) { - TwinCardsStep.None -> { - twinsWidget.toLeapfrog(false) { - when (state.cardNumber) { - TwinCardNumber.First -> startPostponedEnterTransition() - TwinCardNumber.Second -> { - switchToCard( - state.cardNumber, - false - ) { startPostponedEnterTransition() } - } - } - } - } - TwinCardsStep.Welcome, TwinCardsStep.Warning -> { - twinsWidget.toLeapfrog(onEnd = { switchToCard(state.cardNumber) }) - } - } - - val twinIndexNumber = state.cardNumber?.indexNumber() - tvHeader.text = getString(R.string.twins_recreate_title_format, twinIndexNumber) - tvBody.setText(R.string.onboarding_twins_interrupt_warning) - - btnMainAction.text = getString(R.string.twins_recreate_button_format, twinIndexNumber) - btnMainAction.setOnClickListener { - store.dispatch( - TwinCardsAction.Wallet.LaunchFirstStep( - Message(getString(R.string.twins_recreate_title_format, twinIndexNumber)), - AndroidAssetReader(requireContext()), - ) - ) - } - - btnAlternativeAction.isVisible = false - btnAlternativeAction.isClickable = false - } - - private fun setupCreateSecondWalletState(state: TwinCardsState) = - with(binding.onboardingActionContainer) { - switchToCard(state.cardNumber?.pairNumber()) - - val twinPairIndexNumber = state.cardNumber?.pairIndexNumber() - tvHeader.text = getString(R.string.twins_recreate_title_format, twinPairIndexNumber) - tvBody.setText(R.string.onboarding_twins_interrupt_warning) - - btnMainAction.text = - getString(R.string.twins_recreate_button_format, twinPairIndexNumber) - btnMainAction.setOnClickListener { - store.dispatch( - TwinCardsAction.Wallet.LaunchSecondStep( - Message( - getString( - R.string.twins_recreate_title_format, - twinPairIndexNumber - ) - ), - Message(getString(R.string.twins_recreate_title_preparing)), - Message(getString(R.string.twins_recreate_title_creating_wallet)), - ) - ) - } - } - - private fun setupCreateThirdWalletState(state: TwinCardsState) = - with(binding.onboardingActionContainer) { - switchToCard(state.cardNumber) - - val twinIndexNumber = state.cardNumber?.indexNumber() - tvHeader.text = getString(R.string.twins_recreate_title_format, twinIndexNumber) - tvBody.setText(R.string.onboarding_twins_interrupt_warning) - - btnMainAction.text = getString(R.string.twins_recreate_button_format, twinIndexNumber) - btnMainAction.setOnClickListener { - store.dispatch( - TwinCardsAction.Wallet.LaunchThirdStep( - Message(getString(R.string.twins_recreate_title_format, twinIndexNumber)) - ) - ) - } - } - - - private fun setupTopUpWalletState(state: TwinCardsState) = - with(binding.onboardingActionContainer) { - when (previousStep) { - TwinCardsStep.None -> { + when (previousStep) { + TwinCardsStep.None -> { + twinsWidget.toLeapfrog(false) { when (state.cardNumber) { - TwinCardNumber.First -> { - twinsWidget.leapfrogWidget.unfold(false) { - twinsWidget.toActivate(false) { - startPostponedEnterTransition() - } - } - } + TwinCardNumber.First -> {} TwinCardNumber.Second -> { - switchToCard(state.cardNumber, false) { - twinsWidget.toActivate(false) - startPostponedEnterTransition() - } + switchToCard( + state.cardNumber, + false, + ) } } } - TwinCardsStep.CreateThirdWallet -> { - twinsWidget.toActivate() - } } - - if (state.isBuyAllowed) { - btnMainAction.setText(R.string.onboarding_top_up_button_but_crypto) - btnMainAction.setOnClickListener { - store.dispatch(TwinCardsAction.TopUp) - } - - btnAlternativeAction.isVisible = true - btnAlternativeAction.setText(R.string.onboarding_top_up_button_show_wallet_address) - btnAlternativeAction.setOnClickListener { - store.dispatch(TwinCardsAction.ShowAddressInfoDialog) - } - } else { - btnMainAction.setText(R.string.onboarding_button_receive_crypto) - btnMainAction.setOnClickListener { - store.dispatch(TwinCardsAction.ShowAddressInfoDialog) - } - - btnAlternativeAction.isVisible = false + TwinCardsStep.Welcome, TwinCardsStep.Warning -> { + twinsWidget.toLeapfrog(onEnd = { switchToCard(state.cardNumber) }) } - - tvHeader.setText(R.string.onboarding_top_up_header) - tvBody.setText(R.string.onboarding_top_up_body) - - btnRefreshBalanceWidget.changeState(state.walletBalance.state) - if (btnRefreshBalanceWidget.isShowing != true) { - btnRefreshBalanceWidget.mainView.setOnClickListener { - store.dispatch(TwinCardsAction.Balance.Update) - } - } - binding.onboardingTopContainer.imvCardBackground.setBackgroundDrawable( - requireContext().getDrawableCompat(R.drawable.shape_rectangle_rounded_8) - ) - updateConstraints(state.currentStep, R.layout.lp_onboarding_topup_wallet_twins) } - private fun setupDoneState(state: TwinCardsState) = - with(binding.onboardingActionContainer) { - btnMainAction.setText(R.string.onboarding_done_button_continue) + val twinIndexNumber = state.cardNumber?.indexNumber() + tvHeader.text = getString(R.string.twins_recreate_title_format, twinIndexNumber) + tvBody.setText(R.string.onboarding_twins_interrupt_warning) + + btnMainAction.text = getString(R.string.twins_recreate_button_format, twinIndexNumber) + btnMainAction.setOnClickListener { + store.dispatch( + TwinCardsAction.Wallet.LaunchFirstStep( + Message(getString(R.string.twins_recreate_title_format, twinIndexNumber)), + AndroidAssetReader(requireContext()), + ), + ) + } + + btnAlternativeAction.isVisible = false + btnAlternativeAction.isClickable = false + } + + private fun setupCreateSecondWalletState(state: TwinCardsState) = with(mainBinding.onboardingActionContainer) { + switchToCard(state.cardNumber?.pairNumber()) + + val twinPairIndexNumber = state.cardNumber?.pairIndexNumber() + tvHeader.text = getString(R.string.twins_recreate_title_format, twinPairIndexNumber) + tvBody.setText(R.string.onboarding_twins_interrupt_warning) + + btnMainAction.text = + getString(R.string.twins_recreate_button_format, twinPairIndexNumber) + btnMainAction.setOnClickListener { + store.dispatch( + TwinCardsAction.Wallet.LaunchSecondStep( + Message( + getString( + R.string.twins_recreate_title_format, + twinPairIndexNumber, + ), + ), + Message(getString(R.string.twins_recreate_title_preparing)), + Message(getString(R.string.twins_recreate_title_creating_wallet)), + ), + ) + } + } + + private fun setupCreateThirdWalletState(state: TwinCardsState) = with(mainBinding.onboardingActionContainer) { + switchToCard(state.cardNumber) + + val twinIndexNumber = state.cardNumber?.indexNumber() + tvHeader.text = getString(R.string.twins_recreate_title_format, twinIndexNumber) + tvBody.setText(R.string.onboarding_twins_interrupt_warning) + + btnMainAction.text = getString(R.string.twins_recreate_button_format, twinIndexNumber) + btnMainAction.setOnClickListener { + store.dispatch( + TwinCardsAction.Wallet.LaunchThirdStep( + Message(getString(R.string.twins_recreate_title_format, twinIndexNumber)), + ), + ) + } + } + + private fun setupTopUpWalletState(state: TwinCardsState) = with(mainBinding.onboardingActionContainer) { + when (previousStep) { + TwinCardsStep.None -> { + when (state.cardNumber) { + TwinCardNumber.First -> { + twinsWidget.leapfrogWidget.unfold(false) { + twinsWidget.toActivate(false) + } + } + TwinCardNumber.Second -> { + switchToCard(state.cardNumber, false) { + twinsWidget.toActivate(false) + } + } + } + } + TwinCardsStep.CreateThirdWallet -> { + twinsWidget.toActivate() + } + } + + if (state.isBuyAllowed) { + btnMainAction.setText(R.string.onboarding_top_up_button_but_crypto) btnMainAction.setOnClickListener { - store.dispatch(TwinCardsAction.Confetti.Hide) - store.dispatch(TwinCardsAction.Done) + store.dispatch(TwinCardsAction.TopUp) + } + + btnAlternativeAction.isVisible = true + btnAlternativeAction.setText(R.string.onboarding_top_up_button_show_wallet_address) + btnAlternativeAction.setOnClickListener { + store.dispatch(TwinCardsAction.ShowAddressInfoDialog) + } + } else { + btnMainAction.setText(R.string.onboarding_button_receive_crypto) + btnMainAction.setOnClickListener { + store.dispatch(TwinCardsAction.ShowAddressInfoDialog) } btnAlternativeAction.isVisible = false - btnAlternativeAction.isClickable = false - - tvHeader.setText(R.string.onboarding_done_header) - tvBody.setText(R.string.onboarding_done_body) - - val layout = when (state.mode) { - CreateTwinWalletMode.CreateWallet -> R.layout.lp_onboarding_done_activation_twins - CreateTwinWalletMode.RecreateWallet -> R.layout.lp_onboarding_done - } - updateConstraints(state.currentStep, layout) } + tvHeader.setText(R.string.onboarding_top_up_header) + tvBody.setText(R.string.onboarding_top_up_body) + + btnRefreshBalanceWidget.changeState(state.walletBalance.state) + if (btnRefreshBalanceWidget.isShowing != true) { + btnRefreshBalanceWidget.mainView.setOnClickListener { + store.dispatch(TwinCardsAction.Balance.Update) + } + } + mainBinding.onboardingTopContainer.imvCardBackground.setBackgroundDrawable( + requireContext().getDrawableCompat(R.drawable.shape_rectangle_rounded_8), + ) + updateConstraints(state.currentStep, R.layout.lp_onboarding_topup_wallet_twins) + } + + private fun setupDoneState(state: TwinCardsState) = with(mainBinding.onboardingActionContainer) { + btnMainAction.setText(R.string.onboarding_done_button_continue) + btnMainAction.setOnClickListener { + store.dispatch(TwinCardsAction.Confetti.Hide) + store.dispatch(TwinCardsAction.Done) + } + + btnAlternativeAction.isVisible = false + btnAlternativeAction.isClickable = false + + tvHeader.setText(R.string.onboarding_done_header) + tvBody.setText(R.string.onboarding_done_body) + + val layout = when (state.mode) { + CreateTwinWalletMode.CreateWallet -> R.layout.lp_onboarding_done_activation_twins + CreateTwinWalletMode.RecreateWallet -> R.layout.lp_onboarding_done + } + updateConstraints(state.currentStep, layout) + } + private fun updateConstraints(currentStep: TwinCardsStep, @LayoutRes layoutId: Int) { if (this.previousStep == currentStep) return - with(binding.onboardingTopContainer) { + with(mainBinding.onboardingTopContainer) { val constraintSet = ConstraintSet() constraintSet.clone(requireContext(), layoutId) constraintSet.applyTo(onboardingWalletContainer) @@ -390,11 +381,7 @@ class TwinsCardsFragment : BaseOnboardingFragment() { } } - private fun switchToCard( - cardNumber: TwinCardNumber?, - animate: Boolean = true, - onEnd: VoidCallback = {} - ) { + private fun switchToCard(cardNumber: TwinCardNumber?, animate: Boolean = true, onEnd: VoidCallback = {}) { val position = cardNumber?.number ?: return if (twinsWidget.leapfrogWidget.getViewPositionByIndex(1) != position - 1) { @@ -405,12 +392,14 @@ class TwinsCardsFragment : BaseOnboardingFragment() { } override fun handleOnBackPressed() { - store.dispatch(TwinCardsAction.Wallet.HandleOnBackPressed { should, popAction -> - store.dispatch(TwinCardsAction.Confetti.Hide) - showConfetti(false) - if (should) switchToCard(TwinCardNumber.First, true, popAction) - else popAction() - }) + store.dispatch( + TwinCardsAction.Wallet.HandleOnBackPressed { should, popAction -> + store.dispatch(TwinCardsAction.Confetti.Hide) + showConfetti(false) + if (should) switchToCard(TwinCardNumber.First, true, popAction) + else popAction() + }, + ) } } diff --git a/app/src/main/res/layout/fragment_onboarding_main.xml b/app/src/main/res/layout/fragment_onboarding_main.xml index 97d770d2a3..c88f910dcb 100644 --- a/app/src/main/res/layout/fragment_onboarding_main.xml +++ b/app/src/main/res/layout/fragment_onboarding_main.xml @@ -27,29 +27,9 @@ - - - - - - - + + + + + + + + \ No newline at end of file