diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/MultiWalletReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/MultiWalletReducer.kt
index 2c19ca8e8b..158d7e61ff 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/MultiWalletReducer.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/MultiWalletReducer.kt
@@ -120,15 +120,17 @@ class MultiWalletReducer {
} ?: emptyList()
val sendButtonEnabled = action.amount.value?.isZero() == false && pendingTransactions.isEmpty()
- val balanceStatus = if (pendingTransactions.isNotEmpty()) {
- BalanceStatus.TransactionInProgress
- } else {
- BalanceStatus.VerifiedOnline
+ val tokenPendingTransactions = pendingTransactions
+ .filter { it.currency == action.amount.currencySymbol }
+ val tokenBalanceStatus = when {
+ tokenPendingTransactions.isNotEmpty() -> BalanceStatus.TransactionInProgress
+ pendingTransactions.isNotEmpty() -> BalanceStatus.SameCurrencyTransactionInProgress
+ else -> BalanceStatus.VerifiedOnline
}
val tokenWalletData = state.getWalletData(action.amount.currencySymbol)
val newTokenWalletData = tokenWalletData?.copy(
currencyData = tokenWalletData.currencyData.copy(
- status = balanceStatus,
+ status = tokenBalanceStatus,
amount = action.amount.value?.toFormattedCurrencyString(
action.amount.decimals, action.amount.currencySymbol
),
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 1b3442c812..2b3ad57454 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
@@ -65,9 +65,15 @@ class OnWalletLoadedReducer {
val tokens = wallet.getTokens().mapNotNull { token ->
val tokenWalletData = walletState.getWalletData(token.symbol)
+ val tokenPendingTransactions = pendingTransactions.filter { it.currency == token.symbol }
+ val tokenBalanceStatus = when {
+ tokenPendingTransactions.isNotEmpty() -> BalanceStatus.TransactionInProgress
+ pendingTransactions.isNotEmpty() -> BalanceStatus.SameCurrencyTransactionInProgress
+ else -> BalanceStatus.VerifiedOnline
+ }
tokenWalletData?.copy(
currencyData = tokenWalletData.currencyData.copy(
- status = balanceStatus,
+ status = tokenBalanceStatus,
amount = wallet.getTokenAmount(token)?.value?.toFormattedCurrencyString(
token.decimals, token.symbol
),
@@ -76,7 +82,7 @@ class OnWalletLoadedReducer {
?.toFiatString(it, fiatCurrencySymbol)
}
),
- pendingTransactions = pendingTransactions.removeUnknownTransactions(),
+ pendingTransactions = tokenPendingTransactions.removeUnknownTransactions(),
mainButton = WalletMainButton.SendButton(sendButtonEnabled)
)
}
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/BalanceWidget.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/BalanceWidget.kt
index ed446c3ee5..508a62b08c 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/ui/BalanceWidget.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/BalanceWidget.kt
@@ -13,6 +13,7 @@ import java.math.BigDecimal
enum class BalanceStatus {
VerifiedOnline,
TransactionInProgress,
+ SameCurrencyTransactionInProgress,
Unreachable,
Loading,
NoAccount,
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt
index bd13ada0c9..5b59b03015 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt
@@ -205,10 +205,12 @@ class WalletDetailsFragment : Fragment(R.layout.fragment_wallet_details), StoreS
showStatus(R.id.tv_status_loading)
showBalanceWithoutToken(data, false)
}
- BalanceStatus.VerifiedOnline, BalanceStatus.TransactionInProgress -> {
+ BalanceStatus.VerifiedOnline, BalanceStatus.SameCurrencyTransactionInProgress,
+ BalanceStatus.TransactionInProgress -> {
l_balance.show()
l_balance_error.hide()
- val statusView = if (data.status == BalanceStatus.VerifiedOnline) {
+ val statusView = if (data.status == BalanceStatus.VerifiedOnline ||
+ data.status == BalanceStatus.SameCurrencyTransactionInProgress) {
R.id.tv_status_verified
} else {
tv_status_error.text =
@@ -245,6 +247,7 @@ class WalletDetailsFragment : Fragment(R.layout.fragment_wallet_details), StoreS
)
}
}
+ card_pending_transaction_warning.show(data.status == BalanceStatus.SameCurrencyTransactionInProgress)
}
private fun showStatus(@IdRes viewRes: Int) {
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WalletAdapter.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WalletAdapter.kt
index 73083d0e58..c14d364abf 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WalletAdapter.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WalletAdapter.kt
@@ -100,7 +100,7 @@ class WalletAdapter
view.iv_currency.setImageResource(R.drawable.shape_circle)
}
when (wallet.currencyData.status) {
- BalanceStatus.VerifiedOnline -> hideWarning()
+ BalanceStatus.VerifiedOnline, BalanceStatus.SameCurrencyTransactionInProgress -> hideWarning()
BalanceStatus.Loading -> {
hideWarning()
if (wallet.currencyData.amount == null) {
diff --git a/app/src/main/res/layout/fragment_wallet_details.xml b/app/src/main/res/layout/fragment_wallet_details.xml
index a848f0df9d..757eeab445 100644
--- a/app/src/main/res/layout/fragment_wallet_details.xml
+++ b/app/src/main/res/layout/fragment_wallet_details.xml
@@ -79,6 +79,36 @@
app:layout_constraintTop_toBottomOf="@id/rv_pending_transaction" />
+
+
+
+
+
+
+
@@ -107,12 +138,13 @@
android:id="@+id/btn_confirm"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
- android:layout_marginStart="8dp"
+ android:layout_marginStart="4dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="33dp"
android:text="@string/wallet_button_send"
app:icon="@drawable/ic_send"
+ app:layout_constraintTop_toBottomOf="@id/barrier"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/guideline"
diff --git a/app/src/main/res/values/strings_untranslated.xml b/app/src/main/res/values/strings_untranslated.xml
index 860b985336..238bc7a845 100644
--- a/app/src/main/res/values/strings_untranslated.xml
+++ b/app/src/main/res/values/strings_untranslated.xml
@@ -97,7 +97,7 @@ this wallet.
Copy
Share
+ Add tokens
-
+ Please wait for the transaction to complete to be able to send funds
Authenticity check failed
This card might be a production sample or counterfeit