Updated on 2026-08-14

This commit is contained in:
Tangem 2018-10-07 16:47:44 +03:00
parent bd1779ab3c
commit 1d0e1c276e
4 changed files with 48 additions and 17 deletions

View file

@ -260,7 +260,6 @@ public class ServerApiHelper {
}
public void requestArtwork(String artworkId, Date updateDate, TangemCard card) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);

View file

@ -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))

View file

@ -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
}