Updated on 2026-08-14
This commit is contained in:
parent
092eb2dd68
commit
250ceba99f
78 changed files with 229 additions and 247 deletions
115
app/src/main/java/com/tangem/wallet/BalanceValidator.java
Normal file
115
app/src/main/java/com/tangem/wallet/BalanceValidator.java
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
package com.tangem.wallet;
|
||||
|
||||
import com.tangem.App;
|
||||
import com.tangem.card_common.data.TangemCard;
|
||||
|
||||
public class BalanceValidator {
|
||||
private String firstLine;
|
||||
private String secondLine;
|
||||
private int score;
|
||||
private boolean hasPending;
|
||||
|
||||
public String getFirstLine() {
|
||||
return firstLine;
|
||||
}
|
||||
|
||||
public void setFirstLine(String value) {
|
||||
firstLine = value;
|
||||
}
|
||||
|
||||
public String getSecondLine(Boolean recommend) {
|
||||
if (!recommend) return secondLine;
|
||||
if (score > 89) {
|
||||
return "Safe to accept. " + secondLine;
|
||||
} else if (score > 74) {
|
||||
return "Not fully safe to accept. " + secondLine;
|
||||
} else if (score > 30) {
|
||||
return "Not safe to accept. " + secondLine;
|
||||
} else {
|
||||
return "Do not accept! " + secondLine;
|
||||
}
|
||||
}
|
||||
|
||||
public void setSecondLine(String value) {
|
||||
secondLine = value;
|
||||
}
|
||||
|
||||
public void setScore(int score) {
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public int getColor() {
|
||||
if( hasPending )
|
||||
{
|
||||
return R.color.primary_dark;
|
||||
}
|
||||
if (score > 89) {
|
||||
return R.color.confirmed;
|
||||
} 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(TangemContext ctx, Boolean attest) {
|
||||
firstLine = "Verification failed";
|
||||
secondLine = "";
|
||||
TangemCard card = ctx.getCard();
|
||||
CoinEngine engine = CoinEngineFactory.INSTANCE.create(ctx);
|
||||
|
||||
if (!engine.validateBalance(this)) return;
|
||||
|
||||
hasPending=App.pendingTransactionsStorage.hasTransactions(card);
|
||||
|
||||
if( hasPending )
|
||||
{
|
||||
firstLine = "Pending transaction...";
|
||||
secondLine = "Swipe down to refresh";
|
||||
return;
|
||||
}
|
||||
|
||||
// Verify card?
|
||||
if (attest) {
|
||||
|
||||
if (!card.isWalletPublicKeyValid()) {
|
||||
score = 0;
|
||||
firstLine = "Verification failed";
|
||||
secondLine = "Wallet verification failed. Tap again.";
|
||||
return;
|
||||
}
|
||||
|
||||
if (card.isOnlineVerified() != null && !card.isOnlineVerified()) {
|
||||
score = 0;
|
||||
firstLine = "Not genuine banknote";
|
||||
secondLine = "Tangem Attestation service says the banknote is not genuine.";
|
||||
return;
|
||||
}
|
||||
|
||||
if (card.isCodeConfirmed() != null && !card.isCodeConfirmed()) {
|
||||
score = 0;
|
||||
firstLine = "Not genuine banknote";
|
||||
secondLine = "Firmware binary code verification failed";
|
||||
return;
|
||||
}
|
||||
|
||||
if (card.PIN2 == TangemCard.PIN2_Mode.CustomPIN2) {
|
||||
score = 0;
|
||||
firstLine = "Locked with PIN2";
|
||||
secondLine = "Ask the holder to disable PIN2 before accepting";
|
||||
return;
|
||||
}
|
||||
|
||||
// rule 2.b
|
||||
if (card.isOnlineVerified()) {
|
||||
secondLine += "Verified note identity. ";
|
||||
} else {
|
||||
score = 80;
|
||||
secondLine += "Card identity was not verified. Cannot reach Tangem attestation service. ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue