Updated on 2026-08-14
This commit is contained in:
parent
bd1779ab3c
commit
1d0e1c276e
4 changed files with 48 additions and 17 deletions
|
|
@ -11,7 +11,6 @@ import android.widget.Toast
|
|||
import com.tangem.data.network.ServerApiHelper
|
||||
import com.tangem.data.network.model.InfuraResponse
|
||||
import com.tangem.data.network.request.ElectrumRequest
|
||||
import com.tangem.data.network.task.send_transaction.ConnectTask
|
||||
import com.tangem.domain.cardReader.NfcManager
|
||||
import com.tangem.domain.wallet.Blockchain
|
||||
import com.tangem.domain.wallet.CoinEngineFactory
|
||||
|
|
@ -61,18 +60,50 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback
|
|||
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)
|
||||
val connectTask = ConnectTask(this@SendTransactionActivity, nodeAddress, nodePort, 3)
|
||||
connectTask.execute(ElectrumRequest.broadcast(card!!.wallet, tx))
|
||||
// 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))
|
||||
|
||||
requestElectrum(card!!, 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 = ConnectTask(this@SendTransactionActivity, nodeAddress, nodePort, 3)
|
||||
connectTask.execute(ElectrumRequest.broadcast(card!!.wallet, tx))
|
||||
// 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))
|
||||
|
||||
requestElectrum(card!!, ElectrumRequest.broadcast(card!!.wallet, tx))
|
||||
}
|
||||
|
||||
// request electrum listener
|
||||
serverApiHelper!!.setElectrumRequestData {
|
||||
if (it.isMethod(ElectrumRequest.METHOD_SendTransaction)) {
|
||||
try {
|
||||
var hashTX = it.resultString
|
||||
|
||||
try {
|
||||
LastSignStorage.setLastMessage(card!!.wallet, hashTX)
|
||||
if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) {
|
||||
hashTX = hashTX.substring(2)
|
||||
}
|
||||
val bigInt = BigInteger(hashTX, 16) //TODO: очень плохой способ
|
||||
LastSignStorage.setTxWasSend(card!!.wallet)
|
||||
LastSignStorage.setLastMessage(card!!.wallet, "")
|
||||
Log.e("TX_RESULT", hashTX)
|
||||
finishWithSuccess()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
// finishWithError(hashTX)
|
||||
requestElectrum(card!!, ElectrumRequest.broadcast(card!!.wallet, tx))
|
||||
}
|
||||
|
||||
} catch (e: JSONException) {
|
||||
e.printStackTrace()
|
||||
// finishWithError(e.toString())
|
||||
requestElectrum(card!!, ElectrumRequest.broadcast(card!!.wallet, tx))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// request eth sendRawTransaction
|
||||
|
|
@ -150,6 +181,10 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback
|
|||
serverApiHelper!!.infura(method, 67, card!!.wallet, contract, tx)
|
||||
}
|
||||
|
||||
private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) {
|
||||
serverApiHelper!!.electrumRequestData(card, electrumRequest)
|
||||
}
|
||||
|
||||
fun finishWithError(message: String) {
|
||||
val intent = Intent()
|
||||
intent.putExtra("message", String.format(getString(R.string.try_again_failed_to_send_transaction), message))
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
|
||||
if (it.isMethod(ElectrumRequest.METHOD_ListUnspent)) {
|
||||
try {
|
||||
val mWalletAddress = it.params.getString(0)
|
||||
val walletAddress = it.params.getString(0)
|
||||
val jsUnspentArray = it.resultArray
|
||||
try {
|
||||
card!!.unspentTransactions.clear()
|
||||
|
|
@ -250,7 +250,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
}
|
||||
} catch (e: JSONException) {
|
||||
e.printStackTrace()
|
||||
engine.switchNode(card)
|
||||
}
|
||||
|
||||
for (i in 0 until jsUnspentArray.length()) {
|
||||
|
|
@ -265,13 +264,12 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
// updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getHeader(mWalletAddress, height.toString()), ElectrumRequest.getTransaction(mWalletAddress, hash))
|
||||
|
||||
|
||||
requestElectrum(card!!, ElectrumRequest.getHeader(mWalletAddress, height.toString()))
|
||||
requestElectrum(card!!, ElectrumRequest.getTransaction(mWalletAddress, hash))
|
||||
requestElectrum(card!!, ElectrumRequest.getHeader(walletAddress, height.toString()))
|
||||
requestElectrum(card!!, ElectrumRequest.getTransaction(walletAddress, hash))
|
||||
}
|
||||
}
|
||||
} catch (e: JSONException) {
|
||||
e.printStackTrace()
|
||||
engine.switchNode(card)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -348,7 +346,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
|
|||
updateViews()
|
||||
val result = it.results!![0]
|
||||
if (result.error != null) {
|
||||
// Log.e(TAG, "Can't verify card: ${result.error}")
|
||||
card!!.isOnlineVerified = false
|
||||
return@setCardVerifyAndGetInfoListener
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue