Updated on 2026-08-14
This commit is contained in:
parent
57a20d3cfc
commit
56fc4cad76
27 changed files with 470 additions and 478 deletions
|
|
@ -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() {
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue