diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fda44ad52..fc8a5d7492 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
diff --git a/app/src/main/java/com/tangem/di/NetworkModule.java b/app/src/main/java/com/tangem/di/NetworkModule.java
index e457277dc3..e3427f91e1 100644
--- a/app/src/main/java/com/tangem/di/NetworkModule.java
+++ b/app/src/main/java/com/tangem/di/NetworkModule.java
@@ -43,7 +43,7 @@ class NetworkModule {
return new Retrofit.Builder()
.baseUrl(Server.ApiTangem.URL_TANGEM)
.addConverterFactory(GsonConverterFactory.create())
- .client(createHttpClient())
+ .client(createOkHttpClient())
.build();
}
@@ -54,7 +54,7 @@ class NetworkModule {
return new Retrofit.Builder()
.baseUrl(Server.ApiUpdateVersion.URL_UPDATE_VERSION)
.addConverterFactory(GsonConverterFactory.create())
- .client(createHttpClient())
+ .client(createOkHttpClient())
.build();
}
@@ -69,13 +69,13 @@ class NetworkModule {
.build();
}
- private OkHttpClient createHttpClient() {
+ private OkHttpClient createOkHttpClient() {
return new OkHttpClient.Builder().
- addInterceptor(createLogging()).
+ addInterceptor(createHttpLoggingInterceptor()).
build();
}
- private HttpLoggingInterceptor createLogging() {
+ private HttpLoggingInterceptor createHttpLoggingInterceptor() {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
return logging;
diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt
index 1f6c0973d2..f88e5e43d7 100644
--- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt
+++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt
@@ -13,7 +13,6 @@ import android.os.Bundle
import android.preference.PreferenceManager
import android.support.v4.app.Fragment
import android.support.v4.content.ContextCompat
-import android.support.v4.widget.SwipeRefreshLayout
import android.text.Html
import android.util.Log
import android.view.LayoutInflater
@@ -33,7 +32,6 @@ import com.tangem.presentation.activity.*
import com.tangem.presentation.dialog.NoExtendedLengthSupportDialog
import com.tangem.presentation.dialog.PINSwapWarningDialog
import com.tangem.presentation.dialog.WaitSecurityDelayDialog
-import com.tangem.util.BTCUtils
import com.tangem.util.Util
import com.tangem.util.UtilHelper
import com.tangem.wallet.BuildConfig
@@ -63,7 +61,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
private var serverApiHelperElectrum: ServerApiHelperElectrum? = null
var card: TangemCard? = null
private var lastTag: Tag? = null
- var srlLoadedWallet: SwipeRefreshLayout? = null
private var lastReadSuccess = true
private var verifyCardTask: VerifyCardTask? = null
private var requestPIN2Count = 0
@@ -99,9 +96,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
- val v = inflater.inflate(R.layout.fr_loaded_wallet, container, false)
- srlLoadedWallet = v.findViewById(R.id.srlLoadedWallet)
- return v
+ return inflater.inflate(R.layout.fr_loaded_wallet, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -132,7 +127,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
tvWallet.text = card!!.wallet
// set listeners
- srlLoadedWallet!!.setOnRefreshListener { refresh() }
+ srl.setOnRefreshListener { refresh() }
btnLookup.setOnClickListener {
val engineClick = CoinEngineFactory.create(card!!.blockchain)
val browserIntent = Intent(Intent.ACTION_VIEW, engineClick.getShareWalletUriExplorer(card))
@@ -201,31 +196,34 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
startActivity(intent)
}
btnExtract.setOnClickListener {
- if (!card!!.hasBalanceInfo()) {
- showSingleToast(R.string.cannot_obtain_data_from_blockchain)
- } else if (!engine.isBalanceNotZero(card))
- showSingleToast(R.string.wallet_empty)
- else if (!engine.isBalanceAlterNotZero(card))
- showSingleToast(R.string.not_enough_eth_for_gas)
- else if (engine.awaitingConfirmation(card))
- showSingleToast(R.string.please_wait_while_previous)
- else if (!engine.checkUnspentTransaction(card))
- showSingleToast(R.string.please_wait_for_confirmation)
- else if (card!!.remainingSignatures == 0)
- showSingleToast(R.string.card_has_no_remaining_signature)
- else {
- val intent = Intent(context, PreparePaymentActivity::class.java)
- intent.putExtra("UID", card!!.uid)
- intent.putExtra("Card", card!!.asBundle)
- startActivityForResult(intent, REQUEST_CODE_SEND_PAYMENT)
- }
+ if (UtilHelper.isOnline(activity!!)) {
+ if (!card!!.hasBalanceInfo()) {
+ showSingleToast(R.string.cannot_obtain_data_from_blockchain)
+ } else if (!engine.isBalanceNotZero(card))
+ showSingleToast(R.string.wallet_empty)
+ else if (!engine.isBalanceAlterNotZero(card))
+ showSingleToast(R.string.not_enough_eth_for_gas)
+ else if (engine.awaitingConfirmation(card))
+ showSingleToast(R.string.please_wait_while_previous)
+ else if (!engine.checkUnspentTransaction(card))
+ showSingleToast(R.string.please_wait_for_confirmation)
+ else if (card!!.remainingSignatures == 0)
+ showSingleToast(R.string.card_has_no_remaining_signature)
+ else {
+ val intent = Intent(context, PreparePaymentActivity::class.java)
+ intent.putExtra("UID", card!!.uid)
+ intent.putExtra("Card", card!!.asBundle)
+ startActivityForResult(intent, REQUEST_CODE_SEND_PAYMENT)
+ }
+ } else
+ Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
}
// request electrum listener
serverApiHelperElectrum!!.setElectrumRequestData {
requestCounter--
- if (requestCounter == 0) srlLoadedWallet!!.isRefreshing = false
+ if (requestCounter == 0) srl.isRefreshing = false
if (it.isMethod(ElectrumRequest.METHOD_GetBalance)) {
try {
@@ -300,7 +298,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
serverApiHelper!!.setCardVerifyAndGetInfoListener {
requestCounter--
- if (requestCounter == 0) srlLoadedWallet!!.isRefreshing = false
+ if (requestCounter == 0) srl.isRefreshing = false
val result = it.results!![0]
if (result.error != null) {
@@ -345,7 +343,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
card!!.rateAlter = rate
if (requestCounter == 0) {
- srlLoadedWallet!!.isRefreshing = false
+ srl.isRefreshing = false
updateViews()
}
// Log.i(TAG, "setRateInfoData $rate")
@@ -401,7 +399,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
card!!.addTokenToBlockchainName()
requestCounter--
- if (requestCounter == 0) srlLoadedWallet!!.isRefreshing = false
+ if (requestCounter == 0) srl.isRefreshing = false
requestInfura(ServerApiHelper.INFURA_ETH_GET_BALANCE, "")
requestInfura(ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT, "")
@@ -460,7 +458,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
requestCounter--
if (requestCounter == 0) {
- srlLoadedWallet!!.isRefreshing = false
+ srl.isRefreshing = false
updateViews()
}
}
@@ -468,7 +466,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
override fun onInfuraFail(method: String, message: String) {
requestCounter--
if (requestCounter == 0) {
- srlLoadedWallet!!.isRefreshing = false
+ srl.isRefreshing = false
updateViews()
}
}
@@ -478,25 +476,44 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) {
- requestCounter++
- serverApiHelperElectrum!!.electrumRequestData(card, electrumRequest)
+ if (UtilHelper.isOnline(activity!!)) {
+ requestCounter++
+ serverApiHelperElectrum!!.electrumRequestData(card, electrumRequest)
+ } else {
+ Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
+ srl.isRefreshing = false
+ }
+
}
private fun requestInfura(method: String, contract: String) {
- requestCounter++
- serverApiHelper!!.infura(method, 67, card!!.wallet, contract, "")
+ if (UtilHelper.isOnline(activity!!)) {
+ requestCounter++
+ serverApiHelper!!.infura(method, 67, card!!.wallet, contract, "")
+ } else {
+ Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
+ srl.isRefreshing = false
+ }
}
private fun requestCardVerify() {
if ((card!!.isOnlineVerified == null || !card!!.isOnlineVerified)) {
requestCounter++
serverApiHelper!!.cardVerifyAndGetInfo(card)
+ } else {
+ Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
+ srl.isRefreshing = false
}
}
private fun requestRateInfo(cryptoId: String) {
- requestCounter++
- serverApiHelper!!.rateInfoData(cryptoId)
+ if (UtilHelper.isOnline(activity!!)) {
+ requestCounter++
+ serverApiHelper!!.rateInfoData(cryptoId)
+ } else {
+ Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
+ srl.isRefreshing = false
+ }
}
override fun onResume() {
@@ -653,11 +670,10 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
updateViews()
}
REQUEST_CODE_SEND_PAYMENT, REQUEST_CODE_RECEIVE_PAYMENT -> {
-
if (resultCode == Activity.RESULT_OK) {
card!!.clearInfo()
- srlLoadedWallet!!.postDelayed({ this.refresh() }, 5000)
- srlLoadedWallet!!.isRefreshing = true
+ srl.postDelayed({ this.refresh() }, 5000)
+ srl.isRefreshing = true
updateViews()
}
@@ -777,9 +793,9 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
val engine = CoinEngineFactory.create(card!!.blockchain)
- if (srlLoadedWallet!!.isRefreshing) {
+ if (srl.isRefreshing) {
tvBalanceLine1.setTextColor(resources.getColor(R.color.primary))
- tvBalanceLine1.text = "Verifying in blockchain..."
+ tvBalanceLine1.text = getString(R.string.verifying_in_blockchain)
tvBalanceLine2.text = ""
} else {
val validator = BalanceValidator()
@@ -824,11 +840,9 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
- fun refresh() {
-
- // Clear all card data and request again
-
- srlLoadedWallet!!.isRefreshing = true
+ private fun refresh() {
+ // clear all card data and request again
+ srl.isRefreshing = true
card!!.clearInfo()
card!!.error = null
card!!.message = null
diff --git a/app/src/main/java/com/tangem/util/UtilHelper.kt b/app/src/main/java/com/tangem/util/UtilHelper.kt
index d0f2a03dd7..acb24fe5cb 100644
--- a/app/src/main/java/com/tangem/util/UtilHelper.kt
+++ b/app/src/main/java/com/tangem/util/UtilHelper.kt
@@ -1,7 +1,11 @@
package com.tangem.util
+import android.app.Activity
+import android.content.Context
import android.graphics.Bitmap
import android.graphics.Color
+import android.net.ConnectivityManager
+import android.net.NetworkInfo
import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType
import com.google.zxing.WriterException
@@ -32,4 +36,16 @@ object UtilHelper {
return bmp
}
+ fun isOnline(context: Activity): Boolean {
+ return try {
+ val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
+ val netInfo: NetworkInfo?
+ netInfo = cm.activeNetworkInfo
+ netInfo != null && netInfo.isConnectedOrConnecting
+ } catch (e: NullPointerException) {
+ e.printStackTrace()
+ false
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fr_loaded_wallet.xml b/app/src/main/res/layout/fr_loaded_wallet.xml
index ac06eec925..4d25c1369e 100644
--- a/app/src/main/res/layout/fr_loaded_wallet.xml
+++ b/app/src/main/res/layout/fr_loaded_wallet.xml
@@ -12,10 +12,9 @@
tools:showIn="@layout/activity_loaded_wallet">
OK
Cancel
+ Отсутствует подключение к сети
Continue
Not found
Not ISO tag!
@@ -119,6 +120,7 @@
COPY
DETAILS
NEW SCAN
+ Verifying in blockchain…
BETA