diff --git a/app/src/main/java/com/tangem/data/nfc/ReadCardInfoTask.java b/app/src/main/java/com/tangem/data/nfc/ReadCardInfoTask.java
index 34819b715f..ce7e62dbac 100644
--- a/app/src/main/java/com/tangem/data/nfc/ReadCardInfoTask.java
+++ b/app/src/main/java/com/tangem/data/nfc/ReadCardInfoTask.java
@@ -79,7 +79,7 @@ public class ReadCardInfoTask extends Thread {
if (protocol.haveReadResult()) {
//already have read result (obtained while get supported encryption), only read issuer data and define offline balance
protocol.parseReadResult();
- protocol.run_ReadOrWriteIssuerDataAndDefineOfflineBalance();
+ protocol.run_ReadWriteIssuerData();
mNotifications.OnReadProgress(protocol, 60);
PINStorage.setLastUsedPIN(protocol.getCard().getPIN());
} else {
diff --git a/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java b/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java
index dae5d50b8e..ccfd198590 100644
--- a/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java
+++ b/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java
@@ -423,7 +423,7 @@ public class CardProtocol {
parseReadResult();
- run_ReadOrWriteIssuerDataAndDefineOfflineBalance();
+ run_ReadWriteIssuerData();
} else if (rspApdu.isStatus(SW_PIN_ERROR)) {
throw new TangemException_InvalidPIN(String.format("FAILED: [%04X] - Possible PIN is invalid!\n", rspApdu.getSW1SW2()));
@@ -432,7 +432,7 @@ public class CardProtocol {
}
}
- public void run_ReadOrWriteIssuerDataAndDefineOfflineBalance() throws Exception {
+ public void run_ReadWriteIssuerData() throws Exception {
TLVList tlvIssuerData;
if (mCard.getNeedWriteIssuerData()) {
run_WriteIssuerData(mCard.getIssuerData(), mCard.getIssuerDataSignature());
@@ -450,16 +450,24 @@ public class CardProtocol {
tlvIssuerData = null;
}
}
+
+ // try read offline balance data
if (mCard.getStatus() == TangemCard.Status.Loaded) {
- // try read offline balance data
- if (tlvIssuerData != null && tlvIssuerData.getTLV(TLV.Tag.TAG_Denomination) != null && mCard.getMaxSignatures() == mCard.getRemainingSignatures()) {
- mCard.setOfflineBalance(tlvIssuerData.getTLV(TLV.Tag.TAG_Denomination).Value);
+ if (tlvIssuerData != null && tlvIssuerData.getTLV(TLV.Tag.TAG_ValidatedBalance) != null && mCard.getMaxSignatures() == mCard.getRemainingSignatures()) {
+ mCard.setOfflineBalance(tlvIssuerData.getTLV(TLV.Tag.TAG_ValidatedBalance).Value);
} else {
mCard.clearOfflineBalance();
}
} else {
mCard.clearOfflineBalance();
}
+
+ // try read denomination
+ if (tlvIssuerData != null && tlvIssuerData.getTLV(TLV.Tag.TAG_Denomination) != null) {
+ mCard.setDenomination(tlvIssuerData.getTLV(TLV.Tag.TAG_Denomination).Value);
+ } else {
+ mCard.clearDenomination();
+ }
}
private TLVList readResult = null;
diff --git a/app/src/main/java/com/tangem/domain/cardReader/TLV.java b/app/src/main/java/com/tangem/domain/cardReader/TLV.java
index 33326d36c8..57a1cc68ca 100644
--- a/app/src/main/java/com/tangem/domain/cardReader/TLV.java
+++ b/app/src/main/java/com/tangem/domain/cardReader/TLV.java
@@ -88,7 +88,7 @@ public class TLV {
TAG_Token_Symbol(0xA0),
TAG_Token_Contract_Address(0xA1),
TAG_Token_Decimal(0xA2),
- TAG_Denomination(/*0xC0*/0xee), //TODO: quick fix
+ TAG_Denomination(0xC0),
TAG_ValidatedBalance(0xC1),
TAG_LastSign_Date(0xC2);
diff --git a/app/src/main/java/com/tangem/domain/wallet/Blockchain.java b/app/src/main/java/com/tangem/domain/wallet/Blockchain.java
index 34ba4cda21..a346758372 100644
--- a/app/src/main/java/com/tangem/domain/wallet/Blockchain.java
+++ b/app/src/main/java/com/tangem/domain/wallet/Blockchain.java
@@ -12,7 +12,7 @@ public enum Blockchain {
BitcoinTestNet("BTC/test", "BTC", 100000000.0, R.drawable.ic_logo_bitcoin_testnet, "Bitcoin Testnet"),
Ethereum("ETH", "ETH", 1.0, R.drawable.ic_logo_ethereum, "Ethereum"),
EthereumTestNet("ETH/test", "ETH", 1.0, R.drawable.ic_logo_ethereum_testnet, "Ethereum Testnet"),
- Token("ETH\\XTZ", "BAT", 1.0, R.drawable.ic_logo_bat_token, "Ethereum"),
+ Token("Token", "ERC20", 1.0, R.drawable.ic_logo_bat_token, "Ethereum"),
BitcoinCash("BCH", "BCH", 100000000.0, R.drawable.ic_logo_bitcoin_cash, "Bitcoin Cash"),
BitcoinCashTestNet("BCH/test", "BTC", 100000000.0, R.drawable.ic_logo_bitcoin_cash, "Bitcoin Cash Testnet");
@@ -89,7 +89,7 @@ public enum Blockchain {
case "BTC":
return R.drawable.ic_logo_bitcoin;
- case "ETH\\XTZ":
+ case "Token":
if (symbolName.equals("SEED"))
return R.drawable.ic_logo_seed;
else
diff --git a/app/src/main/java/com/tangem/domain/wallet/EthEngine.java b/app/src/main/java/com/tangem/domain/wallet/EthEngine.java
index be2bdd884f..08e8c62007 100644
--- a/app/src/main/java/com/tangem/domain/wallet/EthEngine.java
+++ b/app/src/main/java/com/tangem/domain/wallet/EthEngine.java
@@ -104,7 +104,7 @@ public class EthEngine extends CoinEngine {
BigDecimal d = convertToEth(dec);
String s = d.toString();
- String pattern = "#0.000"; // If you like 4 zeros
+ String pattern = "#0.000###############"; // If you like 4 zeros
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(d);
return output;
diff --git a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java
index 06bcefe213..68e0657d1d 100644
--- a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java
+++ b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java
@@ -11,6 +11,7 @@ import com.tangem.wallet.R;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -1365,16 +1366,36 @@ public class TangemCard {
countConfirmTX = new BigInteger(B.getString("confirmTx"), 16);
}
+ private final static char[] hexArray = "0123456789ABCDEF".toCharArray();
+ public static String bytesToHex(byte[] bytes) {
+ if (bytes == null) return "";
+ char[] hexChars = new char[bytes.length * 2];
+ for ( int j = 0; j < bytes.length; j++ ) {
+ int v = bytes[j] & 0xFF;
+ hexChars[j * 2] = hexArray[v >>> 4];
+ hexChars[j * 2 + 1] = hexArray[v & 0x0F];
+ }
+ return new String(hexChars);
+ }
+
public int getCardImageResource() {
switch (getBlockchainID()) {
case "BTC":
- return R.drawable.card_btc001;
+ if ( bytesToHex(getDenomination()).equals("40420F0000000000") )
+ return R.drawable.card_btc001;
+ else if (bytesToHex(getDenomination()).equals("404B4C0000000000") )
+ return R.drawable.card_btc005;
+ else
+ return R.drawable.card_default;
- case "ETH\\XTZ":
- return R.drawable.card_seed;
+ case "Token":
+ if (getTokenSymbol().equals("SEED"))
+ return R.drawable.card_seed;
+ else
+ return R.drawable.card_default;
default:
- return R.drawable.card_btc001;
+ return R.drawable.card_default;
}
}
diff --git a/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java b/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java
index 3f97c59e34..a91ccf3a18 100644
--- a/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java
+++ b/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java
@@ -107,7 +107,7 @@ public class TokenEngine extends CoinEngine {
BigDecimal d = convertToEth(dec);
String s = d.toString();
- String pattern = "#0.000"; // If you like 4 zeros
+ String pattern = "#0.000###############"; // If you like 4 zeros
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(d);
return output;
@@ -134,7 +134,7 @@ public class TokenEngine extends CoinEngine {
p = p.pow(GetTokenDecimals(mCard));
BigDecimal l = d.divide(p);
- String pattern = "#0.000"; // If you like 4 zeros
+ String pattern = "#0.000###############"; // If you like 4 zeros
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(l);
return output;
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 0b2b4054f2..16de34af85 100644
--- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.java
+++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.java
@@ -1042,7 +1042,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
public void OnReadStart(CardProtocol cardProtocol) {
progressBar.post(() -> {
rlProgressBar.setVisibility(View.VISIBLE);
- progressBar.setVisibility(View.VISIBLE);
+ //progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(5);
});
}
diff --git a/app/src/main/java/com/tangem/presentation/fragment/Main.java b/app/src/main/java/com/tangem/presentation/fragment/Main.java
index ffd7be13cf..125f0a42b1 100644
--- a/app/src/main/java/com/tangem/presentation/fragment/Main.java
+++ b/app/src/main/java/com/tangem/presentation/fragment/Main.java
@@ -576,7 +576,7 @@ public class Main extends Fragment implements NfcAdapter.ReaderCallback, CardLis
public void OnReadStart(CardProtocol cardProtocol) {
progressBar.post(() -> {
rlProgressBar.setVisibility(View.VISIBLE);
- progressBar.setVisibility(View.VISIBLE);
+ //progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(5);
});
}
diff --git a/app/src/main/res/drawable/card_btc001.png b/app/src/main/res/drawable/card_btc001.png
index 9321aa9022..5160ddf07f 100644
Binary files a/app/src/main/res/drawable/card_btc001.png and b/app/src/main/res/drawable/card_btc001.png differ
diff --git a/app/src/main/res/drawable/card_btc005.png b/app/src/main/res/drawable/card_btc005.png
index e31f33de45..e123218648 100644
Binary files a/app/src/main/res/drawable/card_btc005.png and b/app/src/main/res/drawable/card_btc005.png differ
diff --git a/app/src/main/res/drawable/card_seed.png b/app/src/main/res/drawable/card_seed.png
index a2409fe877..f7e62aa506 100644
Binary files a/app/src/main/res/drawable/card_seed.png and b/app/src/main/res/drawable/card_seed.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 5c31676193..a868622a7c 100644
--- a/app/src/main/res/layout/fr_loaded_wallet.xml
+++ b/app/src/main/res/layout/fr_loaded_wallet.xml
@@ -49,12 +49,53 @@
android:textSize="@dimen/text_size_1_small"
android:visibility="gone"/>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+ android:textAlignment="center"
+ android:textColor="@color/msg_okay"
+ android:textSize="18sp"
+ tools:text="Verified balance" />
+ android:text="100% safe\nConfirmed balance and banknote identity"
+ android:textAlignment="center" />
@@ -191,15 +256,6 @@
android:text="@string/blockchain"
android:textColor="@color/primary_dark"/>
-
-
@@ -354,32 +410,6 @@
-
-
-
-
-
-
-
-
@@ -425,6 +455,7 @@
android:id="@+id/rlToolButtons"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginBottom="5dp"
android:gravity="center"
app:layout_constraintBottom_toTopOf="@+id/rlCardIdAndIcons"
app:layout_constraintHorizontal_bias="0.0"
@@ -436,7 +467,8 @@
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="wrap_content"
android:layout_margin="10dp"
- android:text="@string/load"/>
+ android:elevation="15dp"
+ android:text="@string/load" />
+ app:srcCompat="@drawable/ic_information_variant_white_24dp" />
+ app:srcCompat="@drawable/ic_nfc_white_24dp" />
+ android:text="@string/extract" />
@@ -540,6 +572,7 @@
+ android:visibility="gone"
+ tools:layout_editor_absoluteY="495dp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fr_main.xml b/app/src/main/res/layout/fr_main.xml
index 7cb2a8f24e..da8b383452 100644
--- a/app/src/main/res/layout/fr_main.xml
+++ b/app/src/main/res/layout/fr_main.xml
@@ -15,19 +15,19 @@
android:visibility="gone">
+ android:alpha="0.8"
+ android:text="@string/reading"
+ android:textColor="@color/colorPrimary"
+ android:textStyle="bold" />
+ android:alpha="0.8"
+ android:elevation="1dp" />
diff --git a/app/src/main/res/layout/layout_progress_horizontal.xml b/app/src/main/res/layout/layout_progress_horizontal.xml
index 33a82d00f4..c0f0850604 100644
--- a/app/src/main/res/layout/layout_progress_horizontal.xml
+++ b/app/src/main/res/layout/layout_progress_horizontal.xml
@@ -1,7 +1,6 @@
-
\ No newline at end of file
+ tools:showIn="@layout/activity_swap_pin" />
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 984c815663..3ea08659cd 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,7 +1,7 @@
- #027AFF
+ #027aff
#027AFF
#027AFF
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d17a801df9..7598d2ed11 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -45,7 +45,7 @@
Scan again to verify the card
Smart Cash AG
Wallet
- Need attach card again
+ Scan again to verify the card
READING…
VERIFYING…