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