Updated on 2026-08-14

This commit is contained in:
Tangem 2018-05-29 13:28:36 +03:00
parent 0374157cad
commit 8c17a8d4f0
48 changed files with 3490 additions and 3417 deletions

View file

@ -1,237 +0,0 @@
package com.tangem.wallet;
import android.app.Activity;
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.Html;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.tangem.cardReader.NfcManager;
import java.io.IOException;
public class PreparePaymentActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback {
private static final int REQUEST_CODE_SCAN_QR = 1;
private static final int REQUEST_CODE_SEND_PAYMENT = 2;
Button btnVerify;
EditText etWallet;
EditText etAmount;
TextView tvCurrency;
TextView tvCardId, tvBalance, tvBalanceEquivalent, tvAmountEquivalent;
ImageView ivCamera;
boolean use_mCurrency;
Tangem_Card mCard;
private NfcManager mNfcManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prepare_payment);
MainActivity.commonInit(getApplicationContext());
mNfcManager = new NfcManager(this, this);
mCard = new Tangem_Card(getIntent().getStringExtra("UID"));
mCard.LoadFromBundle(getIntent().getExtras().getBundle("Card"));
btnVerify = (Button) findViewById(R.id.btnVerify);
etWallet = (EditText) findViewById(R.id.etWallet);
etAmount = (EditText) findViewById(R.id.etAmount);
ivCamera = (ImageView) findViewById(R.id.ivCamera);
tvCurrency = (TextView) findViewById(R.id.tvCurrency);
tvCardId = (TextView) findViewById(R.id.tvCardID);
tvBalance = (TextView) findViewById(R.id.tvBalance);
tvBalanceEquivalent = (TextView) findViewById(R.id.tvBalanceEquivalent);
tvAmountEquivalent = (TextView) findViewById(R.id.tvAmountEquivalent);
tvCardId.setText(mCard.getCIDDescription());
CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain());
if (mCard.getBlockchain() == Blockchain.Token) {
Spanned html = Html.fromHtml(engine.GetBalanceWithAlter(mCard));
tvBalance.setText(html);
} else {
tvBalance.setText(engine.GetBalanceWithAlter(mCard));
}
tvBalanceEquivalent.setText(engine.GetBalanceEquivalent(mCard));
if(etAmount != null && mCard.getRemainingSignatures()<2)
{
etAmount.setEnabled(false);
}
if( !mCard.getAmountEquivalentDescriptionAvailable())
{
tvBalanceEquivalent.setError("Service unavailable");
}else{
tvBalanceEquivalent.setError(null);
}
etAmount.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
try {
CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain());
tvAmountEquivalent.setText(engine.GetAmountEqualentDescriptor(mCard, etAmount.getText().toString()));
if (!mCard.getAmountEquivalentDescriptionAvailable()) {
tvAmountEquivalent.setError("Service unavailable");
}else{
tvAmountEquivalent.setError(null);
}
} catch (Exception e) {
e.printStackTrace();
tvAmountEquivalent.setText("");
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
if(mCard.getBlockchain() == Blockchain.Ethereum || mCard.getBlockchain() == Blockchain.EthereumTestNet)
{
tvCurrency.setText(engine.GetBalanceCurrency(mCard));
use_mCurrency=false;
etAmount.setText(engine.GetBalanceValue(mCard));
}
else if(mCard.getBlockchain() == Blockchain.Bitcoin || mCard.getBlockchain() == Blockchain.BitcoinTestNet)
{
Double balance = engine.GetBalanceLong(mCard) / (mCard.getBlockchain().getMultiplier() / 1000.0);
tvCurrency.setText("m" + mCard.getBlockchain().getCurrency());
use_mCurrency=true;
String output = FormatUtil.DoubleToString(balance);
etAmount.setText(output);
}
else if(mCard.getBlockchain() == Blockchain.BitcoinCash || mCard.getBlockchain() == Blockchain.BitcoinCashTestNet)
{
Double balance = engine.GetBalanceLong(mCard) / (mCard.getBlockchain().getMultiplier() / 1000.0);
tvCurrency.setText("m" + mCard.getBlockchain().getCurrency());
use_mCurrency=true;
String output = FormatUtil.DoubleToString(balance);
etAmount.setText(output);
}
else
{
tvCurrency.setText(engine.GetBalanceCurrency(mCard));
use_mCurrency=false;
etAmount.setText(engine.GetBalanceValue(mCard));
}
btnVerify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strAmount;
strAmount=etAmount.getText().toString();
CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain());
try {
if(!engine.CheckAmount(mCard, etAmount.getText().toString()))
{
etAmount.setError("Not enough funds on your card");
}
}
catch(Exception e)
{
etAmount.setError("Unknown amount format");
return;
}
boolean checkAddress = engine.ValdateAddress(etWallet.getText().toString(), mCard);
if(!checkAddress)
{
etWallet.setError("Incorrect destination wallet address");
return;
}
if(etWallet.getText().toString().equals(mCard.getWallet()))
{
etWallet.setError("Destination wallet address equal source address");
return;
}
Intent intent = new Intent(getBaseContext(), ConfirmPaymentActivity.class);
intent.putExtra("UID", mCard.getUID());
intent.putExtra("Card", mCard.getAsBundle());
intent.putExtra("Wallet", etWallet.getText().toString());
intent.putExtra("Amount", strAmount);
startActivityForResult(intent, REQUEST_CODE_SEND_PAYMENT);
}
});
ivCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getBaseContext(), QRScanActivity.class);
startActivityForResult(intent, REQUEST_CODE_SCAN_QR);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_SCAN_QR && resultCode == Activity.RESULT_OK && data != null && data.getExtras().containsKey("QRCode")) {
String code = data.getStringExtra("QRCode");
if(code.contains("bitcoin:"))
{
String tmp[] = code.split("bitcoin:");
code = tmp[1];
}
etWallet.setText(code);
}else if (requestCode == REQUEST_CODE_SEND_PAYMENT ) {
setResult(resultCode,data);
finish();
}
}
@Override
public void onTagDiscovered(Tag tag) {
try {
Log.w(getClass().getName(),"Ignore discovered tag!");
mNfcManager.IgnoreTag(tag);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onResume() {
super.onResume();
mNfcManager.onResume();
}
@Override
public void onPause() {
super.onPause();
mNfcManager.onPause();
}
@Override
public void onStop() {
super.onStop();
mNfcManager.onStop();
}
}