Updated on 2026-08-14

This commit is contained in:
Tangem 2020-09-30 15:56:16 +03:00
parent c1514f9f0e
commit 82fec40849
6 changed files with 21 additions and 8 deletions

View file

@ -64,7 +64,7 @@ dependencies {
implementation 'com.google.android.material:material:1.2.1'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10'
implementation 'com.tangem:blockchain:1.67.0'
implementation 'com.tangem:blockchain:1.68.0'
implementation 'com.tangem:core:1.63.0'
implementation 'com.tangem:sdk:1.63.0'

View file

@ -81,6 +81,12 @@ class TapWalletManager {
withContext(Dispatchers.Main) {
store.dispatch(WalletAction.ResetState)
store.dispatch(GlobalAction.SaveScanNoteResponse(data))
loadData(data)
}
}
suspend fun loadData(data: ScanNoteResponse) {
withContext(Dispatchers.Main) {
store.dispatch(WalletAction.CheckIfWarningNeeded)
val artworkId = data.verifyResponse?.artworkInfo?.id
if (data.walletManager != null) {

View file

@ -34,6 +34,7 @@ sealed class WalletAction : Action {
object SaveCardId : WalletAction()
object UpdateWallet : WalletAction() {
object ScheduleUpdatingWallet : WalletAction()
data class Success(val wallet: Wallet) : WalletAction()
data class Failure(val errorMessage: String? = null) : WalletAction()
}

View file

@ -22,6 +22,7 @@ import com.tangem.tap.domain.PayIdManager
import com.tangem.tap.domain.TapError
import com.tangem.tap.domain.extensions.toSendableAmounts
import com.tangem.tap.features.send.redux.PrepareSendScreen
import com.tangem.tap.features.wallet.models.toPendingTransactions
import com.tangem.tap.network.NetworkConnectivity
import com.tangem.tap.network.NetworkStateChanged
import com.tangem.tap.preferencesStorage
@ -74,7 +75,7 @@ val walletMiddleware: Middleware<AppState> = { dispatch, state ->
is WalletAction.UpdateWallet.Success -> setupWalletUpdate(action.wallet)
is WalletAction.LoadWallet.Success -> {
store.dispatch(WalletAction.CheckHashesCountOnline)
setupWalletUpdate(action.wallet)
if (!store.state.walletState.updatingWallet) setupWalletUpdate(action.wallet)
}
is WalletAction.CreatePayId.CompleteCreatingPayId -> {
scope.launch {
@ -113,7 +114,7 @@ val walletMiddleware: Middleware<AppState> = { dispatch, state ->
is WalletAction.LoadData -> {
scope.launch {
store.state.globalState.scanNoteResponse?.let {
store.state.globalState.tapWalletManager.onCardScanned(it)
store.state.globalState.tapWalletManager.loadData(it)
}
}
}
@ -164,9 +165,10 @@ val walletMiddleware: Middleware<AppState> = { dispatch, state ->
}
private fun setupWalletUpdate(wallet: Wallet) {
if (!wallet.recentTransactions.isNullOrEmpty() && !store.state.walletState.updatingWallet) {
if (!wallet.recentTransactions.toPendingTransactions(wallet.address).isNullOrEmpty()) {
store.dispatch(WalletAction.UpdateWallet.ScheduleUpdatingWallet)
scope.launch(Dispatchers.IO) {
delay(10000)
delay(5000)
withContext(Dispatchers.Main) {
store.dispatch(WalletAction.UpdateWallet)
}

View file

@ -111,7 +111,12 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
)
)
is WalletAction.UpdateWallet -> newState = newState.copy(updatingWallet = true)
is WalletAction.UpdateWallet.Success -> newState = onWalletLoaded(action.wallet, newState)
is WalletAction.UpdateWallet.ScheduleUpdatingWallet ->
newState = newState.copy(updatingWallet = true)
is WalletAction.UpdateWallet.Success -> {
newState = onWalletLoaded(action.wallet, newState)
newState = newState.copy(updatingWallet = newState.pendingTransactions.isNotEmpty())
}
is WalletAction.UpdateWallet.Failure -> newState = newState.copy(updatingWallet = false)
is WalletAction.LoadFiatRate -> {
newState.copy(currencyData = newState.currencyData.copy(
@ -237,7 +242,6 @@ private fun onWalletLoaded(wallet: Wallet, walletState: WalletState): WalletStat
fiatAmount = fiatAmount
),
pendingTransactions = pendingTransactions,
updatingWallet = false,
mainButton = WalletMainButton.SendButton(sendButtonEnabled)
)
}

View file

@ -27,7 +27,7 @@
android:id="@+id/iv_pending_transaction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:layout_marginEnd="8dp"
android:src="@drawable/ic_arrow_left" />
<TextView