diff --git a/app/src/main/java/com/tangem/tap/common/images/Picasso.kt b/app/src/main/java/com/tangem/tap/common/images/Picasso.kt index 7d2a956bde..9220859e8b 100644 --- a/app/src/main/java/com/tangem/tap/common/images/Picasso.kt +++ b/app/src/main/java/com/tangem/tap/common/images/Picasso.kt @@ -21,6 +21,7 @@ class PicassoHelper { .downloader(OkHttp3Downloader(getOkHttpForPicasso(application))) .build() picasso.isLoggingEnabled = BuildConfig.DEBUG + picasso.setIndicatorsEnabled(BuildConfig.DEBUG) Picasso.setSingletonInstance(picasso) } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingManager.kt b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingManager.kt index 60d3cc323f..3aa671c5c3 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingManager.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingManager.kt @@ -10,20 +10,14 @@ import com.tangem.operations.attestation.OnlineCardVerifier import com.tangem.tap.common.extensions.isPositive import com.tangem.tap.common.extensions.safeUpdate import com.tangem.tap.domain.TapError -import com.tangem.tap.domain.UrlBitmapLoader import com.tangem.tap.domain.extensions.getOrLoadCardArtworkUrl import com.tangem.tap.domain.tasks.product.ScanResponse import com.tangem.tap.features.wallet.models.hasPendingTransactions -import com.tangem.tap.features.wallet.redux.Artwork import com.tangem.tap.features.wallet.redux.Currency import com.tangem.tap.features.wallet.redux.ProgressState import com.tangem.tap.persistence.UsedCardsPrefStorage -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext import timber.log.Timber import java.math.BigDecimal -import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine /** [REDACTED_AUTHOR] @@ -36,24 +30,31 @@ class OnboardingManager( var cardInfo: Result? = null private set - suspend fun loadArtwork(): Artwork { - cardInfo = OnlineCardVerifier().getCardInfo(scanResponse.card.cardId, scanResponse.card.cardPublicKey) - return loadArtwork(scanResponse.card.getOrLoadCardArtworkUrl(cardInfo)) + suspend fun loadArtworkUrl(): String { + val cardInfo = cardInfo + ?: OnlineCardVerifier().getCardInfo(scanResponse.card.cardId, scanResponse.card.cardPublicKey) + this.cardInfo = cardInfo + return scanResponse.card.getOrLoadCardArtworkUrl(cardInfo) } - suspend fun loadArtwork(url: String): Artwork { - return withContext(Dispatchers.Main) { - suspendCoroutine { continuation -> - UrlBitmapLoader().loadBitmap(url) { - val result = when (it) { - is Result.Success -> Artwork(url, it.data) - is Result.Failure -> Artwork(url, null) - } - continuation.resume(result) - } - } - } - } +// suspend fun loadArtwork(): Artwork { +// cardInfo = OnlineCardVerifier().getCardInfo(scanResponse.card.cardId, scanResponse.card.cardPublicKey) +// return loadArtwork(scanResponse.card.getOrLoadCardArtworkUrl(cardInfo)) +// } +// +// suspend fun loadArtwork(url: String): Artwork { +// return withContext(Dispatchers.Main) { +// suspendCoroutine { continuation -> +// UrlBitmapLoader().loadBitmap(url) { +// val result = when (it) { +// is Result.Success -> Artwork(url, it.data) +// is Result.Failure -> Artwork(url, null) +// } +// continuation.resume(result) +// } +// } +// } +// } suspend fun updateBalance(walletManager: WalletManager): OnboardingWalletBalance { val balance = when (val result = walletManager.safeUpdate()) { 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 96086474e5..7eb8b3a5fc 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 @@ -10,6 +10,7 @@ import androidx.annotation.LayoutRes import androidx.constraintlayout.widget.ConstraintSet import androidx.core.view.isVisible import androidx.transition.TransitionManager +import com.squareup.picasso.Picasso import com.tangem.blockchain.common.Blockchain import com.tangem.tangem_sdk_new.extensions.fadeIn import com.tangem.tangem_sdk_new.extensions.fadeOut @@ -73,7 +74,12 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { override fun newState(state: OnboardingNoteState) { if (activity == null) return - state.cardArtwork?.let { imv_front_card.swapToBitmapDrawable(it.artwork) } + Picasso.get() + .load(state.cardArtworkUrl) + .error(R.drawable.card_placeholder_black) + .placeholder(R.drawable.card_placeholder_black) + ?.into(imv_front_card) + pb_state.max = state.steps.size - 1 pb_state.progress = state.progress diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteAction.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteAction.kt index cce3d41924..5b377fd072 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteAction.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteAction.kt @@ -3,7 +3,6 @@ package com.tangem.tap.features.onboarding.products.note.redux import com.tangem.blockchain.common.WalletManager import com.tangem.tap.domain.TapError import com.tangem.tap.features.onboarding.OnboardingWalletBalance -import com.tangem.tap.features.wallet.redux.Artwork import org.rekotlin.Action /** @@ -17,7 +16,7 @@ sealed class OnboardingNoteAction : Action { object ShowAddressInfoDialog : OnboardingNoteAction() // from redux - class SetArtwork(val artwork: Artwork) : OnboardingNoteAction() + class SetArtworkUrl(val artworkUrl: String) : OnboardingNoteAction() data class SetWalletManager(val walletManager: WalletManager) : OnboardingNoteAction() object DetermineStepOfScreen : OnboardingNoteAction() object Done : OnboardingNoteAction() diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt index c3af3a169a..7565ff0c9b 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt @@ -51,8 +51,8 @@ private fun handleNoteAction(action: Action, dispatch: DispatchFunction) { when (action) { is OnboardingNoteAction.LoadCardArtwork -> { scope.launch { - val artwork = onboardingManager.loadArtwork() - withMainContext { store.dispatch(OnboardingNoteAction.SetArtwork(artwork)) } + val artworkUrl = onboardingManager.loadArtworkUrl() + withMainContext { store.dispatch(OnboardingNoteAction.SetArtworkUrl(artworkUrl)) } } } is OnboardingNoteAction.DetermineStepOfScreen -> { diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteReducer.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteReducer.kt index 913dca781f..7626922560 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteReducer.kt @@ -17,8 +17,8 @@ private fun internalReduce(action: Action, appState: AppState): OnboardingNoteSt is GlobalAction.Onboarding.Start -> { state = OnboardingNoteState() } - is OnboardingNoteAction.SetArtwork -> { - state = state.copy(cardArtwork = action.artwork) + is OnboardingNoteAction.SetArtworkUrl -> { + state = state.copy(cardArtworkUrl = action.artworkUrl) } is OnboardingNoteAction.SetWalletManager -> { state = state.copy(walletManager = action.walletManager) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteState.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteState.kt index c1967db335..5bc772fa3a 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteState.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteState.kt @@ -3,7 +3,6 @@ package com.tangem.tap.features.onboarding.products.note.redux import com.tangem.blockchain.common.WalletManager import com.tangem.tap.domain.TapError import com.tangem.tap.features.onboarding.OnboardingWalletBalance -import com.tangem.tap.features.wallet.redux.Artwork import org.rekotlin.StateType /** @@ -12,7 +11,7 @@ import org.rekotlin.StateType data class OnboardingNoteState( val walletManager: WalletManager? = null, // UI - val cardArtwork: Artwork? = null, + val cardArtworkUrl: String? = null, val walletBalance: OnboardingWalletBalance = OnboardingWalletBalance.loading(), val balanceNonCriticalError: TapError? = null, val balanceCriticalError: TapError? = null, 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 cdd2871e00..0072388bcb 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 @@ -7,12 +7,12 @@ import androidx.annotation.LayoutRes import androidx.constraintlayout.widget.ConstraintSet import androidx.core.view.isVisible import androidx.transition.TransitionManager +import com.squareup.picasso.Picasso import com.tangem.tap.common.extensions.getDrawableCompat import com.tangem.tap.common.redux.navigation.ShareElement import com.tangem.tap.common.transitions.InternalNoteLayoutTransition import com.tangem.tap.features.addBackPressHandler import com.tangem.tap.features.onboarding.products.BaseOnboardingFragment -import com.tangem.tap.features.onboarding.products.note.swapToBitmapDrawable import com.tangem.tap.features.onboarding.products.otherCards.redux.OnboardingOtherCardsAction import com.tangem.tap.features.onboarding.products.otherCards.redux.OnboardingOtherCardsState import com.tangem.tap.features.onboarding.products.otherCards.redux.OnboardingOtherCardsStep @@ -60,7 +60,12 @@ class OnboardingOtherCardsFragment : BaseOnboardingFragment { scope.launch { - val artwork = onboardingManager.loadArtwork() - withMainContext { store.dispatch(OnboardingOtherCardsAction.SetArtwork(artwork)) } + val artworkUrl = onboardingManager.loadArtworkUrl() + withMainContext { store.dispatch(OnboardingOtherCardsAction.SetArtworkUrl(artworkUrl)) } } } is OnboardingOtherCardsAction.DetermineStepOfScreen -> { diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsReducer.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsReducer.kt index 129b7ea280..e8dc2ae111 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsReducer.kt @@ -17,8 +17,8 @@ private fun internalReduce(action: Action, appState: AppState): OnboardingOtherC is GlobalAction.Onboarding.Start -> { state = OnboardingOtherCardsState() } - is OnboardingOtherCardsAction.SetArtwork -> { - state = state.copy(cardArtwork = action.artwork) + is OnboardingOtherCardsAction.SetArtworkUrl -> { + state = state.copy(cardArtworkUrl = action.artworkUrl) } is OnboardingOtherCardsAction.SetStepOfScreen -> { if (action.step != state.currentStep && state.steps.contains(action.step)) { diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsState.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsState.kt index b306101506..f502350050 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsState.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsState.kt @@ -1,6 +1,5 @@ package com.tangem.tap.features.onboarding.products.otherCards.redux -import com.tangem.tap.features.wallet.redux.Artwork import org.rekotlin.StateType /** @@ -8,7 +7,7 @@ import org.rekotlin.StateType */ data class OnboardingOtherCardsState( // UI - val cardArtwork: Artwork? = null, + val cardArtworkUrl: String? = null, val showConfetti: Boolean = false, val currentStep: OnboardingOtherCardsStep = OnboardingOtherCardsStep.None, val steps: List = OnboardingOtherCardsStep.values().toList(), diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt index ccc015f2e6..81e11f7e47 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt @@ -84,11 +84,13 @@ class TwinsCardsFragment : BaseOnboardingFragment() { Picasso.get() .load(Artwork.TWIN_CARD_1) + .error(R.drawable.card_placeholder_black) .placeholder(R.drawable.card_placeholder_black) ?.into(imv_twin_front_card) Picasso.get() .load(Artwork.TWIN_CARD_2) + .error(R.drawable.card_placeholder_white) .placeholder(R.drawable.card_placeholder_white) ?.into(imv_twin_back_card) }