Updated on 2026-08-14
This commit is contained in:
parent
f22614ab8b
commit
fb4b20de61
6 changed files with 101 additions and 104 deletions
|
|
@ -23,7 +23,7 @@ public class ConnectTask extends ElectrumTask {
|
|||
private int remaining_attempts;
|
||||
|
||||
|
||||
private void CreateChildTask (TangemCard mCard, String tx, String error_message) {
|
||||
private void CreateChildTask(TangemCard mCard, String tx, String error_message) {
|
||||
|
||||
if (remaining_attempts > 0) {
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ public class ConnectTask extends ElectrumTask {
|
|||
} else if (mCard.getBlockchain() == Blockchain.BitcoinCash || mCard.getBlockchain() == Blockchain.BitcoinCashTestNet) {
|
||||
String nodeAddress = engine.GetNode(mCard);
|
||||
int nodePort = engine.GetNodePort(mCard);
|
||||
ConnectTask connectTask = new ConnectTask(reference.get(), nodeAddress, nodePort,remaining_attempts);
|
||||
ConnectTask connectTask = new ConnectTask(reference.get(), nodeAddress, nodePort, remaining_attempts);
|
||||
connectTask.execute(ElectrumRequest.Broadcast(mCard.getWallet(), tx));
|
||||
}
|
||||
|
||||
|
|
@ -49,7 +49,6 @@ public class ConnectTask extends ElectrumTask {
|
|||
}
|
||||
|
||||
|
||||
|
||||
public ConnectTask(SendTransactionActivity context, String host, int port, int attempts) {
|
||||
super(host, port);
|
||||
reference = new WeakReference<>(context);
|
||||
|
|
@ -82,38 +81,38 @@ public class ConnectTask extends ElectrumTask {
|
|||
String hashTX = request.getResultString();
|
||||
|
||||
try {
|
||||
LastSignStorage.setLastMessage(sendTransactionActivity.mCard.getWallet(), hashTX);
|
||||
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.mCard.getWallet());
|
||||
LastSignStorage.setLastMessage(sendTransactionActivity.mCard.getWallet(), "");
|
||||
LastSignStorage.setTxWasSend(sendTransactionActivity.getCard().getWallet());
|
||||
LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), "");
|
||||
Log.e("TX_RESULT", hashTX);
|
||||
sendTransactionActivity.finishWithSuccess();
|
||||
} catch (Exception e) {
|
||||
engine.SwitchNode(null);
|
||||
// sendTransactionActivity.finishWithError(hashTX);
|
||||
CreateChildTask(sendTransactionActivity.mCard, request.TX, hashTX);
|
||||
CreateChildTask(sendTransactionActivity.getCard(), request.TX, hashTX);
|
||||
}
|
||||
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
engine.SwitchNode(null);
|
||||
// sendTransactionActivity.finishWithError(e.toString());
|
||||
CreateChildTask(sendTransactionActivity.mCard, request.TX, e.toString());
|
||||
CreateChildTask(sendTransactionActivity.getCard(), request.TX, e.toString());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
engine.SwitchNode(null);
|
||||
// sendTransactionActivity.finishWithError(request.error);
|
||||
CreateChildTask(sendTransactionActivity.mCard, request.TX, request.error);
|
||||
CreateChildTask(sendTransactionActivity.getCard(), request.TX, request.error);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
engine.SwitchNode(null);
|
||||
// sendTransactionActivity.finishWithError(e.toString());
|
||||
CreateChildTask(sendTransactionActivity.mCard, request.TX, e.toString());
|
||||
CreateChildTask(sendTransactionActivity.getCard(), request.TX, e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public class ETHRequestTask extends InfuraTask {
|
|||
JSONObject msg = request.getAnswer();
|
||||
JSONObject err = msg.getJSONObject("error");
|
||||
hashTX = err.getString("message");
|
||||
LastSignStorage.setLastMessage(sendTransactionActivity.mCard.getWallet(), hashTX);
|
||||
LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), hashTX);
|
||||
Log.e("Send_TX_Error:", hashTX);
|
||||
sendTransactionActivity.finishWithError(hashTX);
|
||||
return;
|
||||
|
|
@ -52,11 +52,11 @@ public class ETHRequestTask extends InfuraTask {
|
|||
hashTX = hashTX.substring(2);
|
||||
}
|
||||
BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ
|
||||
LastSignStorage.setTxWasSend(sendTransactionActivity.mCard.getWallet());
|
||||
LastSignStorage.setLastMessage(sendTransactionActivity.mCard.getWallet(), "");
|
||||
BigInteger nonce = sendTransactionActivity.mCard.GetConfirmTXCount();
|
||||
LastSignStorage.setTxWasSend(sendTransactionActivity.getCard().getWallet());
|
||||
LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), "");
|
||||
BigInteger nonce = sendTransactionActivity.getCard().GetConfirmTXCount();
|
||||
nonce.add(BigInteger.valueOf(1));
|
||||
sendTransactionActivity.mCard.SetConfirmTXCount(nonce);
|
||||
sendTransactionActivity.getCard().SetConfirmTXCount(nonce);
|
||||
Log.e("TX_RESULT", hashTX);
|
||||
sendTransactionActivity.finishWithSuccess();
|
||||
} catch (Exception e) {
|
||||
|
|
|
|||
|
|
@ -1,85 +0,0 @@
|
|||
package com.tangem.presentation.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.KeyEvent;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.tangem.data.network.request.ElectrumRequest;
|
||||
import com.tangem.data.network.request.InfuraRequest;
|
||||
import com.tangem.data.network.task.send_transaction.ConnectTask;
|
||||
import com.tangem.data.network.task.send_transaction.ETHRequestTask;
|
||||
import com.tangem.domain.wallet.Blockchain;
|
||||
import com.tangem.domain.wallet.CoinEngine;
|
||||
import com.tangem.domain.wallet.CoinEngineFactory;
|
||||
import com.tangem.domain.wallet.TangemCard;
|
||||
import com.tangem.wallet.R;
|
||||
|
||||
public class SendTransactionActivity extends AppCompatActivity {
|
||||
|
||||
private ProgressBar progressBar;
|
||||
public TangemCard mCard;
|
||||
private String tx;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_send_transaction);
|
||||
|
||||
MainActivity.Companion.commonInit(getApplicationContext());
|
||||
|
||||
progressBar = findViewById(R.id.progressBar);
|
||||
|
||||
Intent intent = getIntent();
|
||||
mCard = new TangemCard(getIntent().getStringExtra("UID"));
|
||||
mCard.LoadFromBundle(intent.getExtras().getBundle("Card"));
|
||||
tx = intent.getStringExtra("TX");
|
||||
|
||||
CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain());
|
||||
if (mCard.getBlockchain() == Blockchain.Ethereum || mCard.getBlockchain() == Blockchain.EthereumTestNet || mCard.getBlockchain() == Blockchain.Token) {
|
||||
ETHRequestTask task = new ETHRequestTask(SendTransactionActivity.this, mCard.getBlockchain());
|
||||
InfuraRequest req = InfuraRequest.SendTransaction(mCard.getWallet(), tx);
|
||||
req.setID(67);
|
||||
req.setBlockchain(mCard.getBlockchain());
|
||||
task.execute(req);
|
||||
} else if (mCard.getBlockchain() == Blockchain.Bitcoin || mCard.getBlockchain() == Blockchain.BitcoinTestNet) {
|
||||
String nodeAddress = engine.GetNode(mCard);
|
||||
int nodePort = engine.GetNodePort(mCard);
|
||||
ConnectTask connectTask = new ConnectTask(SendTransactionActivity.this, nodeAddress, nodePort,3);
|
||||
connectTask.execute(ElectrumRequest.Broadcast(mCard.getWallet(), tx));
|
||||
} else if (mCard.getBlockchain() == Blockchain.BitcoinCash || mCard.getBlockchain() == Blockchain.BitcoinCashTestNet) {
|
||||
String nodeAddress = engine.GetNode(mCard);
|
||||
int nodePort = engine.GetNodePort(mCard);
|
||||
ConnectTask connectTask = new ConnectTask(SendTransactionActivity.this, nodeAddress, nodePort,3);
|
||||
connectTask.execute(ElectrumRequest.Broadcast(mCard.getWallet(), tx));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keycode, KeyEvent e) {
|
||||
switch (keycode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
Toast.makeText(this, R.string.please_wait, Toast.LENGTH_LONG).show();
|
||||
return true;
|
||||
}
|
||||
return super.onKeyDown(keycode, e);
|
||||
}
|
||||
|
||||
public void finishWithError(String Message) {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra("message", "Try again. Failed to send transaction (" + Message + ")");
|
||||
setResult(MainActivity.RESULT_CANCELED, intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
public void finishWithSuccess() {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra("message", getString(R.string.transaction_has_been_successfully_signed));
|
||||
setResult(MainActivity.RESULT_OK, intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
package com.tangem.presentation.activity
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.view.KeyEvent
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.Toast
|
||||
|
||||
import com.tangem.data.network.request.ElectrumRequest
|
||||
import com.tangem.data.network.request.InfuraRequest
|
||||
import com.tangem.data.network.task.send_transaction.ConnectTask
|
||||
import com.tangem.data.network.task.send_transaction.ETHRequestTask
|
||||
import com.tangem.domain.wallet.Blockchain
|
||||
import com.tangem.domain.wallet.CoinEngine
|
||||
import com.tangem.domain.wallet.CoinEngineFactory
|
||||
import com.tangem.domain.wallet.TangemCard
|
||||
import com.tangem.wallet.R
|
||||
|
||||
class SendTransactionActivity : AppCompatActivity() {
|
||||
|
||||
var card: TangemCard? = null
|
||||
private var tx: String? = null
|
||||
private var progressBar: ProgressBar? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_send_transaction)
|
||||
|
||||
MainActivity.commonInit(applicationContext)
|
||||
|
||||
progressBar = findViewById(R.id.progressBar)
|
||||
|
||||
val intent = intent
|
||||
card = TangemCard(getIntent().getStringExtra("UID"))
|
||||
card!!.LoadFromBundle(intent.extras!!.getBundle("Card"))
|
||||
tx = intent.getStringExtra("TX")
|
||||
|
||||
val engine = CoinEngineFactory.Create(card!!.blockchain)
|
||||
if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet || card!!.blockchain == Blockchain.Token) {
|
||||
val task = ETHRequestTask(this@SendTransactionActivity, card!!.blockchain)
|
||||
val req = InfuraRequest.SendTransaction(card!!.wallet, tx)
|
||||
req.id = 67
|
||||
req.setBlockchain(card!!.blockchain)
|
||||
task.execute(req)
|
||||
} 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))
|
||||
} 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))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
when (keyCode) {
|
||||
KeyEvent.KEYCODE_BACK -> {
|
||||
Toast.makeText(this, R.string.please_wait, Toast.LENGTH_LONG).show()
|
||||
return true
|
||||
}
|
||||
}
|
||||
return super.onKeyDown(keyCode, event)
|
||||
}
|
||||
|
||||
fun finishWithError(message: String) {
|
||||
val intent = Intent()
|
||||
intent.putExtra("message", String.format(getString(R.string.try_again_failed_to_send_transaction), message))
|
||||
setResult(RESULT_CANCELED, intent)
|
||||
finish()
|
||||
}
|
||||
|
||||
fun finishWithSuccess() {
|
||||
val intent = Intent()
|
||||
intent.putExtra("message", getString(R.string.transaction_has_been_successfully_signed))
|
||||
setResult(RESULT_OK, intent)
|
||||
finish()
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue