Updated on 2026-08-14
This commit is contained in:
parent
a6e6ffab96
commit
ff22469cde
20 changed files with 12 additions and 630 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue