From fb4b20de61d70ede1210ede9a1730a00f7ecb1c8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 8 Aug 2018 15:51:27 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../task/send_transaction/ConnectTask.java | 19 ++--- .../task/send_transaction/ETHRequestTask.java | 10 +-- .../activity/SendTransactionActivity.java | 85 ------------------- .../activity/SendTransactionActivity.kt | 83 ++++++++++++++++++ .../res/layout/activity_send_transaction.xml | 7 +- app/src/main/res/values/strings.xml | 1 + 6 files changed, 101 insertions(+), 104 deletions(-) delete mode 100644 app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.java create mode 100644 app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt diff --git a/app/src/main/java/com/tangem/data/network/task/send_transaction/ConnectTask.java b/app/src/main/java/com/tangem/data/network/task/send_transaction/ConnectTask.java index 7bba59cca9..7697247be9 100644 --- a/app/src/main/java/com/tangem/data/network/task/send_transaction/ConnectTask.java +++ b/app/src/main/java/com/tangem/data/network/task/send_transaction/ConnectTask.java @@ -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()); } } } diff --git a/app/src/main/java/com/tangem/data/network/task/send_transaction/ETHRequestTask.java b/app/src/main/java/com/tangem/data/network/task/send_transaction/ETHRequestTask.java index c4b241f362..76789405a9 100644 --- a/app/src/main/java/com/tangem/data/network/task/send_transaction/ETHRequestTask.java +++ b/app/src/main/java/com/tangem/data/network/task/send_transaction/ETHRequestTask.java @@ -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) { diff --git a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.java b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.java deleted file mode 100644 index 0059865c12..0000000000 --- a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.java +++ /dev/null @@ -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(); - } - -} diff --git a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt new file mode 100644 index 0000000000..aa77c251a3 --- /dev/null +++ b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt @@ -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() + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_send_transaction.xml b/app/src/main/res/layout/activity_send_transaction.xml index ad3dab2c3f..071e96ea9b 100644 --- a/app/src/main/res/layout/activity_send_transaction.xml +++ b/app/src/main/res/layout/activity_send_transaction.xml @@ -1,5 +1,4 @@ - + app:layout_constraintTop_toBottomOf="@+id/textView8" /> + app:layout_constraintVertical_bias="0.378" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c13d18e69a..81dfda939a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -146,6 +146,7 @@ Please wait while the payment is sent… Transaction has been successfully signed and sent to blockchain node. Wallet balance will be updated in a while + Try again. Failed to send transaction (%1$s) Not enough funds on your card