Updated on 2026-08-14
This commit is contained in:
parent
0374157cad
commit
8c17a8d4f0
48 changed files with 3490 additions and 3417 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -10,3 +10,4 @@
|
||||||
.externalNativeBuild
|
.externalNativeBuild
|
||||||
app/libs/
|
app/libs/
|
||||||
.idea/vcs.xml
|
.idea/vcs.xml
|
||||||
|
.idea/caches
|
||||||
|
|
|
||||||
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
|
|
@ -1,8 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.tangem.wallet"
|
package="com.tangem.wallet">
|
||||||
android:versionCode="0"
|
|
||||||
android:versionName="0">
|
|
||||||
|
|
||||||
<uses-feature
|
<uses-feature
|
||||||
android:name="android.hardware.nfc"
|
android:name="android.hardware.nfc"
|
||||||
|
|
@ -13,12 +11,12 @@
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
|
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
|
||||||
<uses-permission android:name="android.permission.CAMERA"/>
|
<uses-permission android:name="android.permission.CAMERA"/>
|
||||||
<!--<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />-->
|
|
||||||
|
|
||||||
<uses-feature android:name="android.hardware.camera"/>
|
<uses-feature android:name="android.hardware.camera"/>
|
||||||
<uses-feature android:name="android.hardware.camera.autofocus"/>
|
<uses-feature android:name="android.hardware.camera.autofocus"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
android:name="com.tangem.AppController"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
|
|
@ -32,8 +30,9 @@
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:grantUriPermissions="true"/>
|
android:grantUriPermissions="true"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".LogoActivity"
|
android:name="com.tangem.presentation.activity.LogoActivity"
|
||||||
android:label="@string/title_activity_main"
|
android:label="@string/title_activity_main"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar">
|
android:theme="@style/AppTheme.NoActionBar">
|
||||||
|
|
@ -41,35 +40,16 @@
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".RequestPINActivity"
|
android:name="com.tangem.presentation.activity.MainActivity"
|
||||||
android:label="@string/title_activity_main"
|
android:label="@string/title_activity_main"
|
||||||
|
android:launchMode="singleTask"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar">
|
android:theme="@style/AppTheme.NoActionBar">
|
||||||
</activity>
|
|
||||||
<activity
|
|
||||||
android:name=".EmptyWalletActivity"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/AppTheme.NoActionBar" />
|
|
||||||
<activity
|
|
||||||
android:name=".SelectBlockchainActivity"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/AppTheme.NoActionBar" />
|
|
||||||
<activity
|
|
||||||
android:name=".SavePINActivity"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/AppTheme.NoActionBar" />
|
|
||||||
<activity
|
|
||||||
android:name=".MainActivity"
|
|
||||||
android:label="@string/title_activity_main"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/AppTheme.NoActionBar"
|
|
||||||
android:launchMode="singleTask">
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
|
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
|
||||||
|
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
<category android:name="android.intent.category.DEFAULT"/>
|
||||||
<data
|
<data
|
||||||
android:host="www.tangem.com"
|
android:host="www.tangem.com"
|
||||||
|
|
@ -83,54 +63,87 @@
|
||||||
android:name="android.nfc.action.TECH_DISCOVERED"
|
android:name="android.nfc.action.TECH_DISCOVERED"
|
||||||
android:resource="@xml/nfc_tech_filter"/>
|
android:resource="@xml/nfc_tech_filter"/>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".CardInfoActivity"
|
android:name="com.tangem.presentation.activity.RequestPINActivity"
|
||||||
android:label="@string/title_activity_card_info"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/AppTheme.NoActionBar" />
|
|
||||||
<activity
|
|
||||||
android:name=".LoadedWalletActivity"
|
|
||||||
android:label="@string/title_activity_loaded_wallet"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/AppTheme.NoActionBar" />
|
|
||||||
<activity
|
|
||||||
android:name=".VerifyCardActivity"
|
|
||||||
android:label="@string/title_activity_loaded_wallet"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/AppTheme.NoActionBar" />
|
|
||||||
<activity
|
|
||||||
android:name=".CreateNewWalletActivity"
|
|
||||||
android:label="@string/title_activity_main"
|
android:label="@string/title_activity_main"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar"/>
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".PreparePaymentActivity"
|
android:name="com.tangem.presentation.activity.EmptyWalletActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar"/>
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".ConfirmPaymentActivity"
|
android:name="com.tangem.presentation.activity.SelectBlockchainActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar"/>
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".SignPaymentActivity"
|
android:name="com.tangem.presentation.activity.SavePINActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar"/>
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".PurgeActivity"
|
android:name="com.tangem.presentation.activity.CardInfoActivity"
|
||||||
|
android:label="@string/title_activity_card_info"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar"/>
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".SwapPINActivity"
|
android:name="com.tangem.presentation.activity.LoadedWalletActivity"
|
||||||
|
android:label="@string/title_activity_loaded_wallet"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar"/>
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".QRScanActivity"
|
android:name="com.tangem.presentation.activity.VerifyCardActivity"
|
||||||
|
android:label="@string/title_activity_loaded_wallet"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar"/>
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".SendTransactionActivity"
|
android:name="com.tangem.presentation.activity.CreateNewWalletActivity"
|
||||||
|
android:label="@string/title_activity_main"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.NoActionBar"/>
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="com.tangem.presentation.activity.PreparePaymentActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="com.tangem.presentation.activity.ConfirmPaymentActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="com.tangem.presentation.activity.SignPaymentActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="com.tangem.presentation.activity.PurgeActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="com.tangem.presentation.activity.SwapPINActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="com.tangem.presentation.activity.QRScanActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="com.tangem.presentation.activity.SendTransactionActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/AppTheme.NoActionBar"/>
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
4
app/src/main/java/com/tangem/domain/Logic.java
Normal file
4
app/src/main/java/com/tangem/domain/Logic.java
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
package com.tangem.domain;
|
||||||
|
|
||||||
|
public class Logic {
|
||||||
|
}
|
||||||
4
app/src/main/java/com/tangem/presentation/Screen.java
Normal file
4
app/src/main/java/com/tangem/presentation/Screen.java
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
package com.tangem.presentation;
|
||||||
|
|
||||||
|
public class Screen {
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.design.widget.TabLayout;
|
import android.support.design.widget.TabLayout;
|
||||||
|
|
@ -10,6 +10,10 @@ import android.support.v7.app.AppCompatActivity;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
import com.tangem.wallet.WalletInfoFragment;
|
||||||
|
|
||||||
public class CardInfoActivity extends AppCompatActivity implements WalletInfoFragment.OnFragmentInteractionListener {
|
public class CardInfoActivity extends AppCompatActivity implements WalletInfoFragment.OnFragmentInteractionListener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.ColorStateList;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.nfc.NfcAdapter;
|
import android.nfc.NfcAdapter;
|
||||||
import android.nfc.Tag;
|
import android.nfc.Tag;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.widget.SwipeRefreshLayout;
|
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
|
|
@ -27,6 +24,23 @@ import android.widget.Toast;
|
||||||
|
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
import com.tangem.cardReader.Util;
|
import com.tangem.cardReader.Util;
|
||||||
|
import com.tangem.wallet.BTCUtils;
|
||||||
|
import com.tangem.wallet.Blockchain;
|
||||||
|
import com.tangem.wallet.CoinEngine;
|
||||||
|
import com.tangem.wallet.CoinEngineFactory;
|
||||||
|
import com.tangem.wallet.DerEncodingUtil;
|
||||||
|
import com.tangem.wallet.Electrum_Request;
|
||||||
|
import com.tangem.wallet.Electrum_Task;
|
||||||
|
import com.tangem.wallet.Fee_Request;
|
||||||
|
import com.tangem.wallet.Fee_Task;
|
||||||
|
import com.tangem.wallet.FormatUtil;
|
||||||
|
import com.tangem.wallet.Infura_Request;
|
||||||
|
import com.tangem.wallet.Infura_Task;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.SharedData;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
import com.tangem.wallet.Transaction;
|
||||||
|
import com.tangem.wallet.UnspentOutputInfo;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
|
@ -219,8 +233,7 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!engineCoin.CheckAmountValie(mCard, txAmount, txFee, minFeeInInternalUnits))
|
if (!engineCoin.CheckAmountValie(mCard, txAmount, txFee, minFeeInInternalUnits)) {
|
||||||
{
|
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Fee exceeds payment amount. Enter correct value and repeat sending.");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Fee exceeds payment amount. Enter correct value and repeat sending.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -278,8 +291,7 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
SharedData sharedFee = new SharedData(SharedData.COUNT_REQUEST);
|
SharedData sharedFee = new SharedData(SharedData.COUNT_REQUEST);
|
||||||
|
|
||||||
progressBar.setVisibility(View.VISIBLE);
|
progressBar.setVisibility(View.VISIBLE);
|
||||||
for(int i = 0; i < SharedData.COUNT_REQUEST; ++i)
|
for (int i = 0; i < SharedData.COUNT_REQUEST; ++i) {
|
||||||
{
|
|
||||||
|
|
||||||
ConnectFeeTask feeTask = new ConnectFeeTask(sharedFee);
|
ConnectFeeTask feeTask = new ConnectFeeTask(sharedFee);
|
||||||
|
|
||||||
|
|
@ -433,6 +445,7 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
public ConnectTask(String host, int port, SharedData sharedData) {
|
public ConnectTask(String host, int port, SharedData sharedData) {
|
||||||
super(host, port, sharedData);
|
super(host, port, sharedData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onProgressUpdate(Integer... values) {
|
protected void onProgressUpdate(Integer... values) {
|
||||||
super.onProgressUpdate(values);
|
super.onProgressUpdate(values);
|
||||||
|
|
@ -466,17 +479,13 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
nodeCheck = true;
|
nodeCheck = true;
|
||||||
}
|
}
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
if(sharedCounter != null)
|
if (sharedCounter != null) {
|
||||||
{
|
|
||||||
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
||||||
if(errCounter >= sharedCounter.allRequest)
|
if (errCounter >= sharedCounter.allRequest) {
|
||||||
{
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot check balance! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot check balance! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot check balance! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot check balance! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
|
|
@ -489,33 +498,25 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
} else {
|
} else {
|
||||||
// etFee.setError(request.error);
|
// etFee.setError(request.error);
|
||||||
// btnSend.setVisibility(View.INVISIBLE);
|
// btnSend.setVisibility(View.INVISIBLE);
|
||||||
if(sharedCounter != null)
|
if (sharedCounter != null) {
|
||||||
{
|
|
||||||
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
||||||
if(errCounter >= sharedCounter.allRequest)
|
if (errCounter >= sharedCounter.allRequest) {
|
||||||
{
|
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
if(sharedCounter != null)
|
if (sharedCounter != null) {
|
||||||
{
|
|
||||||
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
||||||
if(errCounter >= sharedCounter.allRequest)
|
if (errCounter >= sharedCounter.allRequest) {
|
||||||
{
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
|
|
@ -529,6 +530,7 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
ETHRequestTask(Blockchain blockchain) {
|
ETHRequestTask(Blockchain blockchain) {
|
||||||
super(blockchain);
|
super(blockchain);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(List<Infura_Request> requests) {
|
protected void onPostExecute(List<Infura_Request> requests) {
|
||||||
super.onPostExecute(requests);
|
super.onPostExecute(requests);
|
||||||
|
|
@ -579,6 +581,7 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
public ConnectFeeTask(SharedData sharedData) {
|
public ConnectFeeTask(SharedData sharedData) {
|
||||||
super(sharedData);
|
super(sharedData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(List<Fee_Request> requests) {
|
protected void onPostExecute(List<Fee_Request> requests) {
|
||||||
super.onPostExecute(requests);
|
super.onPostExecute(requests);
|
||||||
|
|
@ -597,19 +600,15 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
minFeeRate = minFeeBI.longValue();
|
minFeeRate = minFeeBI.longValue();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
||||||
if(sharedCounter != null)
|
if (sharedCounter != null) {
|
||||||
{
|
|
||||||
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
||||||
|
|
||||||
|
|
||||||
if(errCounter >= sharedCounter.allRequest)
|
if (errCounter >= sharedCounter.allRequest) {
|
||||||
{
|
|
||||||
progressBar.setVisibility(View.INVISIBLE);
|
progressBar.setVisibility(View.INVISIBLE);
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
progressBar.setVisibility(View.INVISIBLE);
|
progressBar.setVisibility(View.INVISIBLE);
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
|
|
@ -633,17 +632,13 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
if(sharedCounter != null)
|
if (sharedCounter != null) {
|
||||||
{
|
|
||||||
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
||||||
if(errCounter >= sharedCounter.allRequest)
|
if (errCounter >= sharedCounter.allRequest) {
|
||||||
{
|
|
||||||
progressBar.setVisibility(View.INVISIBLE);
|
progressBar.setVisibility(View.INVISIBLE);
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
progressBar.setVisibility(View.INVISIBLE);
|
progressBar.setVisibility(View.INVISIBLE);
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
|
|
@ -676,17 +671,13 @@ public class ConfirmPaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if(sharedCounter != null)
|
if (sharedCounter != null) {
|
||||||
{
|
|
||||||
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
int errCounter = sharedCounter.errorRequest.incrementAndGet();
|
||||||
if(errCounter >= sharedCounter.allRequest)
|
if (errCounter >= sharedCounter.allRequest) {
|
||||||
{
|
|
||||||
progressBar.setVisibility(View.INVISIBLE);
|
progressBar.setVisibility(View.INVISIBLE);
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
progressBar.setVisibility(View.INVISIBLE);
|
progressBar.setVisibility(View.INVISIBLE);
|
||||||
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
FinishActivityWithError(Activity.RESULT_CANCELED, "Cannot calculate fee! No connection with blockchain nodes");
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -18,6 +18,11 @@ import android.widget.Toast;
|
||||||
import com.tangem.cardReader.CardProtocol;
|
import com.tangem.cardReader.CardProtocol;
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
import com.tangem.cardReader.Util;
|
import com.tangem.cardReader.Util;
|
||||||
|
import com.tangem.wallet.NoExtendedLengthSupportDialog;
|
||||||
|
import com.tangem.wallet.PINStorage;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
import com.tangem.wallet.WaitSecurityDelayDialog;
|
||||||
|
|
||||||
public class CreateNewWalletActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
|
public class CreateNewWalletActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
|
||||||
|
|
||||||
|
|
@ -78,7 +83,6 @@ public class CreateNewWalletActivity extends AppCompatActivity implements NfcAda
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -20,6 +20,11 @@ import android.widget.Toast;
|
||||||
import com.tangem.cardReader.CardProtocol;
|
import com.tangem.cardReader.CardProtocol;
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
import com.tangem.cardReader.Util;
|
import com.tangem.cardReader.Util;
|
||||||
|
import com.tangem.wallet.NoExtendedLengthSupportDialog;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
import com.tangem.wallet.VerifyCardTask;
|
||||||
|
import com.tangem.wallet.WaitSecurityDelayDialog;
|
||||||
|
|
||||||
public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
|
public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -7,6 +7,9 @@ import android.nfc.Tag;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.tangem.wallet.LoadedWalletActivityFragment;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
|
||||||
|
|
||||||
public class LoadedWalletActivity extends AppCompatActivity {
|
public class LoadedWalletActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
@ -7,6 +7,9 @@ import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.tangem.wallet.BuildConfig;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An example full-screen activity that shows and hides the system UI (i.e.
|
* An example full-screen activity that shows and hides the system UI (i.e.
|
||||||
* status bar and navigation/system bar) with user interaction.
|
* status bar and navigation/system bar) with user interaction.
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
|
|
@ -30,6 +30,15 @@ import android.widget.TextView;
|
||||||
|
|
||||||
import com.scottyab.rootbeer.RootBeer;
|
import com.scottyab.rootbeer.RootBeer;
|
||||||
import com.skyfishjy.library.RippleBackground;
|
import com.skyfishjy.library.RippleBackground;
|
||||||
|
import com.tangem.wallet.BuildConfig;
|
||||||
|
import com.tangem.wallet.DeviceNFCAntennaLocation;
|
||||||
|
import com.tangem.wallet.LastSignStorage;
|
||||||
|
import com.tangem.wallet.LogFileProvider;
|
||||||
|
import com.tangem.wallet.Logger;
|
||||||
|
import com.tangem.wallet.MainActivityFragment;
|
||||||
|
import com.tangem.wallet.PINStorage;
|
||||||
|
import com.tangem.wallet.PhoneUtility;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -18,10 +18,15 @@ import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
|
import com.tangem.wallet.Blockchain;
|
||||||
|
import com.tangem.wallet.CoinEngine;
|
||||||
|
import com.tangem.wallet.CoinEngineFactory;
|
||||||
|
import com.tangem.wallet.FormatUtil;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
|
||||||
public class PreparePaymentActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback {
|
public class PreparePaymentActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback {
|
||||||
|
|
||||||
private static final int REQUEST_CODE_SCAN_QR = 1;
|
private static final int REQUEST_CODE_SCAN_QR = 1;
|
||||||
|
|
@ -70,13 +75,11 @@ public class PreparePaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
|
|
||||||
tvBalanceEquivalent.setText(engine.GetBalanceEquivalent(mCard));
|
tvBalanceEquivalent.setText(engine.GetBalanceEquivalent(mCard));
|
||||||
|
|
||||||
if(etAmount != null && mCard.getRemainingSignatures()<2)
|
if (etAmount != null && mCard.getRemainingSignatures() < 2) {
|
||||||
{
|
|
||||||
etAmount.setEnabled(false);
|
etAmount.setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !mCard.getAmountEquivalentDescriptionAvailable())
|
if (!mCard.getAmountEquivalentDescriptionAvailable()) {
|
||||||
{
|
|
||||||
tvBalanceEquivalent.setError("Service unavailable");
|
tvBalanceEquivalent.setError("Service unavailable");
|
||||||
} else {
|
} else {
|
||||||
tvBalanceEquivalent.setError(null);
|
tvBalanceEquivalent.setError(null);
|
||||||
|
|
@ -110,30 +113,23 @@ public class PreparePaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(mCard.getBlockchain() == Blockchain.Ethereum || mCard.getBlockchain() == Blockchain.EthereumTestNet)
|
if (mCard.getBlockchain() == Blockchain.Ethereum || mCard.getBlockchain() == Blockchain.EthereumTestNet) {
|
||||||
{
|
|
||||||
tvCurrency.setText(engine.GetBalanceCurrency(mCard));
|
tvCurrency.setText(engine.GetBalanceCurrency(mCard));
|
||||||
use_mCurrency = false;
|
use_mCurrency = false;
|
||||||
etAmount.setText(engine.GetBalanceValue(mCard));
|
etAmount.setText(engine.GetBalanceValue(mCard));
|
||||||
}
|
} else if (mCard.getBlockchain() == Blockchain.Bitcoin || mCard.getBlockchain() == Blockchain.BitcoinTestNet) {
|
||||||
else if(mCard.getBlockchain() == Blockchain.Bitcoin || mCard.getBlockchain() == Blockchain.BitcoinTestNet)
|
|
||||||
{
|
|
||||||
Double balance = engine.GetBalanceLong(mCard) / (mCard.getBlockchain().getMultiplier() / 1000.0);
|
Double balance = engine.GetBalanceLong(mCard) / (mCard.getBlockchain().getMultiplier() / 1000.0);
|
||||||
tvCurrency.setText("m" + mCard.getBlockchain().getCurrency());
|
tvCurrency.setText("m" + mCard.getBlockchain().getCurrency());
|
||||||
use_mCurrency = true;
|
use_mCurrency = true;
|
||||||
String output = FormatUtil.DoubleToString(balance);
|
String output = FormatUtil.DoubleToString(balance);
|
||||||
etAmount.setText(output);
|
etAmount.setText(output);
|
||||||
}
|
} else if (mCard.getBlockchain() == Blockchain.BitcoinCash || mCard.getBlockchain() == Blockchain.BitcoinCashTestNet) {
|
||||||
else if(mCard.getBlockchain() == Blockchain.BitcoinCash || mCard.getBlockchain() == Blockchain.BitcoinCashTestNet)
|
|
||||||
{
|
|
||||||
Double balance = engine.GetBalanceLong(mCard) / (mCard.getBlockchain().getMultiplier() / 1000.0);
|
Double balance = engine.GetBalanceLong(mCard) / (mCard.getBlockchain().getMultiplier() / 1000.0);
|
||||||
tvCurrency.setText("m" + mCard.getBlockchain().getCurrency());
|
tvCurrency.setText("m" + mCard.getBlockchain().getCurrency());
|
||||||
use_mCurrency = true;
|
use_mCurrency = true;
|
||||||
String output = FormatUtil.DoubleToString(balance);
|
String output = FormatUtil.DoubleToString(balance);
|
||||||
etAmount.setText(output);
|
etAmount.setText(output);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
tvCurrency.setText(engine.GetBalanceCurrency(mCard));
|
tvCurrency.setText(engine.GetBalanceCurrency(mCard));
|
||||||
use_mCurrency = false;
|
use_mCurrency = false;
|
||||||
etAmount.setText(engine.GetBalanceValue(mCard));
|
etAmount.setText(engine.GetBalanceValue(mCard));
|
||||||
|
|
@ -146,26 +142,21 @@ public class PreparePaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
strAmount = etAmount.getText().toString();
|
strAmount = etAmount.getText().toString();
|
||||||
CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain());
|
CoinEngine engine = CoinEngineFactory.Create(mCard.getBlockchain());
|
||||||
try {
|
try {
|
||||||
if(!engine.CheckAmount(mCard, etAmount.getText().toString()))
|
if (!engine.CheckAmount(mCard, etAmount.getText().toString())) {
|
||||||
{
|
|
||||||
etAmount.setError("Not enough funds on your card");
|
etAmount.setError("Not enough funds on your card");
|
||||||
}
|
}
|
||||||
}
|
} catch (Exception e) {
|
||||||
catch(Exception e)
|
|
||||||
{
|
|
||||||
etAmount.setError("Unknown amount format");
|
etAmount.setError("Unknown amount format");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean checkAddress = engine.ValdateAddress(etWallet.getText().toString(), mCard);
|
boolean checkAddress = engine.ValdateAddress(etWallet.getText().toString(), mCard);
|
||||||
if(!checkAddress)
|
if (!checkAddress) {
|
||||||
{
|
|
||||||
etWallet.setError("Incorrect destination wallet address");
|
etWallet.setError("Incorrect destination wallet address");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(etWallet.getText().toString().equals(mCard.getWallet()))
|
if (etWallet.getText().toString().equals(mCard.getWallet())) {
|
||||||
{
|
|
||||||
etWallet.setError("Destination wallet address equal source address");
|
etWallet.setError("Destination wallet address equal source address");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -194,8 +185,7 @@ public class PreparePaymentActivity extends AppCompatActivity implements NfcAdap
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if (requestCode == REQUEST_CODE_SCAN_QR && resultCode == Activity.RESULT_OK && data != null && data.getExtras().containsKey("QRCode")) {
|
if (requestCode == REQUEST_CODE_SCAN_QR && resultCode == Activity.RESULT_OK && data != null && data.getExtras().containsKey("QRCode")) {
|
||||||
String code = data.getStringExtra("QRCode");
|
String code = data.getStringExtra("QRCode");
|
||||||
if(code.contains("bitcoin:"))
|
if (code.contains("bitcoin:")) {
|
||||||
{
|
|
||||||
String tmp[] = code.split("bitcoin:");
|
String tmp[] = code.split("bitcoin:");
|
||||||
code = tmp[1];
|
code = tmp[1];
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -18,6 +18,11 @@ import android.widget.Toast;
|
||||||
import com.tangem.cardReader.CardProtocol;
|
import com.tangem.cardReader.CardProtocol;
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
import com.tangem.cardReader.Util;
|
import com.tangem.cardReader.Util;
|
||||||
|
import com.tangem.wallet.NoExtendedLengthSupportDialog;
|
||||||
|
import com.tangem.wallet.PINStorage;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
import com.tangem.wallet.WaitSecurityDelayDialog;
|
||||||
|
|
||||||
public class PurgeActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
|
public class PurgeActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
|
|
@ -27,6 +27,10 @@ import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
|
import com.tangem.wallet.FingerprintHelper;
|
||||||
|
import com.tangem.wallet.PINStorage;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.KeyStore;
|
import java.security.KeyStore;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
|
|
@ -23,6 +23,10 @@ import android.widget.CheckBox;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.tangem.wallet.FingerprintHelper;
|
||||||
|
import com.tangem.wallet.PINStorage;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.KeyStore;
|
import java.security.KeyStore;
|
||||||
import java.security.KeyStoreException;
|
import java.security.KeyStoreException;
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
|
||||||
public class SelectBlockchainActivity extends AppCompatActivity {
|
public class SelectBlockchainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -1,14 +1,25 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.AsyncTask;
|
|
||||||
import android.support.v7.app.AppCompatActivity;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.tangem.wallet.Blockchain;
|
||||||
|
import com.tangem.wallet.CoinEngine;
|
||||||
|
import com.tangem.wallet.CoinEngineFactory;
|
||||||
|
import com.tangem.wallet.Electrum_Request;
|
||||||
|
import com.tangem.wallet.Electrum_Task;
|
||||||
|
import com.tangem.wallet.Infura_Request;
|
||||||
|
import com.tangem.wallet.Infura_Task;
|
||||||
|
import com.tangem.wallet.LastSignStorage;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.SharedData;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
@ -18,6 +18,11 @@ import android.widget.Toast;
|
||||||
import com.tangem.cardReader.CardProtocol;
|
import com.tangem.cardReader.CardProtocol;
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
import com.tangem.cardReader.Util;
|
import com.tangem.cardReader.Util;
|
||||||
|
import com.tangem.wallet.NoExtendedLengthSupportDialog;
|
||||||
|
import com.tangem.wallet.PINStorage;
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.Tangem_Card;
|
||||||
|
import com.tangem.wallet.WaitSecurityDelayDialog;
|
||||||
|
|
||||||
public class SwapPINActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
|
public class SwapPINActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
|
||||||
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
package com.tangem.wallet;
|
package com.tangem.presentation.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.tangem.wallet.R;
|
||||||
|
import com.tangem.wallet.VerifyCardActivityFragment;
|
||||||
|
|
||||||
public class VerifyCardActivity extends AppCompatActivity {
|
public class VerifyCardActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
|
@ -27,7 +27,7 @@ public class Electrum_Task extends AsyncTask<Electrum_Request, Integer, List<Ele
|
||||||
OutputStreamWriter out;
|
OutputStreamWriter out;
|
||||||
BufferedReader in;
|
BufferedReader in;
|
||||||
|
|
||||||
SharedData sharedCounter = null;
|
public SharedData sharedCounter = null;
|
||||||
|
|
||||||
|
|
||||||
public Electrum_Task(String host, int port) {
|
public Electrum_Task(String host, int port) {
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import java.util.List;
|
||||||
|
|
||||||
public class Fee_Task extends AsyncTask<Fee_Request, Void, List<Fee_Request>> {
|
public class Fee_Task extends AsyncTask<Fee_Request, Void, List<Fee_Request>> {
|
||||||
|
|
||||||
SharedData sharedCounter = null;
|
public SharedData sharedCounter = null;
|
||||||
|
|
||||||
public Fee_Task(SharedData sharedData)
|
public Fee_Task(SharedData sharedData)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public class FingerprintHelper extends FingerprintManager.AuthenticationCallback
|
||||||
cancellationSignal.cancel();
|
cancellationSignal.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FingerprintHelperListener {
|
public interface FingerprintHelperListener {
|
||||||
public void authenticationFailed(String error);
|
public void authenticationFailed(String error);
|
||||||
public void authenticationSucceeded(FingerprintManager.AuthenticationResult result);
|
public void authenticationSucceeded(FingerprintManager.AuthenticationResult result);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import android.preference.PreferenceManager;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
@ -24,7 +23,7 @@ public class LastSignStorage {
|
||||||
private static Map<String, String> txCol = new ArrayMap<>();
|
private static Map<String, String> txCol = new ArrayMap<>();
|
||||||
private static Map<String, String> txCompleteCol = new ArrayMap<>();
|
private static Map<String, String> txCompleteCol = new ArrayMap<>();
|
||||||
|
|
||||||
static void Init(Context context) {
|
public static void Init(Context context) {
|
||||||
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
cards=sharedPreferences.getStringSet("LastSign_Cards", cards);
|
cards=sharedPreferences.getStringSet("LastSign_Cards", cards);
|
||||||
for (int i = 0; i < cards.size(); i++) {
|
for (int i = 0; i < cards.size(); i++) {
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,12 @@ import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
|
||||||
import com.tangem.cardReader.CardProtocol;
|
import com.tangem.cardReader.CardProtocol;
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
import com.tangem.cardReader.Util;
|
import com.tangem.cardReader.Util;
|
||||||
|
import com.tangem.presentation.activity.CreateNewWalletActivity;
|
||||||
|
import com.tangem.presentation.activity.PreparePaymentActivity;
|
||||||
|
import com.tangem.presentation.activity.PurgeActivity;
|
||||||
|
import com.tangem.presentation.activity.RequestPINActivity;
|
||||||
|
import com.tangem.presentation.activity.SwapPINActivity;
|
||||||
|
import com.tangem.presentation.activity.VerifyCardActivity;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,10 @@ import android.widget.Toast;
|
||||||
import com.tangem.cardReader.CardProtocol;
|
import com.tangem.cardReader.CardProtocol;
|
||||||
import com.tangem.cardReader.NfcManager;
|
import com.tangem.cardReader.NfcManager;
|
||||||
import com.tangem.cardReader.Util;
|
import com.tangem.cardReader.Util;
|
||||||
|
import com.tangem.presentation.activity.EmptyWalletActivity;
|
||||||
|
import com.tangem.presentation.activity.LoadedWalletActivity;
|
||||||
|
import com.tangem.presentation.activity.MainActivity;
|
||||||
|
import com.tangem.presentation.activity.RequestPINActivity;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import com.tangem.cardReader.CardProtocol;
|
import com.tangem.cardReader.CardProtocol;
|
||||||
|
|
||||||
|
|
@ -18,11 +17,11 @@ import javax.crypto.Cipher;
|
||||||
* Global PIN Storage
|
* Global PIN Storage
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class PINStorage {
|
public class PINStorage {
|
||||||
private static String mSavedPIN, mUserPIN, mLastUsedPIN, mEncryptedPIN, mPIN2;
|
private static String mSavedPIN, mUserPIN, mLastUsedPIN, mEncryptedPIN, mPIN2;
|
||||||
private static SharedPreferences sharedPreferences=null;
|
private static SharedPreferences sharedPreferences=null;
|
||||||
|
|
||||||
static void Init(Context context) {
|
public static void Init(Context context) {
|
||||||
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
mSavedPIN = sharedPreferences.getString("SavedPIN", null);
|
mSavedPIN = sharedPreferences.getString("SavedPIN", null);
|
||||||
mUserPIN = null;
|
mUserPIN = null;
|
||||||
|
|
@ -46,15 +45,15 @@ class PINStorage {
|
||||||
mLastUsedPIN = PIN;
|
mLastUsedPIN = PIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setUserPIN(String PIN) {
|
public static void setUserPIN(String PIN) {
|
||||||
mUserPIN = PIN;
|
mUserPIN = PIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setPIN2(String PIN) {
|
public static void setPIN2(String PIN) {
|
||||||
mPIN2 = PIN;
|
mPIN2 = PIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void savePIN(String PIN) {
|
public static void savePIN(String PIN) {
|
||||||
mSavedPIN = PIN;
|
mSavedPIN = PIN;
|
||||||
if (mSavedPIN != null && !mSavedPIN.isEmpty()) {
|
if (mSavedPIN != null && !mSavedPIN.isEmpty()) {
|
||||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||||
|
|
@ -65,7 +64,7 @@ class PINStorage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deletePIN() {
|
public static void deletePIN() {
|
||||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||||
if (mSavedPIN != null && mLastUsedPIN != null && mSavedPIN.equals(mLastUsedPIN)) {
|
if (mSavedPIN != null && mLastUsedPIN != null && mSavedPIN.equals(mLastUsedPIN)) {
|
||||||
mLastUsedPIN = null;
|
mLastUsedPIN = null;
|
||||||
|
|
@ -75,7 +74,7 @@ class PINStorage {
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void saveEncryptedPIN(Cipher cipher, String PIN) {
|
public static void saveEncryptedPIN(Cipher cipher, String PIN) {
|
||||||
try {
|
try {
|
||||||
byte[] iv = cipher.getIV();
|
byte[] iv = cipher.getIV();
|
||||||
byte[] bytes = cipher.doFinal(PIN.getBytes());
|
byte[] bytes = cipher.doFinal(PIN.getBytes());
|
||||||
|
|
@ -93,14 +92,14 @@ class PINStorage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static byte[] loadEncryptedIV() {
|
public static byte[] loadEncryptedIV() {
|
||||||
String sIV = sharedPreferences.getString("EncryptedIV", "");
|
String sIV = sharedPreferences.getString("EncryptedIV", "");
|
||||||
// Log.d("PINStorage", String.format("loadEncryptedIV: %s",sIV));
|
// Log.d("PINStorage", String.format("loadEncryptedIV: %s",sIV));
|
||||||
|
|
||||||
return Base64.decode(sIV, Base64.NO_WRAP);
|
return Base64.decode(sIV, Base64.NO_WRAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static String loadEncryptedPIN(Cipher cipher) {
|
public static String loadEncryptedPIN(Cipher cipher) {
|
||||||
String encryptedPIN = sharedPreferences.getString("EncryptedPIN", null);
|
String encryptedPIN = sharedPreferences.getString("EncryptedPIN", null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -114,11 +113,11 @@ class PINStorage {
|
||||||
return mEncryptedPIN;
|
return mEncryptedPIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean haveEncryptedPIN() {
|
public static boolean haveEncryptedPIN() {
|
||||||
return sharedPreferences.getString("EncryptedPIN", null) != null;
|
return sharedPreferences.getString("EncryptedPIN", null) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deleteEncryptedPIN() {
|
public static void deleteEncryptedPIN() {
|
||||||
if (mEncryptedPIN != null && mLastUsedPIN != null && mEncryptedPIN.equals(mLastUsedPIN)) {
|
if (mEncryptedPIN != null && mLastUsedPIN != null && mEncryptedPIN.equals(mLastUsedPIN)) {
|
||||||
mLastUsedPIN = null;
|
mLastUsedPIN = null;
|
||||||
}
|
}
|
||||||
|
|
@ -129,7 +128,7 @@ class PINStorage {
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void saveEncryptedPIN2(Cipher cipher, String PIN) {
|
public static void saveEncryptedPIN2(Cipher cipher, String PIN) {
|
||||||
try {
|
try {
|
||||||
byte[] iv = cipher.getIV();
|
byte[] iv = cipher.getIV();
|
||||||
byte[] bytes = cipher.doFinal(PIN.getBytes());
|
byte[] bytes = cipher.doFinal(PIN.getBytes());
|
||||||
|
|
@ -147,14 +146,14 @@ class PINStorage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static byte[] loadEncryptedIV2() {
|
public static byte[] loadEncryptedIV2() {
|
||||||
String sIV = sharedPreferences.getString("EncryptedIV2", "");
|
String sIV = sharedPreferences.getString("EncryptedIV2", "");
|
||||||
// Log.d("PINStorage", String.format("loadEncryptedIV: %s",sIV));
|
// Log.d("PINStorage", String.format("loadEncryptedIV: %s",sIV));
|
||||||
|
|
||||||
return Base64.decode(sIV, Base64.NO_WRAP);
|
return Base64.decode(sIV, Base64.NO_WRAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static String loadEncryptedPIN2(Cipher cipher) {
|
public static String loadEncryptedPIN2(Cipher cipher) {
|
||||||
String encryptedPIN = sharedPreferences.getString("EncryptedPIN2", null);
|
String encryptedPIN = sharedPreferences.getString("EncryptedPIN2", null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -168,11 +167,11 @@ class PINStorage {
|
||||||
return mPIN2;
|
return mPIN2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean haveEncryptedPIN2() {
|
public static boolean haveEncryptedPIN2() {
|
||||||
return sharedPreferences.getString("EncryptedPIN2", null) != null;
|
return sharedPreferences.getString("EncryptedPIN2", null) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deleteEncryptedPIN2() {
|
public static void deleteEncryptedPIN2() {
|
||||||
mPIN2 = null;
|
mPIN2 = null;
|
||||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||||
editor.remove("EncryptedPIN2");
|
editor.remove("EncryptedPIN2");
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ public class SharedData
|
||||||
public AtomicInteger requestCounter;
|
public AtomicInteger requestCounter;
|
||||||
public int allRequest;
|
public int allRequest;
|
||||||
public AtomicInteger errorRequest;
|
public AtomicInteger errorRequest;
|
||||||
|
|
||||||
public SharedData(int requstCount)
|
public SharedData(int requstCount)
|
||||||
{
|
{
|
||||||
allRequest = requstCount;
|
allRequest = requstCount;
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -21,7 +21,7 @@ public class VerifyCardTask extends Thread {
|
||||||
private Tangem_Card mCard;
|
private Tangem_Card mCard;
|
||||||
private NfcManager mNfcManager;
|
private NfcManager mNfcManager;
|
||||||
|
|
||||||
VerifyCardTask(Context context, Tangem_Card card, NfcManager nfcManager, IsoDep isoDep, CardProtocol.Notifications notifications) {
|
public VerifyCardTask(Context context, Tangem_Card card, NfcManager nfcManager, IsoDep isoDep, CardProtocol.Notifications notifications) {
|
||||||
mCard = card;
|
mCard = card;
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mIsoDep = isoDep;
|
mIsoDep = isoDep;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true"
|
||||||
tools:context="com.tangem.wallet.CardInfoActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.CardInfoActivity">
|
||||||
|
|
||||||
<android.support.design.widget.AppBarLayout
|
<android.support.design.widget.AppBarLayout
|
||||||
android:id="@+id/appbar"
|
android:id="@+id/appbar"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.ConfirmPaymentActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.ConfirmPaymentActivity">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/textView"
|
android:id="@+id/textView"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.CreateNewWalletActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.CreateNewWalletActivity">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
android:background="@color/white"
|
android:background="@color/white"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="0dp"
|
android:padding="0dp"
|
||||||
tools:context="com.tangem.wallet.EmptyWalletActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.EmptyWalletActivity">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.LoadedWalletActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.LoadedWalletActivity">
|
||||||
|
|
||||||
<!--<android.support.design.widget.AppBarLayout-->
|
<!--<android.support.design.widget.AppBarLayout-->
|
||||||
<!--android:layout_width="match_parent"-->
|
<!--android:layout_width="match_parent"-->
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
android:background="#FFFFFF"
|
android:background="#FFFFFF"
|
||||||
android:gravity="bottom"
|
android:gravity="bottom"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:context="com.tangem.wallet.LogoActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.LogoActivity">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/imgLogo"
|
android:id="@+id/imgLogo"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.MainActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.MainActivity">
|
||||||
|
|
||||||
<!--<ImageView-->
|
<!--<ImageView-->
|
||||||
<!--android:id="@+id/ivTap"-->
|
<!--android:id="@+id/ivTap"-->
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.PreparePaymentActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.PreparePaymentActivity">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/textView"
|
android:id="@+id/textView"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.PurgeActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.PurgeActivity">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,6 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.QRScanActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.QRScanActivity">
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
</android.support.constraint.ConstraintLayout>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:context="com.tangem.wallet.RequestPINActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.RequestPINActivity">
|
||||||
<!--android:paddingBottom="@dimen/activity_vertical_margin"-->
|
<!--android:paddingBottom="@dimen/activity_vertical_margin"-->
|
||||||
<!--android:paddingLeft="@dimen/activity_horizontal_margin"-->
|
<!--android:paddingLeft="@dimen/activity_horizontal_margin"-->
|
||||||
<!--android:paddingRight="@dimen/activity_horizontal_margin"-->
|
<!--android:paddingRight="@dimen/activity_horizontal_margin"-->
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:context="com.tangem.wallet.SavePINActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.SavePINActivity">
|
||||||
<!--android:paddingBottom="@dimen/activity_vertical_margin"-->
|
<!--android:paddingBottom="@dimen/activity_vertical_margin"-->
|
||||||
<!--android:paddingLeft="@dimen/activity_horizontal_margin"-->
|
<!--android:paddingLeft="@dimen/activity_horizontal_margin"-->
|
||||||
<!--android:paddingRight="@dimen/activity_horizontal_margin"-->
|
<!--android:paddingRight="@dimen/activity_horizontal_margin"-->
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.SendTransactionActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.SendTransactionActivity">
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/progressBar"
|
android:id="@+id/progressBar"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.SignPaymentActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.SignPaymentActivity">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.PurgeActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.PurgeActivity">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.tangem.wallet.VerifyCardActivity">
|
tools:context="com.tangem.wallet.com.tangem.presentation.activity.VerifyCardActivity">
|
||||||
|
|
||||||
|
|
||||||
<include
|
<include
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue