Updated on 2026-08-14
This commit is contained in:
parent
8780aca5e1
commit
39e8a00638
6 changed files with 80 additions and 31 deletions
|
|
@ -115,11 +115,13 @@ public class ServerApiHelper {
|
|||
* eth_getBalance
|
||||
* eth_getTransactionCount
|
||||
* eth_call
|
||||
* eth_sendRawTransaction
|
||||
* eth_gasPrice
|
||||
*/
|
||||
public static final String INFURA_ETH_GET_BALANCE = "eth_getBalance";
|
||||
public static final String INFURA_ETH_GET_TRANSACTION_COUNT = "eth_getTransactionCount";
|
||||
public static final String INFURA_ETH_CALL = "eth_call";
|
||||
public static final String INFURA_ETH_SEND_RAW_TRANSACTION = "eth_sendRawTransaction";
|
||||
public static final String INFURA_ETH_GAS_PRICE = "eth_gasPrice";
|
||||
private InfuraBodyListener infuraBodyListener;
|
||||
|
||||
|
|
@ -131,7 +133,7 @@ public class ServerApiHelper {
|
|||
infuraBodyListener = listener;
|
||||
}
|
||||
|
||||
public void infura(String method, int id, String wallet, String contract) {
|
||||
public void infura(String method, int id, String wallet, String contract, String tx) {
|
||||
Retrofit retrofit = new Retrofit.Builder()
|
||||
.baseUrl(Server.ApiInfura.URL_INFURA)
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
|
|
@ -151,6 +153,10 @@ public class ServerApiHelper {
|
|||
infuraBody = new InfuraBody(method, new Object[]{new InfuraBody.EthCallParams("0x70a08231000000000000000000000000" + address, contract), "latest"}, id);
|
||||
break;
|
||||
|
||||
case INFURA_ETH_SEND_RAW_TRANSACTION:
|
||||
infuraBody = new InfuraBody(method, new String[]{tx}, id);
|
||||
break;
|
||||
|
||||
case INFURA_ETH_GAS_PRICE:
|
||||
infuraBody = new InfuraBody(method, id);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ public class InfuraBody {
|
|||
this.id = id;
|
||||
}
|
||||
|
||||
// body for eth getBalance, eth getTransactionCount, eth sendRawTransaction
|
||||
public InfuraBody(String method, String[] params, int id) {
|
||||
this.method = method;
|
||||
this.params = params;
|
||||
|
|
@ -36,4 +37,5 @@ public class InfuraBody {
|
|||
this.to = to;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -107,9 +107,9 @@ public class SignPaymentTask extends Thread {
|
|||
//LastSignStorage.setLastTX(mCard.getWallet(), txStr);
|
||||
|
||||
Intent intent = new Intent(mContext, SendTransactionActivity.class);
|
||||
intent.putExtra("UID", mCard.getUID());
|
||||
intent.putExtra("Card", mCard.getAsBundle());
|
||||
intent.putExtra("TX", txStr);
|
||||
intent.putExtra(SendTransactionActivity.EXTRA_UID, mCard.getUID());
|
||||
intent.putExtra(SendTransactionActivity.EXTRA_CARD, mCard.getAsBundle());
|
||||
intent.putExtra(SendTransactionActivity.EXTRA_TX, txStr);
|
||||
mContext.startActivityForResult(intent, SignPaymentActivity.REQUEST_CODE_SEND_PAYMENT);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,7 +105,8 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
|
|||
|
||||
if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet || card!!.blockchain == Blockchain.Token) {
|
||||
rgFee!!.isEnabled = false
|
||||
serverApiHelper!!.infura(ServerApiHelper.INFURA_ETH_GAS_PRICE, 67, card!!.wallet, "")
|
||||
|
||||
requestInfura(ServerApiHelper.INFURA_ETH_GAS_PRICE)
|
||||
|
||||
} else {
|
||||
rgFee!!.isEnabled = true
|
||||
|
|
@ -268,6 +269,10 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
|
|||
}
|
||||
}
|
||||
|
||||
private fun requestInfura(method: String) {
|
||||
serverApiHelper!!.infura(method, 67, card!!.wallet, "", "")
|
||||
}
|
||||
|
||||
public override fun onResume() {
|
||||
super.onResume()
|
||||
nfcManager!!.onResume()
|
||||
|
|
|
|||
|
|
@ -14,10 +14,17 @@ import com.tangem.data.network.task.send_transaction.ETHRequestTask
|
|||
import com.tangem.domain.wallet.Blockchain
|
||||
import com.tangem.domain.wallet.CoinEngineFactory
|
||||
import com.tangem.domain.wallet.TangemCard
|
||||
import com.tangem.presentation.fragment.LoadedWallet
|
||||
import com.tangem.wallet.R
|
||||
|
||||
class SendTransactionActivity : AppCompatActivity() {
|
||||
|
||||
companion object {
|
||||
const val EXTRA_UID: String = "UID"
|
||||
const val EXTRA_CARD: String = "Card"
|
||||
const val EXTRA_TX: String = "TX"
|
||||
}
|
||||
|
||||
var card: TangemCard? = null
|
||||
private var tx: String? = null
|
||||
private var progressBar: ProgressBar? = null
|
||||
|
|
@ -31,9 +38,9 @@ class SendTransactionActivity : AppCompatActivity() {
|
|||
progressBar = findViewById(R.id.progressBar)
|
||||
|
||||
val intent = intent
|
||||
card = TangemCard(getIntent().getStringExtra("UID"))
|
||||
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
|
||||
tx = intent.getStringExtra("TX")
|
||||
card = TangemCard(getIntent().getStringExtra(EXTRA_UID))
|
||||
card!!.loadFromBundle(intent.extras!!.getBundle(EXTRA_CARD))
|
||||
tx = intent.getStringExtra(EXTRA_TX)
|
||||
|
||||
val engine = CoinEngineFactory.create(card!!.blockchain)
|
||||
if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet || card!!.blockchain == Blockchain.Token) {
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ import com.tangem.util.UtilHelper
|
|||
import com.tangem.wallet.BuildConfig
|
||||
import com.tangem.wallet.R
|
||||
import kotlinx.android.synthetic.main.fr_loaded_wallet.*
|
||||
import org.json.JSONException
|
||||
import java.math.BigInteger
|
||||
import java.util.*
|
||||
import kotlin.concurrent.fixedRateTimer
|
||||
|
|
@ -272,7 +273,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
balanceCap = balanceCap.substring(2)
|
||||
val l = BigInteger(balanceCap, 16)
|
||||
val balance = l.toLong()
|
||||
|
||||
if (l.compareTo(BigInteger.ZERO) == 0) {
|
||||
card!!.blockchainID = Blockchain.Ethereum.id
|
||||
card!!.addTokenToBlockchainName()
|
||||
|
|
@ -280,13 +280,43 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
// refresh()
|
||||
return@setInfura
|
||||
}
|
||||
|
||||
card!!.setBalanceConfirmed(balance)
|
||||
card!!.balanceUnconfirmed = 0L
|
||||
card!!.decimalBalance = l.toString(10)
|
||||
|
||||
// Log.i("eth_call", balanceCap)
|
||||
}
|
||||
|
||||
if (method == ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION) {
|
||||
// try {
|
||||
// var hashTX: String
|
||||
// try {
|
||||
// val tmp = request.getResultString()
|
||||
// hashTX = tmp
|
||||
// } catch (e: JSONException) {
|
||||
// val msg = request.getAnswer()
|
||||
// val err = msg!!.getJSONObject("error")
|
||||
// hashTX = err.getString("message")
|
||||
// LastSignStorage.setLastMessage(card!!.wallet, hashTX)
|
||||
// return@setInfura
|
||||
// }
|
||||
//
|
||||
// if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) {
|
||||
// hashTX = hashTX.substring(2)
|
||||
// }
|
||||
// LastSignStorage.setTxWasSend(card!!.wallet)
|
||||
// LastSignStorage.setLastMessage(card!!.wallet, "")
|
||||
// Log.e("TX_RESULT", hashTX)
|
||||
//
|
||||
//
|
||||
// val nonce = card!!.GetConfirmTXCount()
|
||||
// nonce.add(BigInteger.valueOf(1))
|
||||
// card!!.setConfirmTXCount(nonce)
|
||||
// Log.e("TX_RESULT", hashTX)
|
||||
//
|
||||
// } catch (e: Exception) {
|
||||
// e.printStackTrace()
|
||||
// }
|
||||
}
|
||||
|
||||
updateViews()
|
||||
|
|
@ -294,7 +324,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
}
|
||||
|
||||
private fun requestInfura(method: String, contract: String) {
|
||||
serverApiHelper!!.infura(method, 67, card!!.wallet, contract)
|
||||
serverApiHelper!!.infura(method, 67, card!!.wallet, contract, LastSignStorage.getTxForSend(card!!.wallet))
|
||||
}
|
||||
|
||||
private fun requestCardVerify() {
|
||||
|
|
@ -704,22 +734,20 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
|
||||
// Ethereum
|
||||
else if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet) {
|
||||
|
||||
requestInfura(ServerApiHelper.INFURA_ETH_GET_BALANCE, "")
|
||||
requestInfura(ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT, "")
|
||||
|
||||
// val updateETH = ETHRequestTask(this@LoadedWallet, card!!.blockchain)
|
||||
|
||||
//
|
||||
// val reqETH = InfuraRequest.GetBalance(card!!.wallet)
|
||||
// reqETH.id = 67
|
||||
// reqETH.setBlockchain(card!!.blockchain)
|
||||
|
||||
//
|
||||
// val reqNonce = InfuraRequest.GetOutTransactionCount(card!!.wallet)
|
||||
// reqNonce.id = 67
|
||||
// reqNonce.setBlockchain(card!!.blockchain)
|
||||
|
||||
//
|
||||
// updateETH.execute(reqETH, reqNonce)
|
||||
// updateETH.execute(reqNonce)
|
||||
|
||||
requestInfura(ServerApiHelper.INFURA_ETH_GET_BALANCE, "")
|
||||
requestInfura(ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT, "")
|
||||
|
||||
requestRateInfo("ethereum")
|
||||
}
|
||||
|
|
@ -732,29 +760,27 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
// val reqETH = InfuraRequest.GetTokenBalance(card!!.wallet, engine!!.getContractAddress(card), engine.getTokenDecimals(card))
|
||||
// reqETH.id = 67
|
||||
// reqETH.setBlockchain(card!!.blockchain)
|
||||
//
|
||||
// val reqBalance = InfuraRequest.GetBalance(card!!.wallet)
|
||||
// reqBalance.id = 67
|
||||
// reqBalance.setBlockchain(card!!.blockchain)
|
||||
//
|
||||
// val reqNonce = InfuraRequest.GetOutTransactionCount(card!!.wallet)
|
||||
// reqNonce.id = 67
|
||||
// reqNonce.setBlockchain(card!!.blockchain)
|
||||
//
|
||||
// updateETH.execute(reqETH, reqNonce, reqBalance)
|
||||
|
||||
requestInfura(ServerApiHelper.INFURA_ETH_GET_BALANCE, "")
|
||||
requestInfura(ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT, "")
|
||||
requestInfura(ServerApiHelper.INFURA_ETH_CALL, engine.getContractAddress(card))
|
||||
|
||||
// val reqBalance = InfuraRequest.GetBalance(card!!.wallet)
|
||||
// reqBalance.id = 67
|
||||
// reqBalance.setBlockchain(card!!.blockchain)
|
||||
|
||||
// val reqNonce = InfuraRequest.GetOutTransactionCount(card!!.wallet)
|
||||
// reqNonce.id = 67
|
||||
// reqNonce.setBlockchain(card!!.blockchain)
|
||||
|
||||
// updateETH.execute(reqETH, reqNonce, reqBalance)
|
||||
// updateETH.execute(reqETH)
|
||||
|
||||
requestRateInfo("ethereum")
|
||||
}
|
||||
|
||||
if (needResendTX)
|
||||
sendTransaction(LastSignStorage.getTxForSend(card!!.wallet))
|
||||
|
||||
|
||||
}
|
||||
|
||||
fun prepareResultIntent(): Intent {
|
||||
|
|
@ -840,6 +866,9 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
req.id = 67
|
||||
req.setBlockchain(card!!.blockchain)
|
||||
task.execute(req)
|
||||
|
||||
// requestInfura(ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION, "")
|
||||
|
||||
} else if (card!!.blockchain == Blockchain.Bitcoin || card!!.blockchain == Blockchain.BitcoinTestNet) {
|
||||
val nodeAddress = engine!!.getNode(card)
|
||||
val nodePort = engine.getNodePort(card)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue