diff --git a/.idea/misc.xml b/.idea/misc.xml index c0f68eddd7..7bfef59df1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,30 +1,5 @@ - - - - diff --git a/app/src/main/java/com/tangem/domain/wallet/BalanceValidator.java b/app/src/main/java/com/tangem/domain/wallet/BalanceValidator.java index e8d6e77a76..5a5c01e28c 100644 --- a/app/src/main/java/com/tangem/domain/wallet/BalanceValidator.java +++ b/app/src/main/java/com/tangem/domain/wallet/BalanceValidator.java @@ -1,5 +1,7 @@ package com.tangem.domain.wallet; +import com.tangem.wallet.R; + public class BalanceValidator { private String firstLine; private String secondLine; @@ -17,36 +19,39 @@ public class BalanceValidator { return score + "% safe. " + secondLine; } } + public int GetColor() { + if (score>89) { return R.color.msg_okay;} + else if (score>74) { return android.R.color.holo_orange_light;} + else if (score>0) { return android.R.color.holo_orange_dark;} + else { return android.R.color.holo_red_light;} + } public void Check(TangemCard card) { - String defaultFirstLine = "Unknown balance"; - String successFirstLine = "Verified balance"; - - firstLine = successFirstLine; + firstLine = "Verification failed"; secondLine = ""; // rule 1 if(!CheckOfflineBalance(card) && !CheckOnlineBalance(card)) { score = 0; - secondLine = "Balance cannot be verified."; - firstLine = defaultFirstLine; + firstLine = "Unknown balance"; + secondLine = "Balance cannot be verified. Swipe down to refresh."; return; } // rule 2.a if(!VerificationWalletKey(card)) { score = 0; - secondLine = "Wallet verification failed."; - firstLine = defaultFirstLine; + firstLine = "Verification failed"; + secondLine = "Wallet verification failed. Tap again."; return; } // rule 2.c - if(!CheckAttestationServiceResult(card)) { + if(!CheckAttestationServiceResult(card) && CheckAttestationServiceAvailable(card)) { score = 0; - secondLine = "Do not accept. Tangem Attestation service says card is not genuine. "; - firstLine = successFirstLine; + firstLine = "Not genuine banknote"; + secondLine = "Tangem Attestation service says the banknote is not genuine."; return; } @@ -56,17 +61,20 @@ public class BalanceValidator { if(card.isBalanceRecieved() && card.isBalanceEqual()) { score = 100; firstLine = "Verified balance"; - secondLine += " Confirmed balance and banknote identity. "; + secondLine += "Confirmed balance and banknote identity. "; + if(card.getBalance() == 0) { + firstLine = "Zero balance"; + } } if(card.getFailedBalanceRequestCounter()!=0) { - score = 100 - 5 * card.getFailedBalanceRequestCounter(); - firstLine = "Verified balance"; - secondLine += "Not all nodes have returned balance. Swipe down to refresh. "; + score -= 5 * card.getFailedBalanceRequestCounter(); + secondLine += "Not all nodes have returned balance. Swipe down or tap again. "; if(score <= 0) return; } -// + + // // if(card.isBalanceRecieved() && !card.isBalanceEqual()) { // score = 0; // firstLine = "Disputed balance"; @@ -78,9 +86,9 @@ public class BalanceValidator { // rule 7 if(CheckOfflineBalance(card) && !CheckOnlineBalance(card)) { - score -= 10; - String firstLine = "Verified offline balance"; - secondLine += "Restore internet connection to be more confidient. "; + score = 90; + firstLine = "Verified offline balance"; + secondLine += "Restore internet connection to be more confident. "; if(score <= 0) return; } @@ -90,7 +98,6 @@ public class BalanceValidator { { score -= 15; secondLine += "Card identity was not verified. Cannot reach attestation service. "; - firstLine = successFirstLine; if(score <= 0) return; } @@ -99,7 +106,7 @@ public class BalanceValidator { if(IsLostSecondRead(card)) { score -= 30; - secondLine += "Wallet and banknote keys were not verified (tap again). "; + secondLine += "Wallet and banknote keys were not verified. Tap again. "; if(score <= 0) return; } @@ -108,8 +115,8 @@ public class BalanceValidator { if(!CheckSignHashes(card)) { score -= 50; - secondLine = "Unguaranteed balance"; - firstLine += "Potential unsent transaction at the moment. Try to tap and check this banknote later. "; + firstLine = "Unguaranteed balance"; + secondLine += "Potential unsent transaction at the moment. Try to tap and check this banknote later. "; if(score <= 0) return; } diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.java b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.java index f99f4ca621..b19f5b80fd 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.java +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.java @@ -100,7 +100,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre private Timer timerHideErrorAndMessage = null; private String newPIN = "", newPIN2 = ""; private CardProtocol mCardProtocol; - private int scanTimes = 0; +// private int scanTimes = 0; OnlineVerifyTask onlineVerifyTask; public LoadedWallet() { @@ -254,7 +254,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre if (mCardProtocol != null) openVerifyCard(mCardProtocol); else { - scanTimes++; +// scanTimes++; Toast.makeText(getContext(), R.string.need_attach_card_again, Toast.LENGTH_LONG).show(); } }); @@ -508,8 +508,13 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain()); + if ( (mCard.isOnlineVerified()==null || !mCard.isOnlineVerified()) && onlineVerifyTask ==null) { + onlineVerifyTask = new OnlineVerifyTask(); +// updateTasks.add(onlineVerifyTask); + onlineVerifyTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, VerificationServerProtocol.Verify.prepare(mCard)); + } + if (mCard.getBlockchain() == Blockchain.Bitcoin || mCard.getBlockchain() == Blockchain.BitcoinTestNet) { - mCard.resetFailedBalanceRequestCounter(); SharedData data = new SharedData(SharedData.COUNT_REQUEST); mCard.resetFailedBalanceRequestCounter(); mCard.setIsBalanceEqual(true); @@ -634,11 +639,12 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre mCardProtocol = cardProtocol; // Log.i(TAG, "scanTimes " + scanTimes); - if (scanTimes > 0) - openVerifyCard(mCardProtocol); +// if (scanTimes > 0) +// openVerifyCard(mCardProtocol); - scanTimes++; +// scanTimes++; + onRefresh(); //addCard(cardProtocol.getCard()); }); @@ -744,6 +750,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre validator.Check(mCard); tvBalanceLine1.setText(validator.GetFirstLine()); tvBalanceLine2.setText(validator.GetSecondLine()); + tvBalanceLine1.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()),validator.GetColor())); } if (engine.HasBalanceInfo(mCard) || mCard.getOfflineBalance() == null) { diff --git a/app/src/main/res/drawable/card_btc_hk_s.png b/app/src/main/res/drawable/card_btc_hk_s.png index fb5c712622..6f84e90961 100644 Binary files a/app/src/main/res/drawable/card_btc_hk_s.png and b/app/src/main/res/drawable/card_btc_hk_s.png differ diff --git a/app/src/main/res/layout/fr_loaded_wallet.xml b/app/src/main/res/layout/fr_loaded_wallet.xml index 9addfa601e..29baa42c29 100644 --- a/app/src/main/res/layout/fr_loaded_wallet.xml +++ b/app/src/main/res/layout/fr_loaded_wallet.xml @@ -142,7 +142,7 @@ android:layout_marginTop="5dp" android:fontFamily="@font/montserrat_light" android:textAlignment="center" - android:textColor="@color/msg_okay" + android:textColor="@android:color/holo_orange_dark" android:textSize="18sp" />