Updated on 2026-08-14

This commit is contained in:
Tangem 2019-12-04 12:00:42 +00:00
commit 4b0ace4da0
18 changed files with 64 additions and 59 deletions

View file

@ -88,7 +88,12 @@ class MainFragment : BaseFragment(), NavigationResultListener, NfcAdapter.Reader
tvNFCHint.text = String.format(getString(R.string.main_screen_scan_card), getString(R.string.main_screen_phone))
// set listeners
fab.setOnClickListener { showMenu(it) }
// ivMenu.setOnClickListener { showMenu(it) }
val toolbar = tb_main
(activity as? AppCompatActivity)?.setSupportActionBar(toolbar)
(activity as? AppCompatActivity)?.supportActionBar?.setDisplayShowTitleEnabled(false)
setCardStoreLink()
}

View file

@ -69,8 +69,6 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
super.onViewCreated(view, savedInstanceState)
updateViews()
srlVerifyCard.setOnRefreshListener { srlVerifyCard.isRefreshing = false }
// set listeners
fabMenu.setOnClickListener { showMenu(fabMenu) }

View file

@ -323,6 +323,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
super.onStart()
if (!EventBus.getDefault().isRegistered(this))
EventBus.getDefault().register(this)
refresh()
}
override fun onStop() {

View file

@ -4,6 +4,7 @@ import android.net.Uri;
import android.text.InputFilter;
import android.util.Log;
import com.tangem.App;
import com.tangem.data.network.ElectrumRequest;
import com.tangem.data.network.ServerApiElectrum;
import com.tangem.tangem_card.data.TangemCard;
@ -71,7 +72,7 @@ public class BtcCashEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
if (coinData == null) return false;
return coinData.getBalanceUnconfirmed() != 0;
return coinData.getBalanceUnconfirmed() != 0 || App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -6,6 +6,7 @@ import android.util.Log;
import androidx.annotation.NonNull;
import com.tangem.App;
import com.tangem.data.Blockchain;
import com.tangem.data.network.BinanceApi;
import com.tangem.data.network.Server;
@ -91,7 +92,7 @@ public class BinanceEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
return false;
return App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -117,6 +117,7 @@ public class BtcData extends CoinData {
balanceConfirmed = null;
balanceUnconfirmed = null;
unspentTransactions = null;
hasUnconfirmed = false;
}
public CoinEngine.InternalAmount getBalanceInInternalUnits() {

View file

@ -93,7 +93,7 @@ public class BtcEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
if (coinData == null) return false;
return coinData.getBalanceUnconfirmed() != 0 || coinData.isHasUnconfirmed();
return coinData.getBalanceUnconfirmed() != 0 || coinData.isHasUnconfirmed() || App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -85,7 +85,7 @@ public class CardanoEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
return false;
return App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -4,6 +4,7 @@ import android.net.Uri;
import android.text.InputFilter;
import android.util.Log;
import com.tangem.App;
import com.tangem.data.network.ServerApiInsight;
import com.tangem.data.network.model.InsightResponse;
import com.tangem.tangem_card.data.TangemCard;
@ -67,7 +68,7 @@ public class DucatusEngine extends BtcEngine {
@Override
public boolean awaitingConfirmation() {
if (coinData == null) return false;
return coinData.getBalanceUnconfirmed() != 0;
return coinData.getBalanceUnconfirmed() != 0 || App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -6,6 +6,7 @@ import android.util.Log;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.gson.Gson;
import com.tangem.App;
import com.tangem.Constant;
import com.tangem.data.Blockchain;
import com.tangem.data.network.ServerApiEos;
@ -86,7 +87,7 @@ public class EosEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
return false;
return App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -4,6 +4,7 @@ import android.net.Uri;
import android.text.InputFilter;
import android.util.Log;
import com.tangem.App;
import com.tangem.Constant;
import com.tangem.data.Blockchain;
import com.tangem.data.network.ServerApiInfura;
@ -65,7 +66,7 @@ public class EthEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
return false;
return !coinData.getUnconfirmedTXCount().equals(coinData.getConfirmedTXCount()) || App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -76,7 +76,7 @@ public class LtcEngine extends BtcEngine {
@Override
public boolean awaitingConfirmation() {
if (coinData == null) return false;
return coinData.getBalanceUnconfirmed() != 0;
return coinData.getBalanceUnconfirmed() != 0 || App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -6,6 +6,7 @@ import android.text.InputFilter;
import android.util.Log;
import com.google.common.base.Strings;
import com.tangem.App;
import com.tangem.data.Blockchain;
import com.tangem.data.network.ServerApiInfura;
import com.tangem.data.network.model.InfuraResponse;
@ -73,7 +74,7 @@ public class TokenEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
return false;
return !coinData.getUnconfirmedTXCount().equals(coinData.getConfirmedTXCount()) || App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -5,6 +5,7 @@ import android.os.StrictMode;
import android.text.InputFilter;
import android.util.Log;
import com.tangem.App;
import com.tangem.data.Blockchain;
import com.tangem.data.network.ServerApiStellar;
import com.tangem.data.network.StellarRequest;
@ -70,9 +71,7 @@ public class XlmAssetEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
if (coinData == null) return false;
//TODO
return false;//coinData.getBalanceUnconfirmed() != 0;
return App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override

View file

@ -5,6 +5,7 @@ import android.os.StrictMode;
import android.text.InputFilter;
import android.util.Log;
import com.tangem.App;
import com.tangem.data.Blockchain;
import com.tangem.data.network.ServerApiStellar;
import com.tangem.data.network.StellarRequest;
@ -68,9 +69,7 @@ public class XlmEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
if (coinData == null) return false;
//TODO
return false;//coinData.getBalanceUnconfirmed() != 0;
return App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override
@ -98,7 +97,7 @@ public class XlmEngine extends CoinEngine {
@Override
public boolean hasBalanceInfo() {
if (coinData == null) return false;
return coinData.getBalance() != null;
return (coinData.getBalance() != null) || (coinData.isError404()) ;
}

View file

@ -9,6 +9,7 @@ import com.ripple.core.coretypes.uint.UInt32;
import com.ripple.crypto.ecdsa.ECDSASignature;
import com.ripple.encodings.addresses.Addresses;
import com.ripple.utils.HashUtils;
import com.tangem.App;
import com.tangem.data.network.ServerApiRipple;
import com.tangem.data.network.model.RippleResponse;
import com.tangem.tangem_card.data.TangemCard;
@ -61,7 +62,7 @@ public class XrpEngine extends CoinEngine {
@Override
public boolean awaitingConfirmation() {
if (coinData == null) return false;
return coinData.hasUnconfirmed();
return coinData.hasUnconfirmed() || App.pendingTransactionsStorage.hasTransactions(ctx.getCard());
}
@Override
@ -89,11 +90,11 @@ public class XrpEngine extends CoinEngine {
@Override
public boolean hasBalanceInfo() {
if (coinData == null) return false;
return coinData.hasBalanceInfo();
return coinData.hasBalanceInfo() || coinData.isAccountNotFound();
}
public boolean isExtractPossible() {
if (!hasBalanceInfo()) {
if (coinData == null || !coinData.hasBalanceInfo()) {
ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.general_wallet_empty);
@ -242,7 +243,7 @@ public class XrpEngine extends CoinEngine {
@Override
public Amount getBalance() {
if (!hasBalanceInfo()) return null;
if (coinData == null || !coinData.hasBalanceInfo()) return null;
return convertToAmount(coinData.getBalanceInInternalUnits());
}

View file

@ -9,21 +9,16 @@
tools:context="com.tangem.ui.fragment.VerifyCardFragment"
tools:ignore="contentDescription">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/srlVerifyCard"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/rlToolButtons1"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="0dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/rlToolButtons1"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
<LinearLayout
android:layout_width="match_parent"
@ -580,8 +575,6 @@
</ScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<RelativeLayout
android:id="@+id/rlToolButtons1"
android:layout_width="match_parent"

View file

@ -1,24 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context="com.tangem.ui.activity.MainActivity"
tools:ignore="contentDescription">
<androidx.appcompat.widget.Toolbar
android:id="@+id/tb_main"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white"
android:minHeight="?attr/actionBarSize"
app:layout_constraintTop_toTopOf="parent"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<LinearLayout
android:id="@+id/llTapPrompt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:background="@color/actionbar_text"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical">
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@id/llShoppingView"
app:layout_constraintTop_toBottomOf="@id/tb_main">
<ImageView
android:id="@+id/ivTangemLogo"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_height="48dp"
app:layout_constraintTop_toBottomOf="@+id/tb_main"
app:srcCompat="@drawable/tangem_logo_full_new" />
<include layout="@layout/layout_touch_card" />
@ -27,7 +41,6 @@
android:id="@+id/tvNFCHint"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="12dp"
android:fontFamily="@font/maax"
android:gravity="center"
android:lineSpacingExtra="8dp"
@ -43,17 +56,17 @@
android:textColor="@color/primary_dark"
android:textSize="@dimen/text_size_medium" />
</LinearLayout>
<LinearLayout
android:id="@+id/llShoppingView"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginBottom="80dp"
android:gravity="center"
android:layout_gravity="bottom"
android:orientation="horizontal">
android:layout_marginBottom="12dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent">
<ImageView
android:layout_width="32dp"
@ -78,15 +91,4 @@
android:textSize="14sp"
tools:text="Don't have a card?\nVisit our store at tangemcards.com" />
</LinearLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|start"
android:layout_margin="10dp"
android:src="@drawable/ic_show_menu"
app:backgroundTint="@color/colorPrimary"
app:fabSize="normal" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.constraintlayout.widget.ConstraintLayout>