Updated on 2026-08-14

This commit is contained in:
Tangem 2018-08-08 17:33:08 +03:00
parent 57a20d3cfc
commit 56fc4cad76
27 changed files with 470 additions and 478 deletions

View file

@ -8,7 +8,8 @@ import java.util.ArrayList;
import java.util.List;
public class VerificationServerTask extends AsyncTask<VerificationServerProtocol.Request, Void, List<VerificationServerProtocol.Request>> {
public static final String hostURL = "https://tangem-webapp.appspot.com";
// public static final String hostURL = "https://tangem-webapp.appspot.com";
public static final String hostURL = "https://verify.tangem.com";
public VerificationServerTask() {

View file

@ -40,11 +40,11 @@ public class ETHRequestTask extends InfuraTask {
BigInteger d = l.divide(new BigInteger("1000000000000000000", 10));
Long balance = d.longValue();
loadedWallet.getMCard().setBalanceConfirmed(balance);
loadedWallet.getMCard().setBalanceUnconfirmed(0L);
if (loadedWallet.getMCard().getBlockchain() != Blockchain.Token)
loadedWallet.getMCard().setDecimalBalance(l.toString(10));
loadedWallet.getMCard().setDecimalBalanceAlter(l.toString(10));
loadedWallet.getCard().setBalanceConfirmed(balance);
loadedWallet.getCard().setBalanceUnconfirmed(0L);
if (loadedWallet.getCard().getBlockchain() != Blockchain.Token)
loadedWallet.getCard().setDecimalBalance(l.toString(10));
loadedWallet.getCard().setDecimalBalanceAlter(l.toString(10));
} catch (JSONException e) {
e.printStackTrace();
@ -57,16 +57,16 @@ public class ETHRequestTask extends InfuraTask {
Long balance = l.longValue();
if (l.compareTo(BigInteger.ZERO) == 0) {
loadedWallet.getMCard().setBlockchainID(Blockchain.Ethereum.getID());
loadedWallet.getMCard().addTokenToBlockchainName();
loadedWallet.getCard().setBlockchainID(Blockchain.Ethereum.getID());
loadedWallet.getCard().addTokenToBlockchainName();
loadedWallet.getSrlLoadedWallet().setRefreshing(false);
loadedWallet.refresh();
return;
}
loadedWallet.getMCard().setBalanceConfirmed(balance);
loadedWallet.getMCard().setBalanceUnconfirmed(0L);
loadedWallet.getMCard().setDecimalBalance(l.toString(10));
loadedWallet.getCard().setBalanceConfirmed(balance);
loadedWallet.getCard().setBalanceUnconfirmed(0L);
loadedWallet.getCard().setDecimalBalance(l.toString(10));
} catch (JSONException e) {
e.printStackTrace();
@ -77,7 +77,7 @@ public class ETHRequestTask extends InfuraTask {
nonce = nonce.substring(2);
BigInteger count = new BigInteger(nonce, 16);
loadedWallet.getMCard().SetConfirmTXCount(count);
loadedWallet.getCard().SetConfirmTXCount(count);
} catch (JSONException e) {
e.printStackTrace();
}
@ -92,7 +92,7 @@ public class ETHRequestTask extends InfuraTask {
JSONObject msg = request.getAnswer();
JSONObject err = msg.getJSONObject("error");
hashTX = err.getString("message");
LastSignStorage.setLastMessage(loadedWallet.getMCard().getWallet(), hashTX);
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), hashTX);
return;
}
@ -100,14 +100,14 @@ public class ETHRequestTask extends InfuraTask {
hashTX = hashTX.substring(2);
}
BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ
LastSignStorage.setTxWasSend(loadedWallet.getMCard().getWallet());
LastSignStorage.setLastMessage(loadedWallet.getMCard().getWallet(), "");
LastSignStorage.setTxWasSend(loadedWallet.getCard().getWallet());
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), "");
Log.e("TX_RESULT", hashTX);
BigInteger nonce = loadedWallet.getMCard().GetConfirmTXCount();
BigInteger nonce = loadedWallet.getCard().GetConfirmTXCount();
nonce.add(BigInteger.valueOf(1));
loadedWallet.getMCard().SetConfirmTXCount(nonce);
loadedWallet.getCard().SetConfirmTXCount(nonce);
Log.e("TX_RESULT", hashTX);
} catch (Exception e) {

View file

@ -39,7 +39,7 @@ public class RateInfoTask extends ExchangeTask {
String usd = obj.getString("price_usd");
Float rate = Float.valueOf(usd);
loadedWallet.getMCard().setRate(rate);
loadedWallet.getCard().setRate(rate);
loadedWallet.updateViews();
stop = true;
}
@ -48,7 +48,7 @@ public class RateInfoTask extends ExchangeTask {
String usd = obj.getString("price_usd");
Float rate = Float.valueOf(usd);
loadedWallet.getMCard().setRateAlter(rate);
loadedWallet.getCard().setRateAlter(rate);
loadedWallet.updateViews();
stopAlter = true;
}

View file

@ -59,8 +59,8 @@ public class UpdateWalletInfoTask extends ElectrumTask {
// loadedWallet.updateTasks.remove(this);
try {
CoinEngine engine = CoinEngineFactory.Create(
loadedWallet.getMCard().getBlockchain());
CoinEngine engine = CoinEngineFactory.create(
loadedWallet.getCard().getBlockchain());
for (ElectrumRequest request : requests) {
try {
@ -70,12 +70,12 @@ public class UpdateWalletInfoTask extends ElectrumTask {
String mWalletAddress = request.getParams().getString(0);
Long confBalance = request.getResult().getLong("confirmed");
Long unconf = request.getResult().getLong("unconfirmed");
loadedWallet.getMCard().setBalanceRecieved(true);
loadedWallet.getCard().setBalanceReceived(true);
if (sharedCounter != null) {
boolean notEqualBalance = sharedCounter.UpdatePayload(new BigDecimal(String.valueOf(confBalance)));
if (notEqualBalance)
loadedWallet.getMCard().setIsBalanceEqual(false);
loadedWallet.getCard().setIsBalanceEqual(false);
int counter = sharedCounter.requestCounter.incrementAndGet();
if (counter != 1) {
continue;
@ -83,22 +83,22 @@ public class UpdateWalletInfoTask extends ElectrumTask {
}
loadedWallet.getMCard().setBalanceConfirmed(confBalance);
loadedWallet.getMCard().setBalanceUnconfirmed(unconf);
loadedWallet.getMCard().setDecimalBalance(String.valueOf(confBalance));
loadedWallet.getCard().setBalanceConfirmed(confBalance);
loadedWallet.getCard().setBalanceUnconfirmed(unconf);
loadedWallet.getCard().setDecimalBalance(String.valueOf(confBalance));
loadedWallet.getMCard().setValidationNodeDescription(getValidationNodeDescription());
loadedWallet.getCard().setValidationNodeDescription(getValidationNodeDescription());
} catch (JSONException e) {
if (sharedCounter != null) {
int errCounter = sharedCounter.errorRequest.incrementAndGet();
loadedWallet.getMCard().incFailedBalanceRequestCounter();
loadedWallet.getCard().incFailedBalanceRequestCounter();
if (errCounter >= sharedCounter.allRequest) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
} else {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
}
} else if (request.isMethod(ElectrumRequest.METHOD_SendTransaction)) {
@ -106,22 +106,22 @@ public class UpdateWalletInfoTask extends ElectrumTask {
String hashTX = request.getResultString();
try {
LastSignStorage.setLastMessage(loadedWallet.getMCard().getWallet(), hashTX);
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), hashTX);
if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) {
hashTX = hashTX.substring(2);
}
BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ
LastSignStorage.setTxWasSend(loadedWallet.getMCard().getWallet());
LastSignStorage.setLastMessage(loadedWallet.getMCard().getWallet(), "");
LastSignStorage.setTxWasSend(loadedWallet.getCard().getWallet());
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), "");
// Log.e("TX_RESULT", hashTX);
} catch (Exception e) {
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
} else if (request.isMethod(ElectrumRequest.METHOD_ListUnspent)) {
try {
@ -129,18 +129,18 @@ public class UpdateWalletInfoTask extends ElectrumTask {
JSONArray jsUnspentArray = request.getResultArray();
try {
loadedWallet.getMCard().getUnspentTransactions().clear();
loadedWallet.getCard().getUnspentTransactions().clear();
for (int i = 0; i < jsUnspentArray.length(); i++) {
JSONObject jsUnspent = jsUnspentArray.getJSONObject(i);
TangemCard.UnspentTransaction trUnspent = new TangemCard.UnspentTransaction();
trUnspent.txID = jsUnspent.getString("tx_hash");
trUnspent.Amount = jsUnspent.getInt("value");
trUnspent.Height = jsUnspent.getInt("height");
loadedWallet.getMCard().getUnspentTransactions().add(trUnspent);
loadedWallet.getCard().getUnspentTransactions().add(trUnspent);
}
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
for (int i = 0; i < jsUnspentArray.length(); i++) {
@ -148,8 +148,8 @@ public class UpdateWalletInfoTask extends ElectrumTask {
Integer height = jsUnspent.getInt("height");
String hash = jsUnspent.getString("tx_hash");
if (height != -1) {
String nodeAddress = engine.GetNextNode(loadedWallet.getMCard());
int nodePort = engine.GetNextNodePort(loadedWallet.getMCard());
String nodeAddress = engine.getNextNode(loadedWallet.getCard());
int nodePort = engine.getNextNodePort(loadedWallet.getCard());
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(loadedWallet, nodeAddress, nodePort);
// loadedWallet.updateTasks.add(updateWalletInfoTask);
@ -160,7 +160,7 @@ public class UpdateWalletInfoTask extends ElectrumTask {
}
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
} else if (request.isMethod(ElectrumRequest.METHOD_GetHistory)) {
try {
@ -168,17 +168,17 @@ public class UpdateWalletInfoTask extends ElectrumTask {
JSONArray jsHistoryArray = request.getResultArray();
try {
loadedWallet.getMCard().getHistoryTransactions().clear();
loadedWallet.getCard().getHistoryTransactions().clear();
for (int i = 0; i < jsHistoryArray.length(); i++) {
JSONObject jsUnspent = jsHistoryArray.getJSONObject(i);
TangemCard.HistoryTransaction trHistory = new TangemCard.HistoryTransaction();
trHistory.txID = jsUnspent.getString("tx_hash");
trHistory.Height = jsUnspent.getInt("height");
loadedWallet.getMCard().getHistoryTransactions().add(trHistory);
loadedWallet.getCard().getHistoryTransactions().add(trHistory);
}
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
for (int i = 0; i < jsHistoryArray.length(); i++) {
@ -187,8 +187,8 @@ public class UpdateWalletInfoTask extends ElectrumTask {
String hash = jsUnspent.getString("tx_hash");
if (height != -1) {
String nodeAddress = engine.GetNode(loadedWallet.getMCard());
int nodePort = engine.GetNodePort(loadedWallet.getMCard());
String nodeAddress = engine.getNode(loadedWallet.getCard());
int nodePort = engine.getNodePort(loadedWallet.getCard());
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(loadedWallet, nodeAddress, nodePort);
// loadedWallet.updateTasks.add(updateWalletInfoTask);
@ -199,25 +199,25 @@ public class UpdateWalletInfoTask extends ElectrumTask {
}
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
} else if (request.isMethod(ElectrumRequest.METHOD_GetHeader)) {
try {
JSONObject jsHeader = request.getResult();
try {
loadedWallet.getMCard().getHaedersInfo();
loadedWallet.getMCard().UpdateHeaderInfo(new TangemCard.HeaderInfo(
loadedWallet.getCard().getHaedersInfo();
loadedWallet.getCard().UpdateHeaderInfo(new TangemCard.HeaderInfo(
jsHeader.getInt("block_height"),
jsHeader.getInt("timestamp")));
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
} else if (request.isMethod(ElectrumRequest.METHOD_GetTransaction)) {
@ -226,14 +226,14 @@ public class UpdateWalletInfoTask extends ElectrumTask {
String txHash = request.TxHash;
String raw = request.getResultString();
List<TangemCard.UnspentTransaction> listTx = loadedWallet.getMCard().getUnspentTransactions();
List<TangemCard.UnspentTransaction> listTx = loadedWallet.getCard().getUnspentTransactions();
for (TangemCard.UnspentTransaction tx : listTx) {
if (tx.txID.equals(txHash)) {
tx.Raw = raw;
}
}
List<TangemCard.HistoryTransaction> listHTx = loadedWallet.getMCard().getHistoryTransactions();
List<TangemCard.HistoryTransaction> listHTx = loadedWallet.getCard().getHistoryTransactions();
for (TangemCard.HistoryTransaction tx : listHTx) {
if (tx.txID.equals(txHash)) {
tx.Raw = raw;
@ -260,28 +260,26 @@ public class UpdateWalletInfoTask extends ElectrumTask {
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
}
loadedWallet.updateViews();
} else {
if (sharedCounter != null) {
int errCounter = sharedCounter.errorRequest.incrementAndGet();
loadedWallet.getMCard().incFailedBalanceRequestCounter();
loadedWallet.getCard().incFailedBalanceRequestCounter();
if (errCounter >= sharedCounter.allRequest) {
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
} else {
engine.SwitchNode(loadedWallet.getMCard());
engine.switchNode(loadedWallet.getCard());
}
}
} catch (JSONException e) {
if (sharedCounter != null) {
int errCounter = sharedCounter.errorRequest.incrementAndGet();
loadedWallet.getMCard().incFailedBalanceRequestCounter();
loadedWallet.getCard().incFailedBalanceRequestCounter();
if (errCounter >= sharedCounter.allRequest) {
e.printStackTrace();
}
@ -300,7 +298,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
reference.get().getSrlLoadedWallet().setRefreshing(false);
}
}
}
}

View file

@ -29,16 +29,16 @@ public class ConnectTask extends ElectrumTask {
remaining_attempts--;
CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain());
CoinEngine engine = CoinEngineFactory.create(mCard.getBlockchain());
if (mCard.getBlockchain() == Blockchain.Bitcoin || mCard.getBlockchain() == Blockchain.BitcoinTestNet) {
String nodeAddress = engine.GetNode(mCard);
int nodePort = engine.GetNodePort(mCard);
String nodeAddress = engine.getNode(mCard);
int nodePort = engine.getNodePort(mCard);
ConnectTask connectTask = new ConnectTask(reference.get(), nodeAddress, nodePort, remaining_attempts);
connectTask.execute(ElectrumRequest.Broadcast(mCard.getWallet(), tx));
} else if (mCard.getBlockchain() == Blockchain.BitcoinCash || mCard.getBlockchain() == Blockchain.BitcoinCashTestNet) {
String nodeAddress = engine.GetNode(mCard);
int nodePort = engine.GetNodePort(mCard);
String nodeAddress = engine.getNode(mCard);
int nodePort = engine.getNodePort(mCard);
ConnectTask connectTask = new ConnectTask(reference.get(), nodeAddress, nodePort, remaining_attempts);
connectTask.execute(ElectrumRequest.Broadcast(mCard.getWallet(), tx));
}
@ -71,7 +71,7 @@ public class ConnectTask extends ElectrumTask {
super.onPostExecute(requests);
SendTransactionActivity sendTransactionActivity = reference.get();
CoinEngine engine = CoinEngineFactory.Create(Blockchain.Bitcoin);
CoinEngine engine = CoinEngineFactory.create(Blockchain.Bitcoin);
for (ElectrumRequest request : requests) {
try {
@ -91,26 +91,26 @@ public class ConnectTask extends ElectrumTask {
Log.e("TX_RESULT", hashTX);
sendTransactionActivity.finishWithSuccess();
} catch (Exception e) {
engine.SwitchNode(null);
engine.switchNode(null);
// sendTransactionActivity.finishWithError(hashTX);
CreateChildTask(sendTransactionActivity.getCard(), request.TX, hashTX);
}
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(null);
engine.switchNode(null);
// sendTransactionActivity.finishWithError(e.toString());
CreateChildTask(sendTransactionActivity.getCard(), request.TX, e.toString());
}
}
} else {
engine.SwitchNode(null);
engine.switchNode(null);
// sendTransactionActivity.finishWithError(request.error);
CreateChildTask(sendTransactionActivity.getCard(), request.TX, request.error);
}
} catch (JSONException e) {
e.printStackTrace();
engine.SwitchNode(null);
engine.switchNode(null);
// sendTransactionActivity.finishWithError(e.toString());
CreateChildTask(sendTransactionActivity.getCard(), request.TX, e.toString());
}

View file

@ -82,7 +82,7 @@ public class SignPaymentTask extends Thread {
// SignBTC_TX(protocol);
// }
CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain());
CoinEngine engine = CoinEngineFactory.create(mCard.getBlockchain());
if (engine != null) {
if (mCard.getPauseBeforePIN2() > 0) {
mNotifications.onReadWait(mCard.getPauseBeforePIN2());
@ -90,7 +90,7 @@ public class SignPaymentTask extends Thread {
byte[] tx;
// try {
tx = engine.Sign(txFee, txAmount, txOutAddress, mCard, protocol);
tx = engine.sign(txFee, txAmount, txOutAddress, mCard, protocol);
// }
// finally {
// mNotifications.onReadWait(0);

View file

@ -609,7 +609,7 @@ public class CardProtocol {
mCard.setWalletPublicKey(pkUncompressed);
mCard.setWalletPublicKeyRar(pkCompresses);
CoinEngine engineCoin = CoinEngineFactory.Create(mCard.getBlockchain());
CoinEngine engineCoin = CoinEngineFactory.create(mCard.getBlockchain());
String wallet = engineCoin.calculateAddress(mCard, pkUncompressed);
mCard.setWallet(wallet);
//mCard.setWallet(Blockchain.calculateWalletAddress(mCard, pkUncompressed));

View file

@ -90,7 +90,7 @@ public class BalanceValidator {
return;
}
if(card.isBalanceRecieved() && card.isBalanceEqual()) {
if(card.isBalanceReceived() && card.isBalanceEqual()) {
score = 100;
firstLine = "Verified balance";
secondLine = "Balance confirmed in blockchain. ";
@ -133,7 +133,7 @@ public class BalanceValidator {
// }
//
// if(card.isBalanceRecieved() && !card.isBalanceEqual()) {
// if(card.isBalanceReceived() && !card.isBalanceEqual()) {
// score = 0;
// firstLine = "Disputed balance";
// secondLine += " Cannot obtain trusted balance at the moment. Try to tap and check this banknote later.";
@ -150,7 +150,7 @@ public class BalanceValidator {
boolean CheckOnlineBalance(TangemCard card)
{
return card.isBalanceRecieved();
return card.isBalanceReceived();
}
boolean VerificationWalletKey(TangemCard card)

View file

@ -29,57 +29,57 @@ import static com.tangem.util.FormatUtil.GetDecimalFormat;
*/
public class BtcCashEngine extends CoinEngine {
public String GetNextNode(TangemCard mCard) {
public String getNextNode(TangemCard mCard) {
return "35.157.238.5";
}
public int GetNextNodePort(TangemCard mCard) {
public int getNextNodePort(TangemCard mCard) {
return 51001;
}
public String GetNode(TangemCard mCard) {
public String getNode(TangemCard mCard) {
return "35.157.238.5";
}
public int GetNodePort(TangemCard mCard) {
public int getNodePort(TangemCard mCard) {
return 51001;
}
public void SwitchNode(TangemCard mCard) {
public void switchNode(TangemCard mCard) {
}
public boolean InOutPutVisible() {
public boolean inOutPutVisible() {
return true;
}
public boolean AwaitingConfirmation(TangemCard card) {
public boolean awaitingConfirmation(TangemCard card) {
return card.getBalanceUnconfirmed() != 0;
}
public String GetBalanceWithAlter(TangemCard mCard) {
return GetBalance(mCard);
public String getBalanceWithAlter(TangemCard mCard) {
return getBalance(mCard);
}
public boolean IsBalanceAlterNotZero(TangemCard card) {
public boolean isBalanceAlterNotZero(TangemCard card) {
return true;
}
public Long GetBalanceLong(TangemCard mCard) {
public Long getBalanceLong(TangemCard mCard) {
return mCard.getBalance();
}
public boolean IsBalanceNotZero(TangemCard card) {
public boolean isBalanceNotZero(TangemCard card) {
return card.getBalance() > 0;
}
public boolean CheckAmount(TangemCard card, String amount) throws Exception {
public boolean checkAmount(TangemCard card, String amount) throws Exception {
DecimalFormat decimalFormat = GetDecimalFormat();
BigDecimal amountValue = (BigDecimal) decimalFormat.parse(amount);
// Convert Balance to BigDecimal
BigDecimal maxValue = new BigDecimal(GetBalanceValue(card));
BigDecimal maxValue = new BigDecimal(getBalanceValue(card));
maxValue = maxValue.divide(new BigDecimal(1000));
//if (use_mCurrency) {
@ -93,23 +93,23 @@ public class BtcCashEngine extends CoinEngine {
return true;
}
public boolean HasBalanceInfo(TangemCard card) {
public boolean hasBalanceInfo(TangemCard card) {
return card.hasBalanceInfo();
}
public String GetBalanceCurrency(TangemCard card) {
public String getBalanceCurrency(TangemCard card) {
return "mBCH";
}
public boolean CheckUnspentTransaction(TangemCard mCard) {
public boolean checkUnspentTransaction(TangemCard mCard) {
return mCard.getUnspentTransactions().size() != 0;
}
public String GetFeeCurrency() {
public String getFeeCurrency() {
return "mBCH";
}
public boolean ValdateAddress(String address, TangemCard card) {
public boolean validateAddress(String address, TangemCard card) {
if (address == null || address.isEmpty()) {
return false;
}
@ -156,27 +156,27 @@ public class BtcCashEngine extends CoinEngine {
}
public int GetTokenDecimals(TangemCard card) {
public int getTokenDecimals(TangemCard card) {
return 0;
}
public String GetContractAddress(TangemCard card) {
public String getContractAddress(TangemCard card) {
return "";
}
public boolean IsNeedCheckNode() {
public boolean isNeedCheckNode() {
return true;
}
public Uri getShareWalletURIExplorer(TangemCard mCard) {
public Uri getShareWalletUriExplorer(TangemCard mCard) {
return Uri.parse((mCard.getBlockchain() == Blockchain.BitcoinCash ? "https://bitcoincash.blockexplorer.com/address/" : "https://testnet.blockexplorer.com/address/") + mCard.getWallet());
}
public Uri getShareWalletURI(TangemCard mCard) {
public Uri getShareWalletUri(TangemCard mCard) {
return Uri.parse("bitcoincash:" + mCard.getWallet());
}
public boolean CheckAmountValie(TangemCard mCard, String amountValue, String feeValue, Long minFeeInInternalUnits) {
public boolean checkAmountValue(TangemCard mCard, String amountValue, String feeValue, Long minFeeInInternalUnits) {
Long fee = null;
Long amount = null;
try {
@ -202,12 +202,12 @@ public class BtcCashEngine extends CoinEngine {
return true;
}
public String EvaluteFeeEquivalent(TangemCard mCard, String fee) {
return GetAmountEqualentDescriptor(mCard, fee);
public String evaluateFeeEquivalent(TangemCard mCard, String fee) {
return getAmountEquivalentDescriptor(mCard, fee);
}
@Override
public String GetBalanceEquivalent(TangemCard mCard) {
public String getBalanceEquivalent(TangemCard mCard) {
Double balance = Double.NaN;
try {
Long val = mCard.getBalance();
@ -219,7 +219,7 @@ public class BtcCashEngine extends CoinEngine {
return mCard.getAmountEquivalentDescription(balance);
}
public String GetBalance(TangemCard mCard) {
public String getBalance(TangemCard mCard) {
if (mCard.hasBalanceInfo()) {
Double balance = mCard.AmountFromInternalUnits(mCard.getBalance());
return mCard.getAmountDescription(balance);
@ -228,7 +228,7 @@ public class BtcCashEngine extends CoinEngine {
}
}
public String GetBalanceValue(TangemCard mCard) {
public String getBalanceValue(TangemCard mCard) {
if (mCard.hasBalanceInfo()) {
Double balance = mCard.getBalance() / (mCard.getBlockchain().getMultiplier() / 1000.0);
@ -280,14 +280,14 @@ public class BtcCashEngine extends CoinEngine {
}
@Override
public String ConvertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception {
public String convertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception {
byte[] reversed = new byte[bytes.length];
for (int i = 0; i < bytes.length; i++) reversed[i] = bytes[bytes.length - i - 1];
return FormatUtil.DoubleToString(1000.0 * mCard.AmountFromInternalUnits(Util.byteArrayToLong(reversed)));
}
@Override
public byte[] ConvertAmountToByteArray(TangemCard mCard, String amount) throws Exception {
public byte[] convertAmountToByteArray(TangemCard mCard, String amount) throws Exception {
byte[] bytes = Util.longToByteArray(mCard.InternalUnitsFromString(amount));
byte[] reversed = new byte[bytes.length];
for (int i = 0; i < bytes.length; i++) reversed[i] = bytes[bytes.length - i - 1];
@ -295,7 +295,7 @@ public class BtcCashEngine extends CoinEngine {
}
@Override
public String GetAmountDescription(TangemCard mCard, String amount) throws Exception {
public String getAmountDescription(TangemCard mCard, String amount) throws Exception {
return mCard.getAmountDescription(Double.parseDouble(amount) / 1000.0);
}
@ -307,11 +307,11 @@ public class BtcCashEngine extends CoinEngine {
}
}
public String GetAmountEqualentDescriptor(TangemCard mCard, String value) {
public String getAmountEquivalentDescriptor(TangemCard mCard, String value) {
return getAmountEquivalentDescriptionBTC(Double.parseDouble(value) / 1000.0, mCard.getRate());
}
public byte[] Sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception {
public byte[] sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception {
String myAddress = mCard.getWallet();
byte[] pbKey = mCard.getWalletPublicKeyRar(); //ALWAYS USING COMPRESS KEY

View file

@ -18,8 +18,6 @@ import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@ -27,7 +25,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Random;
import static com.tangem.util.FormatUtil.GetDecimalFormat;
import static com.tangem.util.FormatUtil.stringToBigDecimal;
/**
@ -35,23 +32,23 @@ import static com.tangem.util.FormatUtil.stringToBigDecimal;
*/
public class BtcEngine extends CoinEngine {
public String GetNextNode(TangemCard mCard) {
public String getNextNode(TangemCard mCard) {
return getNextServiceHost(mCard);
}
public int GetNextNodePort(TangemCard mCard) {
public int getNextNodePort(TangemCard mCard) {
return getNextServicePort(mCard);
}
public String GetNode(TangemCard mCard) {
public String getNode(TangemCard mCard) {
return getServiceHost(mCard);
}
public int GetNodePort(TangemCard mCard) {
public int getNodePort(TangemCard mCard) {
return getServicePort(mCard);
}
public void SwitchNode(TangemCard mCard) {
public void switchNode(TangemCard mCard) {
SelectNextBitconServiceIndex();
}
@ -213,58 +210,58 @@ public class BtcEngine extends CoinEngine {
}
public boolean InOutPutVisible() {
public boolean inOutPutVisible() {
return true;
}
public boolean AwaitingConfirmation(TangemCard card) {
public boolean awaitingConfirmation(TangemCard card) {
return card.getBalanceUnconfirmed() != 0;
}
public String GetBalanceWithAlter(TangemCard mCard) {
return GetBalance(mCard);
public String getBalanceWithAlter(TangemCard mCard) {
return getBalance(mCard);
}
public boolean IsBalanceAlterNotZero(TangemCard card) {
public boolean isBalanceAlterNotZero(TangemCard card) {
return true;
}
public Long GetBalanceLong(TangemCard mCard) {
public Long getBalanceLong(TangemCard mCard) {
return mCard.getBalance();
}
public boolean IsBalanceNotZero(TangemCard card) {
public boolean isBalanceNotZero(TangemCard card) {
return card.getBalance() > 0;
}
public boolean CheckAmount(TangemCard card, String amount) throws Exception {
public boolean checkAmount(TangemCard card, String amount) throws Exception {
// DecimalFormat decimalFormat = GetDecimalFormat();
// BigDecimal amountValue = (BigDecimal) decimalFormat.parse(amount);
BigDecimal amountValue = stringToBigDecimal(amount,Locale.US);
BigDecimal maxValue = stringToBigDecimal(GetBalanceValue(card),Locale.US);
BigDecimal maxValue = stringToBigDecimal(getBalanceValue(card),Locale.US);
if (amountValue.compareTo(maxValue) > 0) {
return false;
}
return true;
}
public boolean HasBalanceInfo(TangemCard card) {
public boolean hasBalanceInfo(TangemCard card) {
return card.hasBalanceInfo();
}
public String GetBalanceCurrency(TangemCard card) {
public String getBalanceCurrency(TangemCard card) {
return "mBTC";
}
public boolean CheckUnspentTransaction(TangemCard mCard) {
public boolean checkUnspentTransaction(TangemCard mCard) {
return mCard.getUnspentTransactions().size() != 0;
}
public String GetFeeCurrency() {
public String getFeeCurrency() {
return "mBTC";
}
public boolean ValdateAddress(String address, TangemCard card) {
public boolean validateAddress(String address, TangemCard card) {
if (address == null || address.isEmpty()) {
return false;
}
@ -311,23 +308,23 @@ public class BtcEngine extends CoinEngine {
}
public int GetTokenDecimals(TangemCard card) {
public int getTokenDecimals(TangemCard card) {
return 0;
}
public String GetContractAddress(TangemCard card) {
public String getContractAddress(TangemCard card) {
return "";
}
public boolean IsNeedCheckNode() {
public boolean isNeedCheckNode() {
return true;
}
public Uri getShareWalletURIExplorer(TangemCard mCard) {
public Uri getShareWalletUriExplorer(TangemCard mCard) {
return Uri.parse((mCard.getBlockchain() == Blockchain.Bitcoin ? "https://blockchain.info/address/" : "https://testnet.blockchain.info/address/") + mCard.getWallet());
}
public Uri getShareWalletURI(TangemCard mCard) {
public Uri getShareWalletUri(TangemCard mCard) {
if (mCard.getDenomination() != null) {
return Uri.parse("bitcoin:" + mCard.getWallet() + "?amount=" + BTCUtils.satoshiToBtc(mCard.getDenomination()));
} else {
@ -336,7 +333,7 @@ public class BtcEngine extends CoinEngine {
}
public boolean CheckAmountValie(TangemCard mCard, String amountValue, String feeValue, Long minFeeInInternalUnits) {
public boolean checkAmountValue(TangemCard mCard, String amountValue, String feeValue, Long minFeeInInternalUnits) {
Long fee = null;
Long amount = null;
try {
@ -362,12 +359,12 @@ public class BtcEngine extends CoinEngine {
return true;
}
public String EvaluteFeeEquivalent(TangemCard mCard, String fee) {
return GetAmountEqualentDescriptor(mCard, fee);
public String evaluateFeeEquivalent(TangemCard mCard, String fee) {
return getAmountEquivalentDescriptor(mCard, fee);
}
@Override
public String GetBalanceEquivalent(TangemCard mCard) {
public String getBalanceEquivalent(TangemCard mCard) {
Double balance = Double.NaN;
try {
Long val = mCard.getBalance();
@ -379,7 +376,7 @@ public class BtcEngine extends CoinEngine {
return mCard.getAmountEquivalentDescription(balance);
}
public String GetBalance(TangemCard mCard) {
public String getBalance(TangemCard mCard) {
if (mCard.hasBalanceInfo()) {
Double balance = mCard.AmountFromInternalUnits(mCard.getBalance());
return mCard.getAmountDescription(balance);
@ -388,7 +385,7 @@ public class BtcEngine extends CoinEngine {
}
}
public String GetBalanceValue(TangemCard mCard) {
public String getBalanceValue(TangemCard mCard) {
if (mCard.hasBalanceInfo()) {
Double balance = mCard.getBalance() / (mCard.getBlockchain().getMultiplier() / 1000.0);
@ -440,14 +437,14 @@ public class BtcEngine extends CoinEngine {
}
@Override
public String ConvertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception {
public String convertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception {
byte[] reversed = new byte[bytes.length];
for (int i = 0; i < bytes.length; i++) reversed[i] = bytes[bytes.length - i - 1];
return FormatUtil.DoubleToString(1000.0 * mCard.AmountFromInternalUnits(Util.byteArrayToLong(reversed)));
}
@Override
public byte[] ConvertAmountToByteArray(TangemCard mCard, String amount) throws Exception {
public byte[] convertAmountToByteArray(TangemCard mCard, String amount) throws Exception {
byte[] bytes = Util.longToByteArray(mCard.InternalUnitsFromString(amount));
byte[] reversed = new byte[bytes.length];
for (int i = 0; i < bytes.length; i++) reversed[i] = bytes[bytes.length - i - 1];
@ -455,7 +452,7 @@ public class BtcEngine extends CoinEngine {
}
@Override
public String GetAmountDescription(TangemCard mCard, String amount) throws Exception {
public String getAmountDescription(TangemCard mCard, String amount) throws Exception {
return mCard.getAmountDescription(Double.parseDouble(amount) / 1000.0);
}
@ -467,11 +464,11 @@ public class BtcEngine extends CoinEngine {
}
}
public String GetAmountEqualentDescriptor(TangemCard mCard, String value) {
public String getAmountEquivalentDescriptor(TangemCard mCard, String value) {
return getAmountEquivalentDescriptionBTC(Double.parseDouble(value) / 1000.0, mCard.getRate());
}
public byte[] Sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception {
public byte[] sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception {
String myAddress = mCard.getWallet();
byte[] pbKey = mCard.getWalletPublicKey();

View file

@ -13,70 +13,70 @@ import java.security.NoSuchProviderException;
public abstract class CoinEngine {
public abstract String GetNextNode(TangemCard mCard);
public abstract String getNextNode(TangemCard card);
public abstract int GetNextNodePort(TangemCard mCard);
public abstract int getNextNodePort(TangemCard card);
public abstract String GetNode(TangemCard mCard);
public abstract String getNode(TangemCard card);
public abstract int GetNodePort(TangemCard mCard);
public abstract int getNodePort(TangemCard card);
public abstract void SwitchNode(TangemCard mCard);
public abstract void switchNode(TangemCard card);
public abstract boolean AwaitingConfirmation(TangemCard card);
public abstract boolean awaitingConfirmation(TangemCard card);
public abstract boolean HasBalanceInfo(TangemCard card);
public abstract boolean hasBalanceInfo(TangemCard card);
public abstract boolean IsBalanceNotZero(TangemCard card);
public abstract boolean isBalanceNotZero(TangemCard card);
public abstract boolean IsBalanceAlterNotZero(TangemCard card);
public abstract boolean isBalanceAlterNotZero(TangemCard card);
public abstract boolean CheckAmount(TangemCard card, String amount) throws Exception;
public abstract boolean checkAmount(TangemCard card, String amount) throws Exception;
public abstract int GetTokenDecimals(TangemCard card);
public abstract int getTokenDecimals(TangemCard card);
public abstract String GetContractAddress(TangemCard card);
public abstract String getContractAddress(TangemCard card);
public abstract byte[] Sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception;
public abstract byte[] sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception;
public abstract boolean CheckUnspentTransaction(TangemCard mCard);
public abstract boolean checkUnspentTransaction(TangemCard card);
public abstract Uri getShareWalletURIExplorer(TangemCard mCard);
public abstract Uri getShareWalletUriExplorer(TangemCard card);
public abstract Long GetBalanceLong(TangemCard mCard);
public abstract Long getBalanceLong(TangemCard card);
public abstract Uri getShareWalletURI(TangemCard mCard);
public abstract Uri getShareWalletUri(TangemCard card);
public abstract String EvaluteFeeEquivalent(TangemCard mCard, String fee);
public abstract String evaluateFeeEquivalent(TangemCard card, String fee);
public abstract boolean CheckAmountValie(TangemCard mCard, String amount, String fee, Long minFeeInInternalUnits);
public abstract boolean checkAmountValue(TangemCard card, String amount, String fee, Long minFeeInInternalUnits);
public abstract boolean InOutPutVisible();
public abstract boolean inOutPutVisible();
public abstract String GetBalance(TangemCard mCard);
public abstract String getBalance(TangemCard card);
public abstract String GetBalanceWithAlter(TangemCard mCard);
public abstract String getBalanceWithAlter(TangemCard card);
public abstract String GetBalanceCurrency(TangemCard card);
public abstract String getBalanceCurrency(TangemCard card);
public abstract String GetFeeCurrency();
public abstract String getFeeCurrency();
public abstract boolean IsNeedCheckNode();
public abstract boolean isNeedCheckNode();
public abstract String GetBalanceEquivalent(TangemCard mCard);
public abstract String getBalanceEquivalent(TangemCard card);
public abstract String GetBalanceValue(TangemCard mCard);
public abstract String getBalanceValue(TangemCard card);
public abstract String GetAmountDescription(TangemCard mCard, String amount) throws Exception;
public abstract String getAmountDescription(TangemCard card, String amount) throws Exception;
public abstract String GetAmountEqualentDescriptor(TangemCard mCard, String value);
public abstract String getAmountEquivalentDescriptor(TangemCard card, String value);
public abstract boolean ValdateAddress(String address, TangemCard catd);
public abstract boolean validateAddress(String address, TangemCard card);
public abstract String calculateAddress(TangemCard mCard, byte[] pkUncompressed) throws NoSuchProviderException, NoSuchAlgorithmException;
public abstract String calculateAddress(TangemCard card, byte[] pkUncompressed) throws NoSuchProviderException, NoSuchAlgorithmException;
public abstract String ConvertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception;
public abstract String convertByteArrayToAmount(TangemCard card, byte[] bytes) throws Exception;
public abstract byte[] ConvertAmountToByteArray(TangemCard mCard, String amount) throws Exception;
public abstract byte[] convertAmountToByteArray(TangemCard card, String amount) throws Exception;
}

View file

@ -5,7 +5,7 @@ package com.tangem.domain.wallet;
*/
public class CoinEngineFactory {
public static CoinEngine Create(Blockchain chain) {
public static CoinEngine create(Blockchain chain) {
if (Blockchain.BitcoinCash == chain || Blockchain.BitcoinCashTestNet == chain) {
return new BtcCashEngine();
} else if (Blockchain.Bitcoin == chain || Blockchain.BitcoinTestNet == chain) {

View file

@ -27,42 +27,42 @@ import static com.tangem.util.FormatUtil.GetDecimalFormat;
public class EthEngine extends CoinEngine {
public String GetNextNode(TangemCard mCard) {
public String getNextNode(TangemCard mCard) {
return "abc1.hsmiths.com";
}
public int GetNextNodePort(TangemCard mCard) {
public int getNextNodePort(TangemCard mCard) {
return 60001;
}
public String GetNode(TangemCard mCard) {
public String getNode(TangemCard mCard) {
return "abc1.hsmiths.com";
}
public int GetNodePort(TangemCard mCard) {
public int getNodePort(TangemCard mCard) {
return 60001;
}
public void SwitchNode(TangemCard mCard) {
public void switchNode(TangemCard mCard) {
}
public boolean InOutPutVisible() {
public boolean inOutPutVisible() {
return false;
}
public String GetBalanceCurrency(TangemCard card) {
public String getBalanceCurrency(TangemCard card) {
return "ETH";
}
public boolean AwaitingConfirmation(TangemCard card) {
public boolean awaitingConfirmation(TangemCard card) {
return false;
}
public String GetFeeCurrency() {
public String getFeeCurrency() {
return "Gwei";
}
public boolean IsNeedCheckNode() {
public boolean isNeedCheckNode() {
return false;
}
@ -74,15 +74,15 @@ public class EthEngine extends CoinEngine {
return d;
}
public int GetTokenDecimals(TangemCard card) {
public int getTokenDecimals(TangemCard card) {
return 0;
}
public String GetContractAddress(TangemCard card) {
public String getContractAddress(TangemCard card) {
return "";
}
public boolean ValdateAddress(String address, TangemCard card) {
public boolean validateAddress(String address, TangemCard card) {
if (address == null || address.isEmpty()) {
return false;
@ -99,7 +99,7 @@ public class EthEngine extends CoinEngine {
return true;
}
public String GetBalanceValue(TangemCard mCard) {
public String getBalanceValue(TangemCard mCard) {
String dec = mCard.getDecimalBalance();
BigDecimal d = convertToEth(dec);
String s = d.toString();
@ -137,36 +137,36 @@ public class EthEngine extends CoinEngine {
@Override
public String GetBalanceEquivalent(TangemCard mCard) {
public String getBalanceEquivalent(TangemCard mCard) {
String dec = mCard.getDecimalBalance();
BigDecimal d = convertToEth(dec);
return getAmountEquivalentDescriptionETH(d, mCard.getRate());
}
@Override
public String GetBalance(TangemCard mCard) {
if (!HasBalanceInfo(mCard)) {
return "-- -- -- " + GetBalanceCurrency(mCard);
public String getBalance(TangemCard mCard) {
if (!hasBalanceInfo(mCard)) {
return "-- -- -- " + getBalanceCurrency(mCard);
}
String output = GetBalanceValue(mCard);
String s = output + " " + GetBalanceCurrency(mCard);
String output = getBalanceValue(mCard);
String s = output + " " + getBalanceCurrency(mCard);
return s;
}
public Long GetBalanceLong(TangemCard mCard) {
public Long getBalanceLong(TangemCard mCard) {
return mCard.getBalance();
}
public String GetBalanceWithAlter(TangemCard mCard) {
return GetBalance(mCard);
public String getBalanceWithAlter(TangemCard mCard) {
return getBalance(mCard);
}
public boolean IsBalanceAlterNotZero(TangemCard card) {
public boolean isBalanceAlterNotZero(TangemCard card) {
return true;
}
public boolean IsBalanceNotZero(TangemCard card) {
public boolean isBalanceNotZero(TangemCard card) {
String balance = card.getDecimalBalance();
if (balance == null || balance == "")
return false;
@ -180,21 +180,21 @@ public class EthEngine extends CoinEngine {
}
@Override
public String ConvertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception {
public String convertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception {
throw new Exception("Not implemented");
}
@Override
public byte[] ConvertAmountToByteArray(TangemCard mCard, String amount) throws Exception {
public byte[] convertAmountToByteArray(TangemCard mCard, String amount) throws Exception {
throw new Exception("Not implemented");
}
@Override
public String GetAmountDescription(TangemCard mCard, String amount) throws Exception {
public String getAmountDescription(TangemCard mCard, String amount) throws Exception {
throw new Exception("Not implemented");
}
public String GetAmountEqualentDescriptor(TangemCard mCard, String value) {
public String getAmountEquivalentDescriptor(TangemCard mCard, String value) {
BigDecimal d = new BigDecimal(value);
return getAmountEquivalentDescriptionETH(d, mCard.getRate());
}
@ -210,10 +210,10 @@ public class EthEngine extends CoinEngine {
return d;
}
public boolean CheckAmount(TangemCard card, String amount) throws Exception {
public boolean checkAmount(TangemCard card, String amount) throws Exception {
DecimalFormat decimalFormat = GetDecimalFormat();
BigDecimal amountValue = (BigDecimal) decimalFormat.parse(amount); //new BigDecimal(strAmount);
// BigDecimal maxValue = new BigDecimal(GetBalanceValue(card));
// BigDecimal maxValue = new BigDecimal(getBalanceValue(card));
BigDecimal maxValue = GetBalanceAlterValueBigDecimal(card);
if (amountValue.compareTo(maxValue) > 0) {
return false;
@ -222,27 +222,27 @@ public class EthEngine extends CoinEngine {
return true;
}
public boolean HasBalanceInfo(TangemCard card) {
public boolean hasBalanceInfo(TangemCard card) {
return card.hasBalanceInfo();
}
public Uri getShareWalletURI(TangemCard mCard) {
public Uri getShareWalletUri(TangemCard mCard) {
return Uri.parse("" + mCard.getWallet());
}
public Uri getShareWalletURIExplorer(TangemCard mCard) {
public Uri getShareWalletUriExplorer(TangemCard mCard) {
if (mCard.getBlockchain() == Blockchain.EthereumTestNet)
return Uri.parse("https://rinkeby.etherscan.io/address/" + mCard.getWallet());
else
return Uri.parse("https://etherscan.io/address/" + mCard.getWallet());
}
public boolean CheckUnspentTransaction(TangemCard mCard) {
public boolean checkUnspentTransaction(TangemCard mCard) {
return true;
}
public boolean CheckAmountValie(TangemCard mCard, String amountValue, String feeValue, Long minFeeInInternalUnits) {
public boolean checkAmountValue(TangemCard mCard, String amountValue, String feeValue, Long minFeeInInternalUnits) {
// Long fee = null;
// Long amount = null;
// try {
@ -276,11 +276,11 @@ public class EthEngine extends CoinEngine {
return true;
}
public String EvaluteFeeEquivalent(TangemCard mCard, String fee) {
public String evaluateFeeEquivalent(TangemCard mCard, String fee) {
BigDecimal gweFee = new BigDecimal(fee);
gweFee = gweFee.divide(new BigDecimal("1000000000"));
gweFee = gweFee.setScale(18, RoundingMode.DOWN);
return GetAmountEqualentDescriptor(mCard, gweFee.toString());
return getAmountEquivalentDescriptor(mCard, gweFee.toString());
}
public String calculateAddress(TangemCard mCard, byte[] pkUncompressed) throws NoSuchProviderException, NoSuchAlgorithmException {
@ -303,7 +303,7 @@ public class EthEngine extends CoinEngine {
return String.format("0x%s", BTCUtils.toHex(address));
}
public byte[] Sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception {
public byte[] sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception {
BigInteger nonceValue = mCard.GetConfirmTXCount();
byte[] pbKey = mCard.getWalletPublicKey();
@ -359,7 +359,7 @@ public class EthEngine extends CoinEngine {
boolean f = ECKey.verify(for_hash, new ECKey.ECDSASignature(r, s), pbKey);
if (!f) {
Log.e("ETH-CHECK", "Sign Failed.");
Log.e("ETH-CHECK", "sign Failed.");
}
tx.signature = new ECDSASignatureETH(r, s);

View file

@ -878,10 +878,10 @@ public class TangemCard {
}
public enum SigningMethod {
Sign_Hash(0, "Sign hash"),
Sign_Raw(1, "Sign raw tx"),
Sign_Hash_Validated_By_Issuer(2, "Sign hash validated by issuer"),
Sign_Raw_Validated_By_Issuer(3, "Sign raw tx validated by issuer");
Sign_Hash(0, "sign hash"),
Sign_Raw(1, "sign raw tx"),
Sign_Hash_Validated_By_Issuer(2, "sign hash validated by issuer"),
Sign_Raw_Validated_By_Issuer(3, "sign raw tx validated by issuer");
int ID;
String mDescription;
@ -1203,7 +1203,7 @@ public class TangemCard {
{
this.Denomination=denomination;
try {
this.DenominationText=CoinEngineFactory.Create(getBlockchain()).ConvertByteArrayToAmount(this, denomination);
this.DenominationText=CoinEngineFactory.create(getBlockchain()).convertByteArrayToAmount(this, denomination);
} catch (Exception e) {
e.printStackTrace();
this.DenominationText="N/A";
@ -1368,7 +1368,7 @@ public class TangemCard {
if( onlineVerified!=null )
B.putBoolean("onlineVerified", onlineVerified);
B.putBoolean("balanceRecieved", balanceRecieved);
B.putBoolean("balanceReceived", balanceReceived);
if( onlineValidated!=null )
@ -1389,17 +1389,17 @@ public class TangemCard {
}
public boolean isBalanceRecieved() {
return balanceRecieved;
public boolean isBalanceReceived() {
return balanceReceived;
}
private boolean balanceRecieved;
private boolean balanceReceived;
public void setBalanceRecieved (boolean value) {
balanceRecieved = value;
public void setBalanceReceived(boolean value) {
balanceReceived = value;
}
public void LoadFromBundle(Bundle B) {
public void loadFromBundle(Bundle B) {
UID = B.getString("UID");
CID = B.getByteArray("CID");
PIN = B.getString("PIN");
@ -1445,7 +1445,7 @@ public class TangemCard {
cardPublicKeyValid = B.getBoolean("CardPublicKeyValid");
if (B.containsKey("CardPublicKey")) setCardPublicKey(B.getByteArray("CardPublicKey"));
if(B.containsKey("balanceRecieved")) setBalanceRecieved(B.getBoolean("balanceRecieved"));
if(B.containsKey("balanceReceived")) setBalanceReceived(B.getBoolean("balanceReceived"));
if (B.containsKey("BalanceConfirmed")) balanceConfirmed = B.getLong("BalanceConfirmed");
else balanceConfirmed = null;
if (B.containsKey("BalanceUnconfirmed"))

View file

@ -27,41 +27,41 @@ import static com.tangem.util.FormatUtil.GetDecimalFormat;
*/
public class TokenEngine extends CoinEngine {
public String GetNextNode(TangemCard mCard) {
public String getNextNode(TangemCard mCard) {
return "abc1.hsmiths.com";
}
public int GetNextNodePort(TangemCard mCard) {
public int getNextNodePort(TangemCard mCard) {
return 60001;
}
public String GetNode(TangemCard mCard) {
public String getNode(TangemCard mCard) {
return "abc1.hsmiths.com";
}
public int GetNodePort(TangemCard mCard) {
public int getNodePort(TangemCard mCard) {
return 60001;
}
public void SwitchNode(TangemCard mCard) {
public void switchNode(TangemCard mCard) {
}
public boolean AwaitingConfirmation(TangemCard card) {
public boolean awaitingConfirmation(TangemCard card) {
return false;
}
public boolean InOutPutVisible() {
public boolean inOutPutVisible() {
return false;
}
public String GetBalanceCurrency(TangemCard card) {
public String getBalanceCurrency(TangemCard card) {
String currency = card.getTokenSymbol();
if (Strings.isNullOrEmpty(currency))
return "NoN";
return currency;
}
public String GetFeeCurrency() {
public String getFeeCurrency() {
return "Gwei";
}
@ -74,19 +74,19 @@ public class TokenEngine extends CoinEngine {
}
public int GetTokenDecimals(TangemCard card) {
public int getTokenDecimals(TangemCard card) {
return card.getTokensDecimal();
}
public String GetContractAddress(TangemCard card) {
public String getContractAddress(TangemCard card) {
return card.getContractAddress();
}
public boolean IsNeedCheckNode() {
public boolean isNeedCheckNode() {
return false;
}
public boolean ValdateAddress(String address, TangemCard card) {
public boolean validateAddress(String address, TangemCard card) {
if (address == null || address.isEmpty()) {
return false;
}
@ -124,14 +124,14 @@ public class TokenEngine extends CoinEngine {
return d;
}
public String GetBalanceValue(TangemCard mCard) {
if (!HasBalanceInfo(mCard))
return "-- -- -- " + GetBalanceCurrency(mCard);
public String getBalanceValue(TangemCard mCard) {
if (!hasBalanceInfo(mCard))
return "-- -- -- " + getBalanceCurrency(mCard);
String dec = mCard.getDecimalBalance();
BigDecimal d = new BigDecimal(dec);
BigDecimal p = new BigDecimal(10);
p = p.pow(GetTokenDecimals(mCard));
p = p.pow(getTokenDecimals(mCard));
BigDecimal l = d.divide(p);
String pattern = "#0.000###############"; // If you like 4 zeros
@ -145,13 +145,13 @@ public class TokenEngine extends CoinEngine {
String dec = mCard.getDecimalBalance();
BigDecimal d = new BigDecimal(dec);
BigDecimal p = new BigDecimal(10);
p = p.pow(GetTokenDecimals(mCard));
p = p.pow(getTokenDecimals(mCard));
BigDecimal l = d.divide(p);
return l;
}
public boolean CheckAmount(TangemCard card, String amount) throws Exception {
public boolean checkAmount(TangemCard card, String amount) throws Exception {
DecimalFormat decimalFormat = GetDecimalFormat();
BigDecimal amountValue = (BigDecimal) decimalFormat.parse(amount); //new BigDecimal(strAmount);
BigDecimal maxValue = GetBalanceValueBigDecimal(card);
@ -162,11 +162,11 @@ public class TokenEngine extends CoinEngine {
return true;
}
public Long GetBalanceLong(TangemCard mCard) {
public Long getBalanceLong(TangemCard mCard) {
return mCard.getBalance();
}
public boolean IsBalanceAlterNotZero(TangemCard card) {
public boolean isBalanceAlterNotZero(TangemCard card) {
String balance = card.getDecimalBalanceAlter();
if (balance == null || balance == "")
return false;
@ -179,7 +179,7 @@ public class TokenEngine extends CoinEngine {
return true;
}
public boolean IsBalanceNotZero(TangemCard card) {
public boolean isBalanceNotZero(TangemCard card) {
String balance = card.getDecimalBalance();
if (balance == null || balance == "")
return false;
@ -192,7 +192,7 @@ public class TokenEngine extends CoinEngine {
return true;
}
public boolean HasBalanceInfo(TangemCard card) {
public boolean hasBalanceInfo(TangemCard card) {
String balance = card.getDecimalBalance();
if (balance == null || balance == "")
return false;
@ -204,8 +204,8 @@ public class TokenEngine extends CoinEngine {
}
@Override
public String GetBalanceEquivalent(TangemCard mCard) {
if (!HasBalanceInfo(mCard)) {
public String getBalanceEquivalent(TangemCard mCard) {
if (!hasBalanceInfo(mCard)) {
return "-- -- -- ";
}
String dec = mCard.getDecimalBalance();
@ -214,20 +214,20 @@ public class TokenEngine extends CoinEngine {
}
@Override
public String GetBalance(TangemCard mCard) {
if (!HasBalanceInfo(mCard)) {
return "-- -- -- " + GetBalanceCurrency(mCard);
public String getBalance(TangemCard mCard) {
if (!hasBalanceInfo(mCard)) {
return "-- -- -- " + getBalanceCurrency(mCard);
}
String output = GetBalanceValue(mCard);
String s = output + " " + GetBalanceCurrency(mCard);
String output = getBalanceValue(mCard);
String s = output + " " + getBalanceCurrency(mCard);
return s;
}
public String GetBalanceWithAlter(TangemCard mCard) {
//return GetBalance(mCard) + "\n(" + GetBalanceAlterValue(mCard) + " ETH)";
return " " + GetBalance(mCard) + " <br><small><small> + " + GetBalanceAlterValue(mCard) + " ETH for gas</small></small>";
public String getBalanceWithAlter(TangemCard mCard) {
//return getBalance(mCard) + "\n(" + GetBalanceAlterValue(mCard) + " ETH)";
return " " + getBalance(mCard) + " <br><small><small> + " + GetBalanceAlterValue(mCard) + " ETH for gas</small></small>";
}
public String calculateAddress(TangemCard mCard, byte[] pkUncompressed) throws NoSuchProviderException, NoSuchAlgorithmException {
@ -251,22 +251,22 @@ public class TokenEngine extends CoinEngine {
}
@Override
public String ConvertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception {
public String convertByteArrayToAmount(TangemCard mCard, byte[] bytes) throws Exception {
throw new Exception("Not implemented");
}
@Override
public byte[] ConvertAmountToByteArray(TangemCard mCard, String amount) throws Exception {
public byte[] convertAmountToByteArray(TangemCard mCard, String amount) throws Exception {
throw new Exception("Not implemented");
}
@Override
public String GetAmountDescription(TangemCard mCard, String amount) throws Exception {
public String getAmountDescription(TangemCard mCard, String amount) throws Exception {
throw new Exception("Not implemented");
}
public String GetAmountEqualentDescriptor(TangemCard mCard, String value) {
public String getAmountEquivalentDescriptor(TangemCard mCard, String value) {
BigDecimal d = new BigDecimal(value);
return EthEngine.getAmountEquivalentDescriptionETH(d, mCard.getRate());
}
@ -276,19 +276,19 @@ public class TokenEngine extends CoinEngine {
return EthEngine.getAmountEquivalentDescriptionETH(d, mCard.getRateAlter());
}
public Uri getShareWalletURIExplorer(TangemCard mCard) {
return Uri.parse("https://etherscan.io/token/" + GetContractAddress(mCard) + "?a=" + mCard.getWallet());
public Uri getShareWalletUriExplorer(TangemCard mCard) {
return Uri.parse("https://etherscan.io/token/" + getContractAddress(mCard) + "?a=" + mCard.getWallet());
}
public Uri getShareWalletURI(TangemCard mCard) {
public Uri getShareWalletUri(TangemCard mCard) {
return Uri.parse("" + mCard.getWallet());
}
public boolean CheckUnspentTransaction(TangemCard mCard) {
public boolean checkUnspentTransaction(TangemCard mCard) {
return true;
}
public boolean CheckAmountValie(TangemCard mCard, String amountValue, String feeValue, Long minFeeInInternalUnits) {
public boolean checkAmountValue(TangemCard mCard, String amountValue, String feeValue, Long minFeeInInternalUnits) {
Long fee = null;
BigDecimal amount = null;
try {
@ -320,14 +320,14 @@ public class TokenEngine extends CoinEngine {
return true;
}
public String EvaluteFeeEquivalent(TangemCard mCard, String fee) {
public String evaluateFeeEquivalent(TangemCard mCard, String fee) {
BigDecimal gweFee = new BigDecimal(fee);
gweFee = gweFee.divide(new BigDecimal("1000000000"));
gweFee = gweFee.setScale(18, RoundingMode.DOWN);
return GetFeeEqualentDescriptor(mCard, gweFee.toString());
}
public byte[] Sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception {
public byte[] sign(String feeValue, String amountValue, String toValue, TangemCard mCard, CardProtocol protocol) throws Exception {
BigInteger nonceValue = mCard.GetConfirmTXCount();
byte[] pbKey = mCard.getWalletPublicKey();
@ -339,7 +339,7 @@ public class TokenEngine extends CoinEngine {
BigDecimal amountDecValue = new BigDecimal(amountValue);
int d = GetTokenDecimals(mCard);
int d = getTokenDecimals(mCard);
BigDecimal amountDec = new BigDecimal("10");
amountDec = amountDec.pow(d);
amountDec = amountDecValue.multiply(amountDec);
@ -368,7 +368,7 @@ public class TokenEngine extends CoinEngine {
to = to.substring(2);
}
String contractAddress = GetContractAddress(mCard);
String contractAddress = getContractAddress(mCard);
if (contractAddress.startsWith("0x") || contractAddress.startsWith("0X")) {
contractAddress = contractAddress.substring(2);
@ -411,7 +411,7 @@ public class TokenEngine extends CoinEngine {
boolean f = ECKey.verify(for_hash, new ECKey.ECDSASignature(r, s), pbKey);
if (!f) {
Log.e("ETH-CHECK", "Sign Failed.");
Log.e("ETH-CHECK", "sign Failed.");
}
tx.signature = new ECDSASignatureETH(r, s);

View file

@ -68,7 +68,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
nfcManager = NfcManager(this, this)
card = TangemCard(intent.getStringExtra("UID"))
card!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
progressBar = findViewById(R.id.progressBar)
btnSend = findViewById(R.id.btnSend)
@ -77,16 +77,16 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
tvFeeEquivalent = findViewById(R.id.tvFeeEquivalent)
rgFee = findViewById(R.id.rgFee)
val engine = CoinEngineFactory.Create(card!!.blockchain)
val engine = CoinEngineFactory.create(card!!.blockchain)
if (card!!.blockchain == Blockchain.Token) {
val html = Html.fromHtml(engine!!.GetBalanceWithAlter(card))
val html = Html.fromHtml(engine!!.getBalanceWithAlter(card))
tvBalance.text = html
} else
tvBalance.text = engine!!.GetBalanceWithAlter(card)
tvBalance.text = engine!!.getBalanceWithAlter(card)
etAmount!!.setText(intent.getStringExtra(SignPaymentActivity.EXTRA_AMOUNT))
tvCurrency.text = engine.GetBalanceCurrency(card)
tvCurrency2.text = engine.GetFeeCurrency()
tvCurrency.text = engine.getBalanceCurrency(card)
tvCurrency2.text = engine.getFeeCurrency()
tvCardID.text = card!!.cidDescription
@ -108,8 +108,8 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
try {
val engine = CoinEngineFactory.Create(card!!.blockchain)
val eqFee = engine!!.EvaluteFeeEquivalent(card, etFee!!.text.toString())
val engine = CoinEngineFactory.create(card!!.blockchain)
val eqFee = engine!!.evaluateFeeEquivalent(card, etFee!!.text.toString())
tvFeeEquivalent!!.text = eqFee
if (!card!!.amountEquivalentDescriptionAvailable) {
@ -137,9 +137,9 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
return@setOnClickListener
}
val engineCoin = CoinEngineFactory.Create(card!!.blockchain)
val engineCoin = CoinEngineFactory.create(card!!.blockchain)
if (engineCoin!!.IsNeedCheckNode() && !nodeCheck) {
if (engineCoin!!.isNeedCheckNode() && !nodeCheck) {
Toast.makeText(baseContext, getString(R.string.cannot_reach_current_active_blockchain_node_try_again), Toast.LENGTH_LONG).show()
return@setOnClickListener
}
@ -147,20 +147,20 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
val txFee = etFee!!.text.toString()
val txAmount = etAmount!!.text.toString()
if (!engineCoin.HasBalanceInfo(card)) {
if (!engineCoin.hasBalanceInfo(card)) {
finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_check_balance_no_connection_with_blockchain_nodes))
return@setOnClickListener
} else if (!engineCoin.IsBalanceNotZero(card)) {
} else if (!engineCoin.isBalanceNotZero(card)) {
finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.the_wallet_is_empty))
return@setOnClickListener
} else if (!engineCoin.CheckUnspentTransaction(card)) {
} else if (!engineCoin.checkUnspentTransaction(card)) {
finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.please_wait_for_confirmation_of_incoming_transaction))
return@setOnClickListener
}
if (!engineCoin.CheckAmountValie(card, txAmount, txFee, minFeeInInternalUnits)) {
if (!engineCoin.checkAmountValue(card, txAmount, txFee, minFeeInInternalUnits)) {
finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.fee_exceeds_payment_amount_enter_correct_value_and_repeat_sending))
return@setOnClickListener
}
@ -184,11 +184,11 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
} else {
rgFee!!.isEnabled = true
val data = SharedData(SharedData.COUNT_REQUEST)
val engineCoin = CoinEngineFactory.Create(card!!.blockchain)
val engineCoin = CoinEngineFactory.create(card!!.blockchain)
for (i in 0 until data.allRequest) {
val nodeAddress = engineCoin!!.GetNextNode(card)
val nodePort = engineCoin.GetNextNodePort(card)
val nodeAddress = engineCoin!!.getNextNode(card)
val nodePort = engineCoin.getNextNodePort(card)
val connectTaskEx = ConnectTask(this@ConfirmPaymentActivity, nodeAddress, nodePort, data)
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(card!!.wallet))
}
@ -235,7 +235,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
if (data != null && data.extras != null) {
if (data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
val updatedCard = TangemCard(data.getStringExtra("UID"))
updatedCard.LoadFromBundle(data.getBundleExtra("Card"))
updatedCard.loadFromBundle(data.getBundleExtra("Card"))
card = updatedCard
}
}

View file

@ -47,7 +47,7 @@ class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback,
nfcManager = NfcManager(this, this)
card = TangemCard(intent.getStringExtra("UID"))
card!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
tvCardId.text = card!!.cidDescription

View file

@ -46,7 +46,7 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
nfcManager = NfcManager(this, this)
card = TangemCard(intent.getStringExtra("UID"))
card!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
tvIssuer.text = card!!.issuerDescription
tvBlockchain.text = card!!.blockchainName
@ -118,7 +118,7 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
} else {
if (data != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
val updatedCard = TangemCard(data.getStringExtra("UID"))
updatedCard.LoadFromBundle(data.getBundleExtra("Card"))
updatedCard.loadFromBundle(data.getBundleExtra("Card"))
card = updatedCard
}
if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) {

View file

@ -289,7 +289,7 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco
val uid = cardInfo.getString("UID")
val card = TangemCard(uid)
card.LoadFromBundle(cardInfo.getBundle("Card"))
card.loadFromBundle(cardInfo.getBundle("Card"))
val intent: Intent
intent = when {

View file

@ -84,7 +84,7 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge
else if (mode == Mode.RequestPIN2) {
val uid = intent.getStringExtra("UID")
val mCard = TangemCard(uid)
mCard.LoadFromBundle(intent.getBundleExtra("Card"))
mCard.loadFromBundle(intent.getBundleExtra("Card"))
if (mCard.PIN2 == TangemCard.PIN2_Mode.DefaultPIN2 || mCard.PIN2 == TangemCard.PIN2_Mode.Unchecked) {
// if we know PIN2 or not try default previously - use it

View file

@ -49,7 +49,7 @@ class PinSwapActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProt
nfcManager = NfcManager(this, this)
card = TangemCard(intent.getStringExtra("UID"))
card!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
newPIN = intent.getStringExtra("newPIN")
newPIN2 = intent.getStringExtra("newPIN2")

View file

@ -42,40 +42,40 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
mNfcManager = NfcManager(this, this)
mCard = TangemCard(intent.getStringExtra("UID"))
mCard!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
mCard!!.loadFromBundle(intent.extras!!.getBundle("Card"))
tvCardID.text = mCard!!.cidDescription
val engine = CoinEngineFactory.Create(mCard!!.blockchain)
val engine = CoinEngineFactory.create(mCard!!.blockchain)
if (mCard!!.blockchain == Blockchain.Token) {
val html = Html.fromHtml(engine!!.GetBalanceWithAlter(mCard))
val html = Html.fromHtml(engine!!.getBalanceWithAlter(mCard))
tvBalance.text = html
} else
tvBalance.text = engine!!.GetBalanceWithAlter(mCard)
tvBalance.text = engine!!.getBalanceWithAlter(mCard)
if (mCard!!.remainingSignatures < 2)
etAmount!!.isEnabled = false
if (mCard!!.blockchain == Blockchain.Ethereum || mCard!!.blockchain == Blockchain.EthereumTestNet) {
tvCurrency.text = engine.GetBalanceCurrency(mCard)
tvCurrency.text = engine.getBalanceCurrency(mCard)
useCurrency = false
etAmount!!.setText(engine.GetBalanceValue(mCard))
etAmount!!.setText(engine.getBalanceValue(mCard))
} else if (mCard!!.blockchain == Blockchain.Bitcoin || mCard!!.blockchain == Blockchain.BitcoinTestNet) {
val balance = engine.GetBalanceLong(mCard)!! / (mCard!!.blockchain.multiplier / 1000.0)
val balance = engine.getBalanceLong(mCard)!! / (mCard!!.blockchain.multiplier / 1000.0)
tvCurrency.text = "m" + mCard!!.blockchain.currency
useCurrency = true
val output = FormatUtil.DoubleToString(balance)
etAmount!!.setText(output)
} else if (mCard!!.blockchain == Blockchain.BitcoinCash || mCard!!.blockchain == Blockchain.BitcoinCashTestNet) {
val balance = engine.GetBalanceLong(mCard)!! / (mCard!!.blockchain.multiplier / 1000.0)
val balance = engine.getBalanceLong(mCard)!! / (mCard!!.blockchain.multiplier / 1000.0)
tvCurrency.text = "m" + mCard!!.blockchain.currency
useCurrency = true
val output = FormatUtil.DoubleToString(balance)
etAmount!!.setText(output)
} else {
tvCurrency.text = engine.GetBalanceCurrency(mCard)
tvCurrency.text = engine.getBalanceCurrency(mCard)
useCurrency = false
etAmount!!.setText(engine.GetBalanceValue(mCard))
etAmount!!.setText(engine.getBalanceValue(mCard))
}
if (mCard!!.blockchain == Blockchain.Bitcoin)
@ -91,10 +91,10 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
btnVerify.setOnClickListener {
val strAmount: String = etAmount!!.text.toString().replace(",", ".")
val engine1 = CoinEngineFactory.Create(mCard!!.blockchain)
val engine1 = CoinEngineFactory.create(mCard!!.blockchain)
try {
if (!engine.CheckAmount(mCard, etAmount!!.text.toString()))
if (!engine.checkAmount(mCard, etAmount!!.text.toString()))
etAmount!!.error = getString(R.string.not_enough_funds_on_your_card)
} catch (e: Exception) {
etAmount!!.error = getString(R.string.unknown_amount_format)
@ -102,7 +102,7 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
var checkAddress = false
if (engine1 != null)
checkAddress = engine1.ValdateAddress(etWallet!!.text.toString(), mCard)
checkAddress = engine1.validateAddress(etWallet!!.text.toString(), mCard)
if (!checkAddress) {

View file

@ -44,7 +44,7 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
MainActivity.commonInit(applicationContext)
mCard = TangemCard(intent.getStringExtra("UID"))
mCard!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
mCard!!.loadFromBundle(intent.extras!!.getBundle("Card"))
tvCardID.text = mCard!!.cidDescription
progressBar.progressTintList = ColorStateList.valueOf(Color.DKGRAY)

View file

@ -12,7 +12,6 @@ import com.tangem.data.network.request.InfuraRequest
import com.tangem.data.network.task.send_transaction.ConnectTask
import com.tangem.data.network.task.send_transaction.ETHRequestTask
import com.tangem.domain.wallet.Blockchain
import com.tangem.domain.wallet.CoinEngine
import com.tangem.domain.wallet.CoinEngineFactory
import com.tangem.domain.wallet.TangemCard
import com.tangem.wallet.R
@ -33,10 +32,10 @@ class SendTransactionActivity : AppCompatActivity() {
val intent = intent
card = TangemCard(getIntent().getStringExtra("UID"))
card!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
tx = intent.getStringExtra("TX")
val engine = CoinEngineFactory.Create(card!!.blockchain)
val engine = CoinEngineFactory.create(card!!.blockchain)
if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet || card!!.blockchain == Blockchain.Token) {
val task = ETHRequestTask(this@SendTransactionActivity, card!!.blockchain)
val req = InfuraRequest.SendTransaction(card!!.wallet, tx)
@ -44,13 +43,13 @@ class SendTransactionActivity : AppCompatActivity() {
req.setBlockchain(card!!.blockchain)
task.execute(req)
} else if (card!!.blockchain == Blockchain.Bitcoin || card!!.blockchain == Blockchain.BitcoinTestNet) {
val nodeAddress = engine!!.GetNode(card)
val nodePort = engine.GetNodePort(card)
val nodeAddress = engine!!.getNode(card)
val nodePort = engine.getNodePort(card)
val connectTask = ConnectTask(this@SendTransactionActivity, nodeAddress, nodePort, 3)
connectTask.execute(ElectrumRequest.Broadcast(card!!.wallet, tx))
} else if (card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) {
val nodeAddress = engine!!.GetNode(card)
val nodePort = engine.GetNodePort(card)
val nodeAddress = engine!!.getNode(card)
val nodePort = engine.getNodePort(card)
val connectTask = ConnectTask(this@SendTransactionActivity, nodeAddress, nodePort, 3)
connectTask.execute(ElectrumRequest.Broadcast(card!!.wallet, tx))
}

View file

@ -54,7 +54,7 @@ class SignPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
nfcManager = NfcManager(this, this)
mCard = TangemCard(intent.getStringExtra("UID"))
mCard!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
mCard!!.loadFromBundle(intent.extras!!.getBundle("Card"))
amountStr = intent.getStringExtra(EXTRA_AMOUNT)
feeStr = intent.getStringExtra("Fee")

View file

@ -64,7 +64,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
private var singleToast: Toast? = null
private var nfcManager: NfcManager? = null
var mCard: TangemCard? = null
var card: TangemCard? = null
private var lastTag: Tag? = null
var srlLoadedWallet: SwipeRefreshLayout? = null
@ -89,12 +89,12 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
if (request.error == null) {
val answer = request.answer as VerificationServerProtocol.Verify.Answer
if (answer.error == null) {
mCard!!.isOnlineVerified = answer.results[0].passed
card!!.isOnlineVerified = answer.results[0].passed
} else {
mCard!!.isOnlineVerified = null
card!!.isOnlineVerified = null
}
} else {
mCard!!.isOnlineVerified = null
card!!.isOnlineVerified = null
}
}
srlLoadedWallet!!.isRefreshing = false
@ -103,8 +103,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
private fun requestCardValidate() {
val params = HashMap<String, String>()
params["CID"] = Util.bytesToHex(mCard!!.cid)
params["publicKey"] = Util.bytesToHex(mCard!!.cardPublicKey)
params["CID"] = Util.bytesToHex(card!!.cid)
params["publicKey"] = Util.bytesToHex(card!!.cardPublicKey)
VolleyHelper().doRequestString(context!!, URL_CARD_VALIDATE, params)
}
@ -112,8 +112,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
super.onCreate(savedInstanceState)
nfcManager = NfcManager(activity, this)
mCard = TangemCard(activity!!.intent.getStringExtra(TangemCard.EXTRA_CARD))
mCard!!.LoadFromBundle(activity!!.intent.extras.getBundle(TangemCard.EXTRA_CARD))
card = TangemCard(activity!!.intent.getStringExtra(TangemCard.EXTRA_CARD))
card!!.loadFromBundle(activity!!.intent.extras.getBundle(TangemCard.EXTRA_CARD))
lastTag = activity!!.intent.getParcelableExtra(MainActivity.EXTRA_LAST_DISCOVERED_TAG)
}
@ -129,42 +129,42 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (mCard!!.blockchain == Blockchain.Token)
if (card!!.blockchain == Blockchain.Token)
tvBalance.setSingleLine(false)
ivTangemCard.setImageResource(mCard!!.cardImageResource)
ivTangemCard.setImageResource(card!!.cardImageResource)
val engine = CoinEngineFactory.Create(mCard!!.blockchain)
val visibleFlag = engine?.InOutPutVisible() ?: true
val engine = CoinEngineFactory.create(card!!.blockchain)
val visibleFlag = engine?.inOutPutVisible() ?: true
try {
ivQR.setImageBitmap(UtilHelper.generateQrCode(engine!!.getShareWalletURI(mCard).toString()))
ivQR.setImageBitmap(UtilHelper.generateQrCode(engine!!.getShareWalletUri(card).toString()))
} catch (e: WriterException) {
e.printStackTrace()
}
updateViews()
if (!mCard!!.hasBalanceInfo()) {
if (!card!!.hasBalanceInfo()) {
srlLoadedWallet!!.isRefreshing = true
srlLoadedWallet!!.postDelayed({ this.refresh() }, 1000)
}
if ((mCard!!.isOnlineVerified == null || !mCard!!.isOnlineVerified) && onlineVerifyTask == null) {
if ((card!!.isOnlineVerified == null || !card!!.isOnlineVerified) && onlineVerifyTask == null) {
onlineVerifyTask = OnlineVerifyTask()
onlineVerifyTask!!.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, VerificationServerProtocol.Verify.prepare(mCard))
onlineVerifyTask!!.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, VerificationServerProtocol.Verify.prepare(card))
}
startVerify(lastTag)
tvWallet.text = mCard!!.wallet
tvWallet.text = card!!.wallet
// set listeners
srlLoadedWallet!!.setOnRefreshListener { this.refresh() }
btnLookup.setOnClickListener {
val engineClick = CoinEngineFactory.Create(mCard!!.blockchain)
val browserIntent = Intent(Intent.ACTION_VIEW, engineClick!!.getShareWalletURIExplorer(mCard))
val engineClick = CoinEngineFactory.create(card!!.blockchain)
val browserIntent = Intent(Intent.ACTION_VIEW, engineClick!!.getShareWalletUriExplorer(card))
startActivity(browserIntent)
}
@ -176,7 +176,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
btnLoad.setOnClickListener {
try {
val intent = Intent(Intent.ACTION_VIEW, CoinEngineFactory.Create(mCard!!.blockchain)!!.getShareWalletURI(mCard))
val intent = Intent(Intent.ACTION_VIEW, CoinEngineFactory.create(card!!.blockchain)!!.getShareWalletUri(card))
intent.addCategory(Intent.CATEGORY_DEFAULT)
startActivity(intent)
} catch (e: ActivityNotFoundException) {
@ -197,22 +197,22 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
btnExtract.setOnClickListener {
if (!mCard!!.hasBalanceInfo()) {
if (!card!!.hasBalanceInfo()) {
showSingleToast(R.string.cannot_obtain_data_from_blockchain)
} else if (!engine!!.IsBalanceNotZero(mCard))
} else if (!engine!!.isBalanceNotZero(card))
showSingleToast(R.string.wallet_empty)
else if (!engine.IsBalanceAlterNotZero(mCard))
else if (!engine.isBalanceAlterNotZero(card))
showSingleToast(R.string.not_enough_funds)
else if (engine.AwaitingConfirmation(mCard))
else if (engine.awaitingConfirmation(card))
showSingleToast(R.string.please_wait_while_previous)
else if (!engine.CheckUnspentTransaction(mCard))
else if (!engine.checkUnspentTransaction(card))
showSingleToast(R.string.please_wait_for_confirmation)
else if (mCard!!.remainingSignatures == 0)
else if (card!!.remainingSignatures == 0)
showSingleToast(R.string.card_has_no_remaining_signature)
else {
val intent = Intent(context, PreparePaymentActivity::class.java)
intent.putExtra("UID", mCard!!.uid)
intent.putExtra("Card", mCard!!.asBundle)
intent.putExtra("UID", card!!.uid)
intent.putExtra("Card", card!!.asBundle)
startActivityForResult(intent, REQUEST_CODE_SEND_PAYMENT)
}
}
@ -249,8 +249,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
if (data.extras != null && data.extras!!.containsKey("confirmPIN")) {
val intent = Intent(context, PinRequestActivity::class.java)
intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
intent.putExtra("UID", mCard!!.uid)
intent.putExtra("Card", mCard!!.asBundle)
intent.putExtra("UID", card!!.uid)
intent.putExtra("Card", card!!.asBundle)
newPIN = data.getStringExtra("newPIN")
startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
} else {
@ -266,8 +266,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
if (data.extras != null && data.extras!!.containsKey("confirmPIN2")) {
val intent = Intent(context, PinRequestActivity::class.java)
intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
intent.putExtra("UID", mCard!!.uid)
intent.putExtra("Card", mCard!!.asBundle)
intent.putExtra("UID", card!!.uid)
intent.putExtra("Card", card!!.asBundle)
newPIN2 = data.getStringExtra("newPIN2")
startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
} else {
@ -280,7 +280,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN -> if (resultCode == Activity.RESULT_OK) {
if (newPIN == "")
newPIN = mCard!!.pin
newPIN = card!!.pin
if (newPIN2 == "")
newPIN2 = PINStorage.getPIN2()
@ -299,8 +299,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
REQUEST_CODE_SWAP_PIN -> if (resultCode == Activity.RESULT_OK) {
if (data == null) {
data = Intent()
data.putExtra("UID", mCard!!.uid)
data.putExtra("Card", mCard!!.asBundle)
data.putExtra("UID", card!!.uid)
data.putExtra("Card", card!!.asBundle)
data.putExtra("modification", "delete")
} else
data.putExtra("modification", "update")
@ -312,34 +312,34 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
} else {
if (data != null && data.extras != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
val updatedCard = TangemCard(data.getStringExtra("UID"))
updatedCard.LoadFromBundle(data.getBundleExtra("Card"))
mCard = updatedCard
updatedCard.loadFromBundle(data.getBundleExtra("Card"))
card = updatedCard
}
if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) {
requestPIN2Count++
val intent = Intent(context, PinRequestActivity::class.java)
intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
intent.putExtra("UID", mCard!!.uid)
intent.putExtra("Card", mCard!!.asBundle)
intent.putExtra("UID", card!!.uid)
intent.putExtra("Card", card!!.asBundle)
startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
return
} else {
if (data != null && data.extras!!.containsKey("message")) {
mCard!!.error = data.getStringExtra("message")
card!!.error = data.getStringExtra("message")
}
}
}
REQUEST_CODE_REQUEST_PIN2_FOR_PURGE -> if (resultCode == Activity.RESULT_OK) {
val intent = Intent(context, PurgeActivity::class.java)
intent.putExtra("UID", mCard!!.uid)
intent.putExtra("Card", mCard!!.asBundle)
intent.putExtra("UID", card!!.uid)
intent.putExtra("Card", card!!.asBundle)
startActivityForResult(intent, REQUEST_CODE_PURGE)
}
REQUEST_CODE_PURGE -> if (resultCode == Activity.RESULT_OK) {
if (data == null) {
data = Intent()
data.putExtra("UID", mCard!!.uid)
data.putExtra("Card", mCard!!.asBundle)
data.putExtra("UID", card!!.uid)
data.putExtra("Card", card!!.asBundle)
data.putExtra("modification", "delete")
} else {
data.putExtra("modification", "update")
@ -351,20 +351,20 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
} else {
if (data != null && data.extras != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
val updatedCard = TangemCard(data.getStringExtra("UID"))
updatedCard.LoadFromBundle(data.getBundleExtra("Card"))
mCard = updatedCard
updatedCard.loadFromBundle(data.getBundleExtra("Card"))
card = updatedCard
}
if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) {
requestPIN2Count++
val intent = Intent(context, PinRequestActivity::class.java)
intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
intent.putExtra("UID", mCard!!.uid)
intent.putExtra("Card", mCard!!.asBundle)
intent.putExtra("UID", card!!.uid)
intent.putExtra("Card", card!!.asBundle)
startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_PURGE)
return
} else {
if (data != null && data.extras!!.containsKey("message")) {
mCard!!.error = data.getStringExtra("message")
card!!.error = data.getStringExtra("message")
}
}
updateViews()
@ -373,21 +373,21 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
if (resultCode == Activity.RESULT_OK) {
srlLoadedWallet!!.postDelayed({ this.refresh() }, 10000)
srlLoadedWallet!!.isRefreshing = true
mCard!!.clearInfo()
card!!.clearInfo()
updateViews()
}
if (data != null && data.extras != null) {
if (data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
val updatedCard = TangemCard(data.getStringExtra("UID"))
updatedCard.LoadFromBundle(data.getBundleExtra("Card"))
mCard = updatedCard
updatedCard.loadFromBundle(data.getBundleExtra("Card"))
card = updatedCard
}
if (data.extras!!.containsKey("message")) {
if (resultCode == Activity.RESULT_OK) {
mCard!!.message = data.getStringExtra("message")
card!!.message = data.getStringExtra("message")
} else {
mCard!!.error = data.getStringExtra("message")
card!!.error = data.getStringExtra("message")
}
}
updateViews()
@ -398,111 +398,111 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
fun refresh() {
srlLoadedWallet!!.isRefreshing = true
mCard!!.clearInfo()
mCard!!.error = null
mCard!!.message = null
card!!.clearInfo()
card!!.error = null
card!!.message = null
val needResendTX = LastSignStorage.getNeedTxSend(mCard!!.wallet)
val needResendTX = LastSignStorage.getNeedTxSend(card!!.wallet)
updateViews()
val engine = CoinEngineFactory.Create(mCard!!.blockchain)
val engine = CoinEngineFactory.create(card!!.blockchain)
if ((mCard!!.isOnlineVerified == null || !mCard!!.isOnlineVerified) && onlineVerifyTask == null) {
if ((card!!.isOnlineVerified == null || !card!!.isOnlineVerified) && onlineVerifyTask == null) {
onlineVerifyTask = OnlineVerifyTask()
onlineVerifyTask!!.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, VerificationServerProtocol.Verify.prepare(mCard))
onlineVerifyTask!!.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, VerificationServerProtocol.Verify.prepare(card))
}
if (mCard!!.blockchain == Blockchain.Bitcoin || mCard!!.blockchain == Blockchain.BitcoinTestNet) {
if (card!!.blockchain == Blockchain.Bitcoin || card!!.blockchain == Blockchain.BitcoinTestNet) {
val data = SharedData(SharedData.COUNT_REQUEST)
mCard!!.resetFailedBalanceRequestCounter()
mCard!!.setIsBalanceEqual(true)
card!!.resetFailedBalanceRequestCounter()
card!!.setIsBalanceEqual(true)
for (i in 0 until data.allRequest) {
val nodeAddress = engine!!.GetNextNode(mCard)
val nodePort = engine.GetNextNodePort(mCard)
val nodeAddress = engine!!.getNextNode(card)
val nodePort = engine.getNextNodePort(card)
// check balance
val connectTaskEx = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort, data)
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(mCard!!.wallet))
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(card!!.wallet))
// list unspent input
val updateWalletInfoTask = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort, data)
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(mCard!!.wallet))
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(card!!.wallet))
}
// course request
val taskRate = RateInfoTask(this@LoadedWallet)
val rate = ExchangeRequest.GetRate(mCard!!.wallet, "bitcoin", "bitcoin")
val rate = ExchangeRequest.GetRate(card!!.wallet, "bitcoin", "bitcoin")
taskRate.execute(rate)
} else if (mCard!!.blockchain == Blockchain.BitcoinCash || mCard!!.blockchain == Blockchain.BitcoinCashTestNet) {
mCard!!.resetFailedBalanceRequestCounter()
} else if (card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) {
card!!.resetFailedBalanceRequestCounter()
val data = SharedData(SharedData.COUNT_REQUEST)
mCard!!.setIsBalanceEqual(true)
card!!.setIsBalanceEqual(true)
for (i in 0 until data.allRequest) {
val nodeAddress = engine!!.GetNextNode(mCard)
val nodePort = engine.GetNextNodePort(mCard)
val nodeAddress = engine!!.getNextNode(card)
val nodePort = engine.getNextNodePort(card)
// check balance
val connectTaskEx = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort, data)
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(mCard!!.wallet))
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(card!!.wallet))
}
val nodeAddress = engine!!.GetNode(mCard)
val nodePort = engine.GetNodePort(mCard)
val nodeAddress = engine!!.getNode(card)
val nodePort = engine.getNodePort(card)
// list unspent input
val updateWalletInfoTask = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort, data)
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(mCard!!.wallet))
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(card!!.wallet))
// course request
val taskRate = RateInfoTask(this@LoadedWallet)
val rate = ExchangeRequest.GetRate(mCard!!.wallet, "bitcoin-cash", "bitcoin-cash")
val rate = ExchangeRequest.GetRate(card!!.wallet, "bitcoin-cash", "bitcoin-cash")
taskRate.execute(rate)
} else if (mCard!!.blockchain == Blockchain.Ethereum || mCard!!.blockchain == Blockchain.EthereumTestNet) {
val updateETH = ETHRequestTask(this@LoadedWallet, mCard!!.blockchain)
val reqETH = InfuraRequest.GetBalance(mCard!!.wallet)
} else if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet) {
val updateETH = ETHRequestTask(this@LoadedWallet, card!!.blockchain)
val reqETH = InfuraRequest.GetBalance(card!!.wallet)
reqETH.id = 67
reqETH.setBlockchain(mCard!!.blockchain)
reqETH.setBlockchain(card!!.blockchain)
val reqNonce = InfuraRequest.GetOutTransactionCount(mCard!!.wallet)
val reqNonce = InfuraRequest.GetOutTransactionCount(card!!.wallet)
reqNonce.id = 67
reqNonce.setBlockchain(mCard!!.blockchain)
reqNonce.setBlockchain(card!!.blockchain)
updateETH.execute(reqETH, reqNonce)
// course request
val taskRate = RateInfoTask(this@LoadedWallet)
val rate = ExchangeRequest.GetRate(mCard!!.wallet, "ethereum", "ethereum")
val rate = ExchangeRequest.GetRate(card!!.wallet, "ethereum", "ethereum")
taskRate.execute(rate)
} else if (mCard!!.blockchain == Blockchain.Token) {
val updateETH = ETHRequestTask(this@LoadedWallet, mCard!!.blockchain)
val reqETH = InfuraRequest.GetTokenBalance(mCard!!.wallet, engine!!.GetContractAddress(mCard), engine.GetTokenDecimals(mCard))
} else if (card!!.blockchain == Blockchain.Token) {
val updateETH = ETHRequestTask(this@LoadedWallet, card!!.blockchain)
val reqETH = InfuraRequest.GetTokenBalance(card!!.wallet, engine!!.getContractAddress(card), engine.getTokenDecimals(card))
reqETH.id = 67
reqETH.setBlockchain(mCard!!.blockchain)
reqETH.setBlockchain(card!!.blockchain)
val reqBalance = InfuraRequest.GetBalance(mCard!!.wallet)
val reqBalance = InfuraRequest.GetBalance(card!!.wallet)
reqBalance.id = 67
reqBalance.setBlockchain(mCard!!.blockchain)
reqBalance.setBlockchain(card!!.blockchain)
val reqNonce = InfuraRequest.GetOutTransactionCount(mCard!!.wallet)
val reqNonce = InfuraRequest.GetOutTransactionCount(card!!.wallet)
reqNonce.id = 67
reqNonce.setBlockchain(mCard!!.blockchain)
reqNonce.setBlockchain(card!!.blockchain)
updateETH.execute(reqETH, reqNonce, reqBalance)
// course request
val taskRate = RateInfoTask(this@LoadedWallet)
val rate = ExchangeRequest.GetRate(mCard!!.wallet, "ethereum", "ethereum")
val rate = ExchangeRequest.GetRate(card!!.wallet, "ethereum", "ethereum")
taskRate.execute(rate)
}
if (needResendTX)
sendTransaction(LastSignStorage.getTxForSend(mCard!!.wallet))
sendTransaction(LastSignStorage.getTxForSend(card!!.wallet))
}
override fun onTagDiscovered(tag: Tag) {
@ -511,8 +511,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
fun prepareResultIntent(): Intent {
val data = Intent()
data.putExtra("UID", mCard!!.uid)
data.putExtra("Card", mCard!!.asBundle)
data.putExtra("UID", card!!.uid)
data.putExtra("Card", card!!.asBundle)
return data
}
@ -586,65 +586,63 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
timerHideErrorAndMessage = null
}
if (mCard!!.error == null || mCard!!.error.isEmpty()) {
if (card!!.error == null || card!!.error.isEmpty()) {
tvError.visibility = View.GONE
tvError.text = ""
} else {
tvError.visibility = View.VISIBLE
tvError.text = mCard!!.error
tvError.text = card!!.error
}
val needResendTX = LastSignStorage.getNeedTxSend(mCard!!.wallet)
val needResendTX = LastSignStorage.getNeedTxSend(card!!.wallet)
if ((mCard!!.message == null || mCard!!.message.isEmpty()) && !needResendTX) {
if ((card!!.message == null || card!!.message.isEmpty()) && !needResendTX) {
tvMessage!!.text = ""
tvMessage!!.visibility = View.GONE
} else {
if (needResendTX) {
} else {
tvMessage!!.text = mCard!!.message
tvMessage!!.text = card!!.message
}
tvMessage!!.visibility = View.VISIBLE
}
val engine = CoinEngineFactory.Create(mCard!!.blockchain)
val engine = CoinEngineFactory.create(card!!.blockchain)
if (mCard!!.blockchain == Blockchain.Bitcoin || mCard!!.blockchain == Blockchain.BitcoinTestNet) {
if (card!!.blockchain == Blockchain.Bitcoin || card!!.blockchain == Blockchain.BitcoinTestNet) {
val validator = BalanceValidator()
validator.Check(mCard)
validator.Check(card)
tvBalanceLine1.text = validator.GetFirstLine()
tvBalanceLine2.text = validator.GetSecondLine()
tvBalanceLine1.setTextColor(ContextCompat.getColor(context!!, validator.GetColor()))
}
if (engine!!.HasBalanceInfo(mCard) || mCard!!.offlineBalance == null) {
if (mCard!!.blockchain == Blockchain.Token) {
val html = Html.fromHtml(engine.GetBalanceWithAlter(mCard))
if (engine!!.hasBalanceInfo(card) || card!!.offlineBalance == null) {
if (card!!.blockchain == Blockchain.Token) {
val html = Html.fromHtml(engine.getBalanceWithAlter(card))
tvBalance.text = html
} else {
tvBalance.text = engine.GetBalanceWithAlter(mCard)
}
} else
tvBalance.text = engine.getBalanceWithAlter(card)
} else {
val offlineAmount = engine.ConvertByteArrayToAmount(mCard, mCard!!.offlineBalance)
if (mCard!!.blockchain == Blockchain.Token) {
val offlineAmount = engine.convertByteArrayToAmount(card, card!!.offlineBalance)
if (card!!.blockchain == Blockchain.Token) {
tvBalance.setText(R.string.not_implemented)
} else {
tvBalance.text = engine.GetAmountDescription(mCard, offlineAmount)
}
} else
tvBalance.text = engine.getAmountDescription(card, offlineAmount)
}
tvWallet.text = mCard!!.wallet
tvWallet.text = card!!.wallet
tvBlockchain.text = mCard!!.blockchainName
tvBlockchain.text = card!!.blockchainName
btnExtract!!.isEnabled = mCard!!.hasBalanceInfo()
btnExtract!!.isEnabled = card!!.hasBalanceInfo()
mCard!!.error = null
mCard!!.message = null
card!!.error = null
card!!.message = null
} catch (e: Exception) {
e.printStackTrace()
@ -664,7 +662,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err))
val uid = tag!!.id
val sUID = Util.byteArrayToHexString(uid)
if (mCard!!.uid != sUID) {
if (card!!.uid != sUID) {
// Log.d(TAG, "Invalid UID: $sUID")
nfcManager!!.ignoreTag(isoDep.tag)
return
@ -678,7 +676,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
isoDep.timeout = 65000
}
verifyCardTask = VerifyCardTask(context, mCard, nfcManager, isoDep, this)
verifyCardTask = VerifyCardTask(context, card, nfcManager, isoDep, this)
verifyCardTask!!.start()
} catch (e: Exception) {
@ -688,7 +686,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
private fun doShareWallet(useURI: Boolean) {
if (useURI) {
val txtShare = CoinEngineFactory.Create(mCard!!.blockchain)!!.getShareWalletURI(mCard).toString()
val txtShare = CoinEngineFactory.create(card!!.blockchain)!!.getShareWalletUri(card).toString()
val intent = Intent(Intent.ACTION_SEND)
intent.type = "text/plain"
intent.putExtra(Intent.EXTRA_SUBJECT, "Wallet address")
@ -712,7 +710,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
Toast.makeText(context, R.string.copied_clipboard, Toast.LENGTH_LONG).show()
}
} else {
val txtShare = mCard!!.wallet
val txtShare = card!!.wallet
val clipboard = activity!!.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
clipboard.primaryClip = ClipData.newPlainText(txtShare, txtShare)
Toast.makeText(context, R.string.copied_clipboard, Toast.LENGTH_LONG).show()
@ -720,32 +718,32 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
private fun sendTransaction(tx: String) {
val engine = CoinEngineFactory.Create(mCard!!.blockchain)
if (mCard!!.blockchain == Blockchain.Ethereum || mCard!!.blockchain == Blockchain.EthereumTestNet || mCard!!.blockchain == Blockchain.Token) {
val task = ETHRequestTask(this@LoadedWallet, mCard!!.blockchain)
val req = InfuraRequest.SendTransaction(mCard!!.wallet, tx)
val engine = CoinEngineFactory.create(card!!.blockchain)
if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet || card!!.blockchain == Blockchain.Token) {
val task = ETHRequestTask(this@LoadedWallet, card!!.blockchain)
val req = InfuraRequest.SendTransaction(card!!.wallet, tx)
req.id = 67
req.setBlockchain(mCard!!.blockchain)
req.setBlockchain(card!!.blockchain)
task.execute(req)
} else if (mCard!!.blockchain == Blockchain.Bitcoin || mCard!!.blockchain == Blockchain.BitcoinTestNet) {
val nodeAddress = engine!!.GetNode(mCard)
val nodePort = engine.GetNodePort(mCard)
} else if (card!!.blockchain == Blockchain.Bitcoin || card!!.blockchain == Blockchain.BitcoinTestNet) {
val nodeAddress = engine!!.getNode(card)
val nodePort = engine.getNodePort(card)
val connectTask = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort)
connectTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.Broadcast(mCard!!.wallet, tx))
} else if (mCard!!.blockchain == Blockchain.BitcoinCash || mCard!!.blockchain == Blockchain.BitcoinCashTestNet) {
val nodeAddress = engine!!.GetNode(mCard)
val nodePort = engine.GetNodePort(mCard)
connectTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.Broadcast(card!!.wallet, tx))
} else if (card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) {
val nodeAddress = engine!!.getNode(card)
val nodePort = engine.getNodePort(card)
val connectTask = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort)
connectTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.Broadcast(mCard!!.wallet, tx))
connectTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.Broadcast(card!!.wallet, tx))
}
}
private fun startSwapPINActivity() {
val intent = Intent(context, PinSwapActivity::class.java)
intent.putExtra("UID", mCard!!.uid)
intent.putExtra("Card", mCard!!.asBundle)
intent.putExtra("UID", card!!.uid)
intent.putExtra("Card", card!!.asBundle)
intent.putExtra("newPIN", newPIN)
intent.putExtra("newPIN2", newPIN2)
startActivityForResult(intent, REQUEST_CODE_SWAP_PIN)

View file

@ -55,7 +55,7 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback {
nfcManager = NfcManager(activity, this)
mCard = TangemCard(activity!!.intent.getStringExtra("UID"))
mCard!!.LoadFromBundle(activity!!.intent.extras!!.getBundle("Card"))
mCard!!.loadFromBundle(activity!!.intent.extras!!.getBundle("Card"))
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@ -163,7 +163,7 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback {
} else {
if (data != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
val updatedCard = TangemCard(data.getStringExtra("UID"))
updatedCard.LoadFromBundle(data.getBundleExtra("Card"))
updatedCard.loadFromBundle(data.getBundleExtra("Card"))
mCard = updatedCard
}
if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) {
@ -201,7 +201,7 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback {
} else {
if (data != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
val updatedCard = TangemCard(data.getStringExtra("UID"))
updatedCard.LoadFromBundle(data.getBundleExtra("Card"))
updatedCard.loadFromBundle(data.getBundleExtra("Card"))
mCard = updatedCard
}
if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) {
@ -229,7 +229,7 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback {
if (data != null) {
if (data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
val updatedCard = TangemCard(data.getStringExtra("UID"))
updatedCard.LoadFromBundle(data.getBundleExtra("Card"))
updatedCard.loadFromBundle(data.getBundleExtra("Card"))
mCard = updatedCard
}
if (data.extras!!.containsKey("message")) {
@ -483,10 +483,10 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback {
private fun doPurge() {
requestPIN2Count = 0
val engine = CoinEngineFactory.Create(mCard!!.blockchain)
val engine = CoinEngineFactory.create(mCard!!.blockchain)
if (!mCard!!.hasBalanceInfo()) {
return
} else if (engine != null && engine.IsBalanceNotZero(mCard)) {
} else if (engine != null && engine.isBalanceNotZero(mCard)) {
Toast.makeText(context, R.string.cannot_erase_wallet_with_non_zero_balance, Toast.LENGTH_LONG).show()
return
}