Updated on 2026-08-14

This commit is contained in:
Tangem 2018-10-09 17:40:45 +03:00
parent a6e6ffab96
commit ff22469cde
20 changed files with 12 additions and 630 deletions

View file

@ -96,18 +96,6 @@ public class ElectrumRequest {
return request;
}
public static ElectrumRequest getHeader(String wallet, String height) {
ElectrumRequest request = new ElectrumRequest();
try {
request.walletAddress = wallet;
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetHeader + "\", \"params\":[\"" + height + "\"] }");
} catch (JSONException e) {
e.printStackTrace();
request.error = e.toString();
}
return request;
}
public static ElectrumRequest listUnspent(String wallet) {
ElectrumRequest request = new ElectrumRequest();
try {
@ -133,18 +121,6 @@ public class ElectrumRequest {
return request;
}
public static ElectrumRequest listHistory(String wallet) {
ElectrumRequest request = new ElectrumRequest();
try {
request.walletAddress = wallet;
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetHistory + "\", \"params\":[\"" + wallet + "\"] }");
} catch (JSONException e) {
e.printStackTrace();
request.error = e.toString();
}
return request;
}
public static ElectrumRequest getTransaction(String wallet, String tx_hash) {
ElectrumRequest request = new ElectrumRequest();
try {

View file

@ -5,7 +5,6 @@ import android.util.Log;
import com.tangem.data.network.request.InfuraRequest;
import com.tangem.data.network.task.InfuraTask;
import com.tangem.domain.wallet.Blockchain;
import com.tangem.domain.wallet.LastSignStorage;
import com.tangem.presentation.fragment.LoadedWallet;
import org.json.JSONException;
@ -92,7 +91,6 @@ public class ETHRequestTask extends InfuraTask {
JSONObject msg = request.getAnswer();
JSONObject err = msg.getJSONObject("error");
hashTX = err.getString("message");
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), hashTX);
return;
}
@ -100,8 +98,6 @@ public class ETHRequestTask extends InfuraTask {
hashTX = hashTX.substring(2);
}
BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ
LastSignStorage.setTxWasSend(loadedWallet.getCard().getWallet());
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), "");
Log.e("TX_RESULT", hashTX);

View file

@ -1,18 +1,14 @@
package com.tangem.data.network.task.loaded_wallet;
import android.os.AsyncTask;
import android.util.Log;
import com.tangem.data.network.request.ElectrumRequest;
import com.tangem.data.network.task.ElectrumTask;
import com.tangem.domain.wallet.BitcoinException;
import com.tangem.domain.wallet.CoinEngine;
import com.tangem.domain.wallet.CoinEngineFactory;
import com.tangem.domain.wallet.LastSignStorage;
import com.tangem.domain.wallet.SharedData;
import com.tangem.domain.wallet.TangemCard;
import com.tangem.presentation.fragment.LoadedWallet;
import com.tangem.util.BTCUtils;
import org.json.JSONArray;
import org.json.JSONException;
@ -20,8 +16,6 @@ import org.json.JSONObject;
import java.lang.ref.WeakReference;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
public class UpdateWalletInfoTask extends ElectrumTask {
@ -103,17 +97,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
else if (request.isMethod(ElectrumRequest.METHOD_SendTransaction)) {
try {
String hashTX = request.getResultString();
try {
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.getCard().getWallet());
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), "");
// Log.e("TX_RESULT", hashTX);
} catch (Exception e) {
engine.switchNode(loadedWallet.getCard());
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
@ -150,7 +133,7 @@ public class UpdateWalletInfoTask extends ElectrumTask {
engine.switchNode(loadedWallet.getCard());
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(loadedWallet, nodeAddress, nodePort);
// loadedWallet.updateTasks.add(updateWalletInfoTask);
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getHeader(mWalletAddress, String.valueOf(height)), ElectrumRequest.getTransaction(mWalletAddress, hash));
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getTransaction(mWalletAddress, hash));
}
}
} catch (JSONException e) {
@ -159,61 +142,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
}
}
// get history
else if (request.isMethod(ElectrumRequest.METHOD_GetHistory)) {
try {
String mWalletAddress = request.getParams().getString(0);
JSONArray jsHistoryArray = request.getResultArray();
try {
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.getCard().getHistoryTransactions().add(trHistory);
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
for (int i = 0; i < jsHistoryArray.length(); i++) {
JSONObject jsUnspent = jsHistoryArray.getJSONObject(i);
Integer height = jsUnspent.getInt("height");
String hash = jsUnspent.getString("tx_hash");
if (height != -1) {
String nodeAddress = engine.getNode(loadedWallet.getCard());
int nodePort = engine.getNodePort(loadedWallet.getCard());
engine.switchNode(loadedWallet.getCard());
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(loadedWallet, nodeAddress, nodePort);
// loadedWallet.updateTasks.add(updateWalletInfoTask);
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getHeader(mWalletAddress, String.valueOf(height)), ElectrumRequest.getTransaction(mWalletAddress, hash));
}
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
}
// get header
else if (request.isMethod(ElectrumRequest.METHOD_GetHeader)) {
try {
JSONObject jsHeader = request.getResult();
try {
loadedWallet.getCard().getHaedersInfo();
loadedWallet.getCard().UpdateHeaderInfo(new TangemCard.HeaderInfo(jsHeader.getInt("block_height"), jsHeader.getInt("timestamp")));
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
}
// get transaction
else if (request.isMethod(ElectrumRequest.METHOD_GetTransaction)) {
try {
@ -224,27 +152,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
if (tx.txID.equals(txHash))
tx.Raw = raw;
}
List<TangemCard.HistoryTransaction> listHTx = loadedWallet.getCard().getHistoryTransactions();
for (TangemCard.HistoryTransaction tx : listHTx) {
if (tx.txID.equals(txHash)) {
tx.Raw = raw;
try {
ArrayList<byte[]> prevHashes = BTCUtils.getPrevTX(raw);
boolean isOur = false;
for (byte[] hash : prevHashes) {
String checkID = BTCUtils.toHex(hash);
for (TangemCard.HistoryTransaction txForCheck : listHTx) {
if (txForCheck.txID.equals(checkID))
isOur = true;
}
}
tx.isInput = !isOur;
} catch (BitcoinException e) {
e.printStackTrace();
}
Log.e("TX", raw);
}
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());

View file

@ -7,7 +7,6 @@ import com.tangem.data.network.task.ElectrumTask;
import com.tangem.domain.wallet.Blockchain;
import com.tangem.domain.wallet.CoinEngine;
import com.tangem.domain.wallet.CoinEngineFactory;
import com.tangem.domain.wallet.LastSignStorage;
import com.tangem.domain.wallet.SharedData;
import com.tangem.domain.wallet.TangemCard;
import com.tangem.presentation.activity.SendTransactionActivity;
@ -81,13 +80,9 @@ public class ConnectTask extends ElectrumTask {
String hashTX = request.getResultString();
try {
LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), hashTX);
if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) {
hashTX = hashTX.substring(2);
}
BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ
LastSignStorage.setTxWasSend(sendTransactionActivity.getCard().getWallet());
LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), "");
Log.e("TX_RESULT", hashTX);
sendTransactionActivity.finishWithSuccess();
} catch (Exception e) {

View file

@ -5,7 +5,6 @@ import android.util.Log;
import com.tangem.data.network.request.InfuraRequest;
import com.tangem.data.network.task.InfuraTask;
import com.tangem.domain.wallet.Blockchain;
import com.tangem.domain.wallet.LastSignStorage;
import com.tangem.presentation.activity.SendTransactionActivity;
import org.json.JSONException;
@ -41,7 +40,6 @@ public class ETHRequestTask extends InfuraTask {
JSONObject msg = request.getAnswer();
JSONObject err = msg.getJSONObject("error");
hashTX = err.getString("message");
LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), hashTX);
Log.e("Send_TX_Error:", hashTX);
sendTransactionActivity.finishWithError(hashTX);
return;
@ -51,9 +49,6 @@ public class ETHRequestTask extends InfuraTask {
if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) {
hashTX = hashTX.substring(2);
}
BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ
LastSignStorage.setTxWasSend(sendTransactionActivity.getCard().getWallet());
LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), "");
BigInteger nonce = sendTransactionActivity.getCard().getConfirmedTXCount();
nonce.add(BigInteger.valueOf(1));
sendTransactionActivity.getCard().setConfirmedTXCount(nonce);