From c03ab1bfb2c22fe3c08fbe15d84dc89fecce3332 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 18 May 2022 16:26:21 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/tap/common/extensions/Specific.kt | 6 +- .../com/tangem/tap/common/extensions/UI.kt | 46 ++++++++++++ .../features/wallet/models/TotalBalance.kt | 4 +- .../redux/reducers/OnWalletLoadedReducer.kt | 8 +-- .../wallet/ui/wallet/MultiWalletView.kt | 24 ++++++- .../main/res/layout/card_total_balance.xml | 70 +++++++++++++------ app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 127 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/extensions/Specific.kt b/app/src/main/java/com/tangem/tap/common/extensions/Specific.kt index 83f6b0e3aa..2d0253eb8c 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/Specific.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/Specific.kt @@ -93,8 +93,10 @@ fun BigDecimal.formatAmountAsSpannedString( currencySymbol: String, integerPartSizeProportion: Float = 1.4f ): SpannedString { - val amount = this.scaleToFiat(applyPrecision = true) - .stripZeroPlainString() + val amount = this.toFormattedString( + decimals = 2, + roundingMode = RoundingMode.HALF_UP + ) val integer = amount.substringAfter('.') val reminder = amount.substringBefore('.') diff --git a/app/src/main/java/com/tangem/tap/common/extensions/UI.kt b/app/src/main/java/com/tangem/tap/common/extensions/UI.kt index 83abb0b13f..4e4ec7260a 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/UI.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/UI.kt @@ -1,5 +1,7 @@ package com.tangem.tap.common.extensions +import android.animation.Animator +import android.animation.AnimatorListenerAdapter import android.app.Activity import android.content.* import android.content.res.Resources @@ -16,6 +18,7 @@ import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.fragment.app.Fragment import com.google.android.material.card.MaterialCardView import com.tangem.common.extensions.VoidCallback @@ -187,4 +190,47 @@ fun Context.safeStartActivity( fun View.getString(resId: Int, vararg formatArgs: Any?): String { return context.getString(resId, formatArgs) +} + +fun View.showAnimated(durationMillis: Long = 300) { + this.animateVisibility( + show = true, + durationMillis = durationMillis + ) +} + +fun View.hideAnimated( + durationMillis: Long = 300, + hiddenVisibility: Int = View.GONE +) { + this.animateVisibility( + show = false, + durationMillis = durationMillis, + hiddenVisibility = hiddenVisibility + ) +} + +private fun View.animateVisibility( + show: Boolean, + durationMillis: Long = 300, + hiddenVisibility: Int = View.GONE +) { + if (this.isVisible == show) return + if (show) { + this.alpha = 0f + this.isVisible = true + this.animate() + .alpha(1f) + .setDuration(durationMillis) + .setListener(null) + } else { + this.animate() + .alpha(0f) + .setDuration(durationMillis) + .setListener(object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator?) { + this@animateVisibility.visibility = hiddenVisibility + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/wallet/models/TotalBalance.kt b/app/src/main/java/com/tangem/tap/features/wallet/models/TotalBalance.kt index 16676936e5..fdabcb075d 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/models/TotalBalance.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/models/TotalBalance.kt @@ -10,7 +10,7 @@ data class TotalBalance( ) { enum class State { Loading, - Failed, - Success + SomeTokensFailed, + Success, } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt index 3f4b539e20..4b4d1cce5d 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt @@ -214,7 +214,7 @@ class OnWalletLoadedReducer { BalanceStatus.Unreachable, BalanceStatus.NoAccount, BalanceStatus.EmptyCard, - BalanceStatus.UnknownBlockchain -> TotalBalance.State.Failed + BalanceStatus.UnknownBlockchain -> TotalBalance.State.SomeTokensFailed BalanceStatus.Loading, null -> TotalBalance.State.Loading } @@ -225,13 +225,13 @@ class OnWalletLoadedReducer { return when (this) { TotalBalance.State.Loading -> when (newState) { TotalBalance.State.Loading -> this - TotalBalance.State.Failed, + TotalBalance.State.SomeTokensFailed, TotalBalance.State.Success -> newState } TotalBalance.State.Success, - TotalBalance.State.Failed -> when (newState) { + TotalBalance.State.SomeTokensFailed -> when (newState) { TotalBalance.State.Loading, - TotalBalance.State.Failed -> newState + TotalBalance.State.SomeTokensFailed -> newState TotalBalance.State.Success -> this } } diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt index 996be5039a..e5d39024ac 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt @@ -1,13 +1,12 @@ package com.tangem.tap.features.wallet.ui.wallet import android.app.Dialog +import android.view.View import androidx.recyclerview.widget.LinearLayoutManager import com.tangem.common.card.Card import com.tangem.domain.common.TapWorkarounds.derivationStyle import com.tangem.domain.common.TapWorkarounds.isTestCard -import com.tangem.tap.common.extensions.formatAmountAsSpannedString -import com.tangem.tap.common.extensions.hide -import com.tangem.tap.common.extensions.show +import com.tangem.tap.common.extensions.* import com.tangem.tap.common.redux.StateDialog import com.tangem.tap.common.redux.navigation.AppScreen import com.tangem.tap.common.redux.navigation.NavigationAction @@ -135,10 +134,29 @@ class MultiWalletView : WalletView { binding: FragmentWalletBinding, totalBalance: TotalBalance, ) = with(binding.lCardTotalBalance) { + when (totalBalance.state) { + TotalBalance.State.Loading -> { + pbLoading.showAnimated() + tvBalance.hideAnimated(hiddenVisibility = View.INVISIBLE) + tvProcessing.hideAnimated() + } + TotalBalance.State.SomeTokensFailed -> { + tvBalance.showAnimated() + pbLoading.hideAnimated() + tvProcessing.showAnimated() + } + TotalBalance.State.Success -> { + tvBalance.showAnimated() + pbLoading.hideAnimated() + tvProcessing.hideAnimated() + } + } + tvBalance.text = totalBalance.fiatAmount.formatAmountAsSpannedString( currencySymbol = totalBalance.fiatCurrency.symbol ) tvCurrencyName.text = totalBalance.fiatCurrency.code + tvCurrencyName.setOnClickListener { // TODO: Open app currency selector } diff --git a/app/src/main/res/layout/card_total_balance.xml b/app/src/main/res/layout/card_total_balance.xml index 51fa4aecb7..0b0d382e71 100644 --- a/app/src/main/res/layout/card_total_balance.xml +++ b/app/src/main/res/layout/card_total_balance.xml @@ -9,24 +9,24 @@ android:minWidth="300dp"> - - + android:background="@android:color/white" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:layout_marginTop="12dp" + android:layout_marginBottom="4dp" + android:elevation="3dp"> + + + tools:text="$ 22 325.40" + tools:visibility="visible" /> + + + + + tools:text="USD" /> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 014599d80e..bc04e7cf38 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -383,4 +383,5 @@ Пожалуйста, расскажите нам больше о Вашей проблеме. Каждая деталь может быть полезной. Информация ниже не является обязательной. Вы можете стереть её, если хотите. Баланс + Обработка полной суммы… diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 82023e7837..c3caa853e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -207,4 +207,5 @@ Reduce by %s XTZ No, send all Total balance + Processing full amount…