diff --git a/.idea/misc.xml b/.idea/misc.xml
index 703e5d4b89..cd2f3a654d 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,6 +5,41 @@
+
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 7151fdcba5..b654558186 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,8 +15,8 @@ android {
applicationId "com.tangem.wallet"
minSdkVersion 21
targetSdkVersion 28
- versionCode 104
- versionName "0.902.2." + generateVersionName()
+ versionCode 106
+ versionName "0.903.2." + generateVersionName()
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
androidExtensions {
diff --git a/app/src/main/java/com/tangem/App.kt b/app/src/main/java/com/tangem/App.kt
index 5624dfb960..f4c1acd03a 100644
--- a/app/src/main/java/com/tangem/App.kt
+++ b/app/src/main/java/com/tangem/App.kt
@@ -5,13 +5,10 @@ import androidx.appcompat.app.AppCompatDelegate
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.tangem.data.local.PendingTransactionsStorage
-import com.tangem.di.DaggerNavigatorComponent
-import com.tangem.di.DaggerNetworkComponent
-import com.tangem.di.NavigatorComponent
-import com.tangem.di.NetworkComponent
import com.tangem.card_android.android.data.Firmwares
import com.tangem.card_android.android.data.PINStorage
import com.tangem.card_common.data.Issuer
+import com.tangem.di.*
import com.tangem.server_android.data.LocalStorage
import java.io.InputStreamReader
import java.nio.charset.StandardCharsets
@@ -26,10 +23,9 @@ class App : Application() {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
}
- var networkComponent: NetworkComponent? = null
- private set
- var navigatorComponent: NavigatorComponent? = null
- private set
+ lateinit var networkComponent: NetworkComponent
+ lateinit var navigatorComponent: NavigatorComponent
+ lateinit var toastHelperComponent: ToastHelperComponent
lateinit var firmwaresStorage: Firmwares
lateinit var localStorage: LocalStorage
@@ -44,6 +40,7 @@ class App : Application() {
networkComponent = DaggerNetworkComponent.create()
navigatorComponent = buildNavigatorComponent()
+ toastHelperComponent = buildToastHelperComponent()
// common init
if (PINStorage.needInit())
@@ -62,6 +59,11 @@ class App : Application() {
.build()
}
+ private fun buildToastHelperComponent(): ToastHelperComponent {
+ return DaggerToastHelperComponent.builder()
+ .build()
+ }
+
private fun initIssuers() {
try {
applicationContext.assets.open("issuers.json").use { `is` ->
diff --git a/app/src/main/java/com/tangem/Constant.kt b/app/src/main/java/com/tangem/Constant.kt
index 433d912aa0..6283ce6435 100644
--- a/app/src/main/java/com/tangem/Constant.kt
+++ b/app/src/main/java/com/tangem/Constant.kt
@@ -4,14 +4,22 @@ import android.app.Activity
object Constant {
+ const val URL_TANGEM = "https://play.google.com/store/apps/details?id=com.tangem.wallet"
+
const val EXTRA_BLOCKCHAIN_DATA = "BLOCKCHAIN_DATA"
+ const val WALLET_ADDRESS = "Wallet address"
+
const val EXTRA_MESSAGE = "message"
const val EXTRA_MODIFICATION = "modification"
const val EXTRA_MODIFICATION_DELETE = "delete"
const val EXTRA_MODIFICATION_UPDATE = "update"
+ const val EXTRA_MODE = "mode"
+
+ const val INTENT_TYPE_TEXT_PLAIN = "text/plain"
+
// LoadedWallet, VerifyCard
const val REQUEST_CODE_SEND_TRANSACTION = 1
const val REQUEST_CODE_PURGE = 2
@@ -37,7 +45,7 @@ object Constant {
const val MILLIS_AUTO_HIDE = 1000
// PinRequestActivity
- const val EXTRA_MODE = "mode"
+
const val KEY_ALIAS = "pinKey"
const val KEYSTORE = "AndroidKeyStore"
diff --git a/app/src/main/java/com/tangem/di/NavigatorModule.kt b/app/src/main/java/com/tangem/di/NavigatorModule.kt
index 7e4ee23826..0028345e74 100644
--- a/app/src/main/java/com/tangem/di/NavigatorModule.kt
+++ b/app/src/main/java/com/tangem/di/NavigatorModule.kt
@@ -16,6 +16,12 @@ internal class NavigatorModule {
return Navigator()
}
+ @Singleton
+ @Provides
+ fun provideToastHelper(): ToastHelper {
+ return ToastHelper()
+ }
+
@Singleton
@Provides
fun provideWaitSecurityDelayDialogNew(): WaitSecurityDelayDialogNew {
diff --git a/app/src/main/java/com/tangem/di/ToastHelper.kt b/app/src/main/java/com/tangem/di/ToastHelper.kt
new file mode 100644
index 0000000000..de340aecea
--- /dev/null
+++ b/app/src/main/java/com/tangem/di/ToastHelper.kt
@@ -0,0 +1,27 @@
+package com.tangem.di
+
+import android.content.ActivityNotFoundException
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.view.ViewGroup
+import com.google.android.material.snackbar.Snackbar
+import com.tangem.Constant
+import com.tangem.wallet.R
+
+class ToastHelper {
+
+ fun showSnackbarUpdateVersion(context: Context, vg: ViewGroup, versionName: String) {
+ Snackbar.make(vg, String.format(context.getString(R.string.new_app_version), versionName), Snackbar.LENGTH_INDEFINITE)
+ .setAction(R.string.update) {
+ try {
+ val intent = Intent(Intent.ACTION_VIEW)
+ intent.data = Uri.parse(Constant.URL_TANGEM)
+ context.startActivity(intent)
+ } catch (e: ActivityNotFoundException) {
+ e.printStackTrace()
+ }
+ }.show()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/di/ToastHelperComponent.kt b/app/src/main/java/com/tangem/di/ToastHelperComponent.kt
new file mode 100644
index 0000000000..b98d944333
--- /dev/null
+++ b/app/src/main/java/com/tangem/di/ToastHelperComponent.kt
@@ -0,0 +1,13 @@
+package com.tangem.di
+
+import com.tangem.ui.activity.MainActivity
+import dagger.Component
+import javax.inject.Singleton
+
+@Singleton
+@Component(modules = [NavigatorModule::class])
+interface ToastHelperComponent {
+
+ fun inject(activity: MainActivity)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/domain/wallet/btc/BtcEngine.java b/app/src/main/java/com/tangem/domain/wallet/btc/BtcEngine.java
index 4f27c40330..824bee559a 100644
--- a/app/src/main/java/com/tangem/domain/wallet/btc/BtcEngine.java
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BtcEngine.java
@@ -759,71 +759,64 @@ public class BtcEngine extends CoinEngine {
public void requestFee(BlockchainRequestsCallbacks blockchainRequestsCallbacks, String targetAddress, Amount amount) throws Exception {
final int calcSize = calculateEstimatedTransactionSize(targetAddress, amount.toValueString());
Log.e(TAG, String.format("Estimated tx size %d", calcSize));
- coinData.minFee = null;
- coinData.maxFee = null;
- coinData.normalFee = null;
+ coinData.minFee=null;
+ coinData.maxFee=null;
+ coinData.normalFee=null;
- final ServerApiCommon serverApiCommon = new ServerApiCommon();
+ final ServerApiElectrum serverApiElectrum = new ServerApiElectrum();
- final ServerApiCommon.EstimatedFeeListener estimatedFeeListener = new ServerApiCommon.EstimatedFeeListener() {
+ final ServerApiElectrum.ResponseListener electrumListener = new ServerApiElectrum.ResponseListener() {
@Override
- public void onSuccess(int blockCount, String estimateFeeResponse) {
- BigDecimal fee = new BigDecimal(estimateFeeResponse); // BTC per 1 kb
+ public void onSuccess(ElectrumRequest electrumRequest) {
+ BigDecimal fee;
+ if (electrumRequest.isMethod(ElectrumRequest.METHOD_GetFee)) {
+ try {
+ fee = new BigDecimal(electrumRequest.getResultString()); //fee per KB
- if (fee.equals(BigDecimal.ZERO)) {
- if (blockchainRequestsCallbacks.allowAdvance()) {
- serverApiCommon.requestBtcEstimatedFee(blockCount);
+ if (fee.equals(BigDecimal.ZERO)) {
+ serverApiElectrum.requestData(ctx, ElectrumRequest.getFee());
+ }
+
+// if (calcSize != 0) {
+ fee = fee.multiply(new BigDecimal(calcSize)).divide(new BigDecimal(1024)); // (per KB -> per byte)*size
+// } else {
+// serverApiElectrum.requestData(ctx, ElectrumRequest.getFee());
+// }
+
+ //compare fee to usual relay fee
+// if (fee.compareTo(relayFee) < 0) {
+// fee = relayFee;
+// }
+ fee = fee.setScale(8, RoundingMode.DOWN);
+
+ CoinEngine.Amount minAmount = new CoinEngine.Amount(fee, ctx.getBlockchain().getCurrency());
+ CoinEngine.Amount normalAmount = new CoinEngine.Amount(fee.multiply(new BigDecimal(3)), ctx.getBlockchain().getCurrency());
+ CoinEngine.Amount maxAmount = new CoinEngine.Amount(fee.multiply(new BigDecimal(6)), ctx.getBlockchain().getCurrency());
+
+ coinData.minFee = minAmount;
+ coinData.normalFee = normalAmount;
+ coinData.maxFee = maxAmount;
+// if (coinData.minFee != null && coinData.normalFee != null && coinData.maxFee != null) {
+ blockchainRequestsCallbacks.onComplete(true);
+// } else {
+// blockchainRequestsCallbacks.onProgress();
+// }
+
+ } catch (JSONException e) {
+ e.printStackTrace();
}
- return;
- }
-
- if (calcSize != 0) {
- fee = fee.multiply(new BigDecimal(calcSize)).divide(new BigDecimal(1024), BigDecimal.ROUND_DOWN); // per Kb -> per byte
- } else {
- if (blockchainRequestsCallbacks.allowAdvance()) {
- serverApiCommon.requestBtcEstimatedFee(blockCount);
- }
- return;
- }
-
- fee = fee.setScale(8, RoundingMode.DOWN);
-
- switch (blockCount) {
- case ServerApiCommon.ESTIMATE_FEE_MINIMAL:
- coinData.minFee = new CoinEngine.Amount(fee, getFeeCurrency());
- break;
- case ServerApiCommon.ESTIMATE_FEE_NORMAL:
- coinData.normalFee = new CoinEngine.Amount(fee, getFeeCurrency());
- break;
- case ServerApiCommon.ESTIMATE_FEE_PRIORITY:
- coinData.maxFee = new CoinEngine.Amount(fee, getFeeCurrency());
- break;
- }
-
- if (coinData.minFee != null && coinData.normalFee != null && coinData.maxFee != null) {
- blockchainRequestsCallbacks.onComplete(true);
- } else {
- blockchainRequestsCallbacks.onProgress();
}
}
@Override
- public void onFail(int blockCount, String message) {
- // TODO - add fail counter to terminate after NNN tries
- if (blockchainRequestsCallbacks.allowAdvance()) {
- serverApiCommon.requestBtcEstimatedFee(blockCount);
- return;
- }
- ctx.setError(ctx.getContext().getString(R.string.cannot_calculate_fee_wrong_data_received_from_node));
+ public void onFail(ElectrumRequest electrumRequest) {
+ ctx.setError(electrumRequest.getError());
blockchainRequestsCallbacks.onComplete(false);
}
};
- serverApiCommon.setBtcEstimatedFeeListener(estimatedFeeListener);
-
- serverApiCommon.requestBtcEstimatedFee(ServerApiCommon.ESTIMATE_FEE_PRIORITY);
- serverApiCommon.requestBtcEstimatedFee(ServerApiCommon.ESTIMATE_FEE_NORMAL);
- serverApiCommon.requestBtcEstimatedFee(ServerApiCommon.ESTIMATE_FEE_MINIMAL);
+ serverApiElectrum.setResponseListener(electrumListener);
+ serverApiElectrum.requestData(ctx, ElectrumRequest.getFee());
}
@Override
diff --git a/app/src/main/java/com/tangem/ui/activity/CreateNewWalletActivity.kt b/app/src/main/java/com/tangem/ui/activity/CreateNewWalletActivity.kt
index c8190e6477..c09d220e7b 100644
--- a/app/src/main/java/com/tangem/ui/activity/CreateNewWalletActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/CreateNewWalletActivity.kt
@@ -33,6 +33,7 @@ import com.tangem.card_android.data.EXTRA_TANGEM_CARD
import com.tangem.card_android.data.EXTRA_TANGEM_CARD_UID
class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtocol.Notifications {
+
companion object {
fun callingIntent(context: Context, ctx: TangemContext): Intent {
val intent = Intent(context, CreateNewWalletActivity::class.java)
@@ -69,26 +70,21 @@ class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback,
}
override fun onTagDiscovered(tag: Tag) {
- try {
- // get IsoDep handle and run cardReader thread
- val isoDep = IsoDep.get(tag)
- val uid = tag.id
- val sUID = Util.byteArrayToHexString(uid)
+ // get IsoDep handle and run cardReader thread
+ val isoDep = IsoDep.get(tag)
+ val uid = tag.id
+ val sUID = Util.byteArrayToHexString(uid)
- if (sUID == ctx.card.uid) {
- if (lastReadSuccess)
- isoDep.timeout = ctx.card.pauseBeforePIN2 + 5000
- else
- isoDep.timeout = ctx.card.pauseBeforePIN2 + 65000
+ if (sUID == ctx.card.uid) {
+ if (lastReadSuccess)
+ isoDep.timeout = ctx.card.pauseBeforePIN2 + 5000
+ else
+ isoDep.timeout = ctx.card.pauseBeforePIN2 + 65000
- createNewWalletTask = CreateNewWalletTask(ctx.card, NfcReader(nfcManager, isoDep), App.localStorage, App.pinStorage, this)
- createNewWalletTask?.start()
- } else {
- nfcManager.ignoreTag(isoDep.tag)
- }
- } catch (e: Exception) {
- e.printStackTrace()
- }
+ createNewWalletTask = CreateNewWalletTask(ctx.card, NfcReader(nfcManager, isoDep), App.localStorage, App.pinStorage, this)
+ createNewWalletTask?.start()
+ } else
+ nfcManager.ignoreTag(isoDep.tag)
}
public override fun onPause() {
@@ -143,37 +139,27 @@ class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback,
}
}, 500)
} else {
- progressBar!!.post {
+ progressBar?.post {
if (cardProtocol.error is CardProtocol.TangemException_ExtendedLengthNotSupported) {
if (!NoExtendedLengthSupportDialog.allReadyShowed) {
NoExtendedLengthSupportDialog().show(supportFragmentManager, NoExtendedLengthSupportDialog.TAG)
}
- } else {
- Toast.makeText(baseContext, R.string.try_to_scan_again, Toast.LENGTH_SHORT).show()
- }
- progressBar!!.progress = 100
- progressBar!!.progressTintList = ColorStateList.valueOf(Color.RED)
+ } else
+ Toast.makeText(this, R.string.try_to_scan_again, Toast.LENGTH_SHORT).show()
+
+ progressBar?.progress = 100
+ progressBar?.progressTintList = ColorStateList.valueOf(Color.RED)
}
}
}
}
- rlProgressBar.postDelayed({
- try {
- rlProgressBar.visibility = View.GONE
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }, 500)
+ rlProgressBar.postDelayed({ rlProgressBar?.visibility = View.GONE }, 500)
progressBar?.postDelayed({
- try {
- progressBar?.progress = 0
- progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
- progressBar?.visibility = View.INVISIBLE
- } catch (e: Exception) {
- e.printStackTrace()
- }
+ progressBar?.progress = 0
+ progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
+ progressBar?.visibility = View.INVISIBLE
}, 500)
}
@@ -185,13 +171,9 @@ class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback,
createNewWalletTask = null
progressBar?.postDelayed({
- try {
- progressBar?.progress = 0
- progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
- progressBar?.visibility = View.INVISIBLE
- } catch (e: Exception) {
- e.printStackTrace()
- }
+ progressBar?.progress = 0
+ progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
+ progressBar?.visibility = View.INVISIBLE
}, 500)
}
diff --git a/app/src/main/java/com/tangem/ui/activity/EmptyWalletActivity.kt b/app/src/main/java/com/tangem/ui/activity/EmptyWalletActivity.kt
index 73c45ccee3..ce1adb51fd 100644
--- a/app/src/main/java/com/tangem/ui/activity/EmptyWalletActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/EmptyWalletActivity.kt
@@ -64,7 +64,7 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_empty_wallet)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
nfcManager = NfcManager(this, this)
lifecycle.addObserver(NfcLifecycleObserver(nfcManager))
@@ -89,7 +89,7 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
btnNewWallet.setOnClickListener {
requestPIN2Count = 0
val intent = Intent(baseContext, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
intent.putExtra(EXTRA_TANGEM_CARD_UID, ctx.card!!.uid)
intent.putExtra(EXTRA_TANGEM_CARD, ctx.card!!.asBundle)
startActivityForResult(intent, Constant.REQUEST_CODE_REQUEST_PIN2)
@@ -107,7 +107,7 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
if (requestCode == Constant.REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY) {
if (resultCode == Activity.RESULT_OK) {
if (data != null) {
- data.putExtra("modification", "updateAndViewCard")
+ data.putExtra(Constant.EXTRA_MODIFICATION, "updateAndViewCard")
data.putExtra("updateDelay", 0)
setResult(Activity.RESULT_OK, data)
}
@@ -121,7 +121,7 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
if (resultCode == Constant.RESULT_INVALID_PIN && requestPIN2Count < 2) {
requestPIN2Count++
val intent = Intent(baseContext, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
intent.putExtra(EXTRA_TANGEM_CARD_UID, ctx.card!!.uid)
intent.putExtra(EXTRA_TANGEM_CARD, ctx.card!!.asBundle)
startActivityForResult(intent, Constant.REQUEST_CODE_REQUEST_PIN2)
diff --git a/app/src/main/java/com/tangem/ui/activity/LoadedWalletActivity.kt b/app/src/main/java/com/tangem/ui/activity/LoadedWalletActivity.kt
index 8026d17341..ed8ecb2152 100644
--- a/app/src/main/java/com/tangem/ui/activity/LoadedWalletActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/LoadedWalletActivity.kt
@@ -32,7 +32,7 @@ class LoadedWalletActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_loaded_wallet)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
if (intent.extras!!.containsKey(NfcAdapter.EXTRA_TAG)) {
val tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
diff --git a/app/src/main/java/com/tangem/ui/activity/LogoActivity.kt b/app/src/main/java/com/tangem/ui/activity/LogoActivity.kt
index 9b1baa5087..93e2452276 100644
--- a/app/src/main/java/com/tangem/ui/activity/LogoActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/LogoActivity.kt
@@ -31,7 +31,7 @@ class LogoActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_logo)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
ivLogo.setOnClickListener { hide() }
}
diff --git a/app/src/main/java/com/tangem/ui/activity/MainActivity.kt b/app/src/main/java/com/tangem/ui/activity/MainActivity.kt
index cff1c18a5c..4ee6e16658 100644
--- a/app/src/main/java/com/tangem/ui/activity/MainActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/MainActivity.kt
@@ -2,10 +2,13 @@ package com.tangem.ui.activity
import android.Manifest
import android.app.Activity
+import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.pm.PackageManager
+import android.graphics.Color
+import android.net.Uri
import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.IsoDep
@@ -18,6 +21,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.PopupMenu
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
+import com.google.android.material.snackbar.Snackbar
import com.scottyab.rootbeer.RootBeer
import com.tangem.App
import com.tangem.Constant
@@ -50,6 +54,7 @@ import java.util.*
import javax.inject.Inject
import com.tangem.card_android.data.EXTRA_TANGEM_CARD
import com.tangem.card_android.data.EXTRA_TANGEM_CARD_UID
+import com.tangem.di.ToastHelper
class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtocol.Notifications, PopupMenu.OnMenuItemClickListener {
@@ -60,6 +65,8 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco
@Inject
internal lateinit var navigator: Navigator
+ @Inject
+ internal lateinit var toastHelper: ToastHelper
private lateinit var nfcManager: NfcManager
@@ -83,7 +90,8 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
+ App.toastHelperComponent.inject(this)
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
@@ -128,11 +136,13 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco
val apiHelper = ServerApiCommon()
apiHelper.setLastVersionListener { response ->
try {
- if (response.isNullOrEmpty()) return@setLastVersionListener
+ if (response.isNullOrEmpty())
+ return@setLastVersionListener
val responseVersionName = response.trim(' ', '\n', '\r', '\t')
val responseBuildVersion = responseVersionName.split('.').last()
val appBuildVersion = BuildConfig.VERSION_NAME.split('.').last()
- if (responseBuildVersion.toInt() > appBuildVersion.toInt()) Toast.makeText(this, "There is a new application version: $responseVersionName", Toast.LENGTH_LONG).show()
+ if (responseBuildVersion.toInt() > appBuildVersion.toInt())
+ toastHelper.showSnackbarUpdateVersion(this, cl, responseVersionName)
} catch (E: Exception) {
E.printStackTrace()
}
@@ -275,7 +285,7 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco
cardInfo.putBundle(EXTRA_TANGEM_CARD, bCard)
cardProtocol.card.saveToBundle(bCard)
- val uid = cardInfo.getString("UID")
+ val uid = cardInfo.getString(EXTRA_TANGEM_CARD_UID)
val card = TangemCard(uid)
cardInfo.getBundle(EXTRA_TANGEM_CARD)?.let { card.loadFromBundle(it) }
@@ -288,7 +298,6 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco
navigator.showLoadedWallet(this, it, ctx)
}
}
-// ?: throw CardProtocol.TangemException("Can't create CoinEngine!")
card.status == TangemCard.Status.Empty -> navigator.showEmptyWallet(this, ctx)
card.status == TangemCard.Status.Purged -> Toast.makeText(this, R.string.erased_wallet, Toast.LENGTH_SHORT).show()
card.status == TangemCard.Status.NotPersonalized -> Toast.makeText(this, R.string.not_personalized, Toast.LENGTH_SHORT).show()
diff --git a/app/src/main/java/com/tangem/ui/activity/PinRequestActivity.kt b/app/src/main/java/com/tangem/ui/activity/PinRequestActivity.kt
index 70d69899d6..f0e8188008 100644
--- a/app/src/main/java/com/tangem/ui/activity/PinRequestActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/PinRequestActivity.kt
@@ -218,15 +218,15 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge
if (mode == Mode.RequestNewPIN || mode == Mode.ConfirmNewPIN) {
val resultData = Intent()
val pin = PINStorage.loadEncryptedPIN(cipher)
- resultData.putExtra("newPIN", pin)
- resultData.putExtra("confirmPIN", pin)
+ resultData.putExtra(Constant.EXTRA_NEW_PIN, pin)
+ resultData.putExtra(Constant.EXTRA_CONFIRM_PIN, pin)
setResult(Activity.RESULT_OK, resultData)
finish()
} else if (mode == Mode.RequestNewPIN2 || mode == Mode.ConfirmNewPIN2) {
val resultData = Intent()
val pin = PINStorage.loadEncryptedPIN2(cipher)
- resultData.putExtra("newPIN2", pin)
- resultData.putExtra("confirmPIN2", pin)
+ resultData.putExtra(Constant.EXTRA_NEW_PIN_2, pin)
+ resultData.putExtra(Constant.EXTRA_CONFIRM_PIN_2, pin)
setResult(Activity.RESULT_OK, resultData)
finish()
} else if (mode == Mode.RequestPIN) {
@@ -297,13 +297,13 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge
var focusView: View? = null
if (mode == Mode.ConfirmNewPIN) {
- if (pin != intent.getStringExtra("newPIN")) {
+ if (pin != intent.getStringExtra(Constant.EXTRA_NEW_PIN)) {
tvPin!!.error = getString(R.string.error_pin_confirmation_failed)
focusView = tvPin
cancel = true
}
} else if (mode == Mode.ConfirmNewPIN2) {
- if (pin != intent.getStringExtra("newPIN2")) {
+ if (pin != intent.getStringExtra(Constant.EXTRA_NEW_PIN_2)) {
tvPin!!.error = getString(R.string.error_pin_confirmation_failed)
focusView = tvPin
cancel = true
@@ -321,17 +321,17 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge
else {
if (mode == Mode.RequestNewPIN || mode == Mode.ConfirmNewPIN) {
val resultData = Intent()
- resultData.putExtra("newPIN", pin)
+ resultData.putExtra(Constant.EXTRA_NEW_PIN, pin)
if (mode == Mode.ConfirmNewPIN)
- resultData.putExtra("confirmPIN", pin)
+ resultData.putExtra(Constant.EXTRA_CONFIRM_PIN, pin)
setResult(Activity.RESULT_OK, resultData)
finish()
} else if (mode == Mode.RequestNewPIN2 || mode == Mode.ConfirmNewPIN2) {
val resultData = Intent()
- resultData.putExtra("newPIN2", pin)
+ resultData.putExtra(Constant.EXTRA_NEW_PIN_2, pin)
if (mode == Mode.ConfirmNewPIN2)
- resultData.putExtra("confirmPIN2", pin)
+ resultData.putExtra(Constant.EXTRA_CONFIRM_PIN_2, pin)
setResult(Activity.RESULT_OK, resultData)
finish()
diff --git a/app/src/main/java/com/tangem/ui/activity/PinSwapActivity.kt b/app/src/main/java/com/tangem/ui/activity/PinSwapActivity.kt
index d7f5e2b4c3..813d237ea9 100644
--- a/app/src/main/java/com/tangem/ui/activity/PinSwapActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/PinSwapActivity.kt
@@ -136,7 +136,7 @@ class PinSwapActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProt
progressBar!!.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
progressBar!!.visibility = View.INVISIBLE
val intent = Intent()
- intent.putExtra("message", "Cannot change PIN(s). Make sure you enter correct PIN2!")
+ intent.putExtra(Constant.EXTRA_MESSAGE, "Cannot change PIN(s). Make sure you enter correct PIN2!")
intent.putExtra(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid)
intent.putExtra(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle)
setResult(RESULT_INVALID_PIN, intent)
diff --git a/app/src/main/java/com/tangem/ui/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt b/app/src/main/java/com/tangem/ui/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt
index 9a7245e542..fb878b2629 100644
--- a/app/src/main/java/com/tangem/ui/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt
@@ -42,7 +42,7 @@ class PrepareCryptonitOtherApiWithdrawalActivity : AppCompatActivity(), NfcAdapt
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_prepare_cryptonit_other_api_withdrawal)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
nfcManager = NfcManager(this, this)
lifecycle.addObserver(NfcLifecycleObserver(nfcManager))
diff --git a/app/src/main/java/com/tangem/ui/activity/PrepareKrakenWithdrawalActivity.kt b/app/src/main/java/com/tangem/ui/activity/PrepareKrakenWithdrawalActivity.kt
index 0e1f03864a..370df3dc68 100644
--- a/app/src/main/java/com/tangem/ui/activity/PrepareKrakenWithdrawalActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/PrepareKrakenWithdrawalActivity.kt
@@ -52,7 +52,7 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_prepare_kraken_withdrawal)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
ctx = TangemContext.loadFromBundle(this, intent.extras)
diff --git a/app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt b/app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt
index 684c06fe39..9789a22815 100644
--- a/app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt
@@ -47,7 +47,7 @@ class PrepareTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallbac
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_prepare_transaction)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
nfcManager = NfcManager(this, this)
lifecycle.addObserver(NfcLifecycleObserver(nfcManager))
diff --git a/app/src/main/java/com/tangem/ui/activity/PurgeActivity.kt b/app/src/main/java/com/tangem/ui/activity/PurgeActivity.kt
index 58e3bc942e..1dc1095f33 100644
--- a/app/src/main/java/com/tangem/ui/activity/PurgeActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/PurgeActivity.kt
@@ -14,6 +14,7 @@ import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.tangem.App
+import com.tangem.Constant
import com.tangem.domain.wallet.TangemContext
import com.tangem.ui.dialog.NoExtendedLengthSupportDialog
import com.tangem.ui.dialog.WaitSecurityDelayDialog
@@ -63,7 +64,7 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_purge)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
@@ -175,7 +176,7 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
val intent = Intent()
intent.putExtra(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid)
intent.putExtra(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle)
- intent.putExtra("message", getString(R.string.cannot_erase_wallet))
+ intent.putExtra(Constant.EXTRA_MESSAGE, getString(R.string.cannot_erase_wallet))
setResult(RESULT_INVALID_PIN, intent)
finish()
} catch (e: Exception) {
diff --git a/app/src/main/java/com/tangem/ui/activity/VerifyCardActivity.kt b/app/src/main/java/com/tangem/ui/activity/VerifyCardActivity.kt
index c9942b0195..1321576d1a 100644
--- a/app/src/main/java/com/tangem/ui/activity/VerifyCardActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/VerifyCardActivity.kt
@@ -29,7 +29,7 @@ class VerifyCardActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_verify_card)
- App.navigatorComponent?.inject(this)
+ App.navigatorComponent.inject(this)
}
override fun onBackPressed() {
diff --git a/app/src/main/java/com/tangem/ui/dialog/PINSwapWarningDialog.java b/app/src/main/java/com/tangem/ui/dialog/PINSwapWarningDialog.java
index 50b24b101e..a977511814 100644
--- a/app/src/main/java/com/tangem/ui/dialog/PINSwapWarningDialog.java
+++ b/app/src/main/java/com/tangem/ui/dialog/PINSwapWarningDialog.java
@@ -8,13 +8,13 @@ import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
+import com.tangem.Constant;
import com.tangem.wallet.R;
public class PINSwapWarningDialog extends DialogFragment {
public static final String TAG = PINSwapWarningDialog.class.getSimpleName();
- public static final String EXTRA_MESSAGE = "message";
- private String message;
+ private String message = "";
private OnPositiveButton mOnPositiveButton;
public interface OnPositiveButton {
@@ -28,7 +28,9 @@ public class PINSwapWarningDialog extends DialogFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- message = getArguments().getString(EXTRA_MESSAGE);
+ if (getArguments() != null) {
+ message = getArguments().getString(Constant.EXTRA_MESSAGE);
+ }
}
@NonNull
@@ -45,7 +47,7 @@ public class PINSwapWarningDialog extends DialogFragment {
}
@Override
- public void onCancel(DialogInterface dialog) {
+ public void onCancel(@NonNull DialogInterface dialog) {
super.onCancel(dialog);
}
diff --git a/app/src/main/java/com/tangem/ui/dialog/ShowQRCodeDialog.java b/app/src/main/java/com/tangem/ui/dialog/ShowQRCodeDialog.java
index 49646c489f..119c2a6e49 100644
--- a/app/src/main/java/com/tangem/ui/dialog/ShowQRCodeDialog.java
+++ b/app/src/main/java/com/tangem/ui/dialog/ShowQRCodeDialog.java
@@ -21,6 +21,8 @@ import androidx.fragment.app.DialogFragment;
* Created by dvol on 06.03.2018.
*/
public class ShowQRCodeDialog extends DialogFragment {
+ public static final String TAG = ShowQRCodeDialog.class.getSimpleName();
+
private ImageView ivQR;
private TextView tvQRaddress;
private Bitmap bmQR;
@@ -71,7 +73,7 @@ public class ShowQRCodeDialog extends DialogFragment {
activity.runOnUiThread(() -> {
ShowQRCodeDialog instance = new ShowQRCodeDialog();
instance.setup(content);
- instance.show(activity.getSupportFragmentManager(), "ShowQRCodeDialog");
+ instance.show(activity.getSupportFragmentManager(), TAG);
});
}
diff --git a/app/src/main/java/com/tangem/ui/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/ui/fragment/LoadedWallet.kt
index cafb001a58..1a71db7376 100644
--- a/app/src/main/java/com/tangem/ui/fragment/LoadedWallet.kt
+++ b/app/src/main/java/com/tangem/ui/fragment/LoadedWallet.kt
@@ -360,9 +360,9 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback
pinSwapWarningDialog.setOnRefreshPage { (activity as LoadedWalletActivity).navigator.showPinSwap(context as Activity, newPIN, newPIN2) }
val bundle = Bundle()
if (!CardProtocol.isDefaultPIN(newPIN) || !CardProtocol.isDefaultPIN2(newPIN2))
- bundle.putString(PINSwapWarningDialog.EXTRA_MESSAGE, getString(R.string.if_you_forget))
+ bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.if_you_forget))
else
- bundle.putString(PINSwapWarningDialog.EXTRA_MESSAGE, getString(R.string.if_you_use_default))
+ bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.if_you_use_default))
pinSwapWarningDialog.arguments = bundle
activity?.supportFragmentManager?.let { pinSwapWarningDialog.show(it, PINSwapWarningDialog.TAG) }
}
@@ -388,8 +388,8 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback
(activity as LoadedWalletActivity).navigator.showPinRequestRequestPin2(context as Activity, PinRequestActivity.Mode.RequestPIN2.toString(), ctx)
return
} else {
- if (data != null && data.extras!!.containsKey("message")) {
- ctx.error = data.getStringExtra("message")
+ if (data != null && data.extras!!.containsKey(Constant.EXTRA_MESSAGE)) {
+ ctx.error = data.getStringExtra(Constant.EXTRA_MESSAGE)
}
}
}
@@ -420,8 +420,8 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback
return
} else {
- if (data != null && data.extras!!.containsKey("message")) {
- ctx.error = data.getStringExtra("message")
+ if (data != null && data.extras!!.containsKey(Constant.EXTRA_MESSAGE)) {
+ ctx.error = data.getStringExtra(Constant.EXTRA_MESSAGE)
}
}
updateViews()
@@ -622,10 +622,6 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback
btnExtract.isEnabled = false
btnExtract.backgroundTintList = inactiveColor
}
-
-// //TODO why ???
-// ctx.error = null
-// ctx.message = null
}
private fun refresh() {
@@ -767,10 +763,10 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback
private fun doShareWallet(useURI: Boolean) {
if (useURI) {
val engine = CoinEngineFactory.create(ctx)
- val txtShare = engine!!.shareWalletUri.toString()
+ val txtShare = engine?.shareWalletUri.toString()
val intent = Intent(Intent.ACTION_SEND)
- intent.type = "text/plain"
- intent.putExtra(Intent.EXTRA_SUBJECT, "Wallet address")
+ intent.type = Constant.INTENT_TYPE_TEXT_PLAIN
+ intent.putExtra(Intent.EXTRA_SUBJECT, Constant.WALLET_ADDRESS)
intent.putExtra(Intent.EXTRA_TEXT, txtShare)
val packageManager = activity?.packageManager
diff --git a/app/src/main/java/com/tangem/ui/fragment/VerifyCard.kt b/app/src/main/java/com/tangem/ui/fragment/VerifyCard.kt
index 302c7f2347..c13af16ed7 100644
--- a/app/src/main/java/com/tangem/ui/fragment/VerifyCard.kt
+++ b/app/src/main/java/com/tangem/ui/fragment/VerifyCard.kt
@@ -6,7 +6,6 @@ import android.nfc.NfcAdapter
import android.nfc.Tag
import android.os.Build
import android.os.Bundle
-import androidx.core.content.ContextCompat
import android.text.Html
import android.text.format.DateUtils
import android.view.LayoutInflater
@@ -14,21 +13,24 @@ import android.view.View
import android.view.ViewGroup
import android.widget.PopupMenu
import android.widget.Toast
+import androidx.core.content.ContextCompat
import com.tangem.App
import com.tangem.Constant
-import com.tangem.data.Blockchain
-import com.tangem.domain.wallet.CoinEngineFactory
-import com.tangem.domain.wallet.TangemContext
-import com.tangem.ui.activity.*
-import com.tangem.ui.dialog.PINSwapWarningDialog
-import com.tangem.ui.event.DeletingWalletFinish
import com.tangem.card_android.android.data.PINStorage
import com.tangem.card_android.android.nfc.NfcLifecycleObserver
import com.tangem.card_android.android.reader.NfcManager
+import com.tangem.card_android.data.EXTRA_TANGEM_CARD
+import com.tangem.card_android.data.EXTRA_TANGEM_CARD_UID
import com.tangem.card_android.data.loadFromBundle
import com.tangem.card_common.data.TangemCard
import com.tangem.card_common.reader.CardProtocol
-import com.tangem.util.LOG
+import com.tangem.data.Blockchain
+import com.tangem.domain.wallet.CoinEngineFactory
+import com.tangem.domain.wallet.TangemContext
+import com.tangem.ui.activity.PinRequestActivity
+import com.tangem.ui.activity.VerifyCardActivity
+import com.tangem.ui.dialog.PINSwapWarningDialog
+import com.tangem.ui.event.DeletingWalletFinish
import com.tangem.wallet.BuildConfig
import com.tangem.wallet.R
import kotlinx.android.synthetic.main.fr_verify_card.*
@@ -73,7 +75,7 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
btnOk.setOnClickListener {
val data = prepareResultIntent()
- data.putExtra(Constant.EXTRA_MODIFICATION, "update")
+ data.putExtra(Constant.EXTRA_MODIFICATION, getString(R.string.update))
activity?.finish()
}
}
@@ -96,20 +98,19 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
- LOG.i(TAG, "requestCode $requestCode resultCode $resultCode")
when (requestCode) {
Constant.REQUEST_CODE_ENTER_NEW_PIN -> if (resultCode == Activity.RESULT_OK) {
if (data != null) {
- if (data.extras!!.containsKey("confirmPIN")) {
+ if (data.extras!!.containsKey(Constant.EXTRA_CONFIRM_PIN)) {
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
ctx.saveToIntent(intent)
- newPIN = data.getStringExtra("newPIN")
+ newPIN = data.getStringExtra(Constant.EXTRA_NEW_PIN)
startActivityForResult(intent, Constant.REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
} else {
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("newPIN", data.getStringExtra("newPIN"))
- intent.putExtra("mode", PinRequestActivity.Mode.ConfirmNewPIN.toString())
+ intent.putExtra(Constant.EXTRA_NEW_PIN, data.getStringExtra(Constant.EXTRA_NEW_PIN))
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.ConfirmNewPIN.toString())
startActivityForResult(intent, Constant.REQUEST_CODE_ENTER_NEW_PIN)
}
}
@@ -117,16 +118,16 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
Constant.REQUEST_CODE_ENTER_NEW_PIN2 -> if (resultCode == Activity.RESULT_OK) {
if (data != null) {
- if (data.extras!!.containsKey("confirmPIN2")) {
+ if (data.extras!!.containsKey(Constant.EXTRA_CONFIRM_PIN_2)) {
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
ctx.saveToIntent(intent)
- newPIN2 = data.getStringExtra("newPIN2")
+ newPIN2 = data.getStringExtra(Constant.EXTRA_NEW_PIN_2)
startActivityForResult(intent, Constant.REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
} else {
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("newPIN2", data.getStringExtra("newPIN2"))
- intent.putExtra("mode", PinRequestActivity.Mode.ConfirmNewPIN2.toString())
+ intent.putExtra(Constant.EXTRA_NEW_PIN_2, data.getStringExtra(Constant.EXTRA_NEW_PIN_2))
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.ConfirmNewPIN2.toString())
startActivityForResult(intent, Constant.REQUEST_CODE_ENTER_NEW_PIN2)
}
}
@@ -141,9 +142,9 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
pinSwapWarningDialog.setOnRefreshPage { (activity as VerifyCardActivity).navigator.showPinSwap(context as Activity, newPIN, newPIN2) }
val bundle = Bundle()
if (!CardProtocol.isDefaultPIN(newPIN) || !CardProtocol.isDefaultPIN2(newPIN2))
- bundle.putString(PINSwapWarningDialog.EXTRA_MESSAGE, getString(R.string.if_you_forget))
+ bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.if_you_forget))
else
- bundle.putString(PINSwapWarningDialog.EXTRA_MESSAGE, getString(R.string.if_you_use_default))
+ bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.if_you_use_default))
pinSwapWarningDialog.arguments = bundle
activity?.supportFragmentManager?.let { pinSwapWarningDialog.show(it, PINSwapWarningDialog.TAG) }
}
@@ -151,27 +152,27 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
Constant.REQUEST_CODE_SWAP_PIN -> if (resultCode == Activity.RESULT_OK) {
if (data == null) {
ctx.saveToIntent(data)
- data?.putExtra("modification", "delete")
+ data?.putExtra(Constant.EXTRA_MODIFICATION, Constant.EXTRA_MODIFICATION_DELETE)
} else
- data.putExtra("modification", "update")
- activity!!.setResult(Activity.RESULT_OK, data)
- activity!!.finish()
+ data.putExtra(Constant.EXTRA_MODIFICATION, Constant.EXTRA_MODIFICATION_UPDATE)
+ activity?.setResult(Activity.RESULT_OK, data)
+ activity?.finish()
} else {
- if (data != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
- val updatedCard = TangemCard(data.getStringExtra("UID"))
- updatedCard.loadFromBundle(data.getBundleExtra("Card"))
+ if (data != null && data.extras!!.containsKey(EXTRA_TANGEM_CARD_UID) && data.extras!!.containsKey(EXTRA_TANGEM_CARD)) {
+ val updatedCard = TangemCard(data.getStringExtra(EXTRA_TANGEM_CARD_UID))
+ updatedCard.loadFromBundle(data.getBundleExtra(EXTRA_TANGEM_CARD))
ctx.card = updatedCard
}
if (resultCode == Constant.RESULT_INVALID_PIN && requestPIN2Count < 2) {
requestPIN2Count++
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
ctx.saveToIntent(intent)
startActivityForResult(intent, Constant.REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
return
} else {
- if (data != null && data.extras!!.containsKey("message")) {
- ctx.error = data.getStringExtra("message")
+ if (data != null && data.extras!!.containsKey(Constant.EXTRA_MESSAGE)) {
+ ctx.error = data.getStringExtra(Constant.EXTRA_MESSAGE)
}
}
}
@@ -179,21 +180,10 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
Constant.REQUEST_CODE_REQUEST_PIN2_FOR_PURGE -> if (resultCode == Activity.RESULT_OK)
(activity as VerifyCardActivity).navigator.showPurge(context as Activity, ctx)
-// Constant.REQUEST_CODE_PURGE -> if (resultCode == Activity.RESULT_OK) {
-// if (data == null) {
-// ctx.saveToIntent(data)
-// data?.putExtra(Constant.EXTRA_MODIFICATION, "delete")
-// } else
-// data.putExtra(Constant.EXTRA_MODIFICATION, "update")
-//
-// activity?.setResult(Activity.RESULT_OK, data)
-// activity?.finish()
-// }
-
else {
- if (data != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) {
- val updatedCard = TangemCard(data.getStringExtra("UID"))
- updatedCard.loadFromBundle(data.getBundleExtra("Card"))
+ if (data != null && data.extras!!.containsKey(EXTRA_TANGEM_CARD_UID) && data.extras!!.containsKey(EXTRA_TANGEM_CARD)) {
+ val updatedCard = TangemCard(data.getStringExtra(EXTRA_TANGEM_CARD_UID))
+ updatedCard.loadFromBundle(data.getBundleExtra(EXTRA_TANGEM_CARD))
ctx.card = updatedCard
}
if (resultCode == Constant.RESULT_INVALID_PIN && requestPIN2Count < 2) {
@@ -204,8 +194,8 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
startActivityForResult(intent, Constant.REQUEST_CODE_REQUEST_PIN2_FOR_PURGE)
return
} else {
- if (data != null && data.extras!!.containsKey("message")) {
- ctx.error = data.getStringExtra("message")
+ if (data != null && data.extras!!.containsKey(Constant.EXTRA_MESSAGE)) {
+ ctx.error = data.getStringExtra(Constant.EXTRA_MESSAGE)
}
}
updateViews()
@@ -403,7 +393,7 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
private fun doSetPin() {
requestPIN2Count = 0
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestNewPIN.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestNewPIN.toString())
newPIN = ""
newPIN2 = ""
startActivityForResult(intent, Constant.REQUEST_CODE_ENTER_NEW_PIN)
@@ -412,7 +402,7 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
private fun doResetPin() {
requestPIN2Count = 0
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
ctx.saveToIntent(intent)
newPIN = PINStorage.getDefaultPIN()
newPIN2 = ""
@@ -422,7 +412,7 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
private fun doResetPin2() {
requestPIN2Count = 0
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
ctx.saveToIntent(intent)
newPIN = ""
newPIN2 = PINStorage.getDefaultPIN2()
@@ -432,7 +422,7 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
private fun doResetPins() {
requestPIN2Count = 0
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
ctx.saveToIntent(intent)
newPIN = PINStorage.getDefaultPIN()
newPIN2 = PINStorage.getDefaultPIN2()
@@ -442,7 +432,7 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
private fun doSetPin2() {
requestPIN2Count = 0
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestNewPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestNewPIN2.toString())
newPIN = ""
newPIN2 = ""
startActivityForResult(intent, Constant.REQUEST_CODE_ENTER_NEW_PIN2)
@@ -459,7 +449,7 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback {
}
val intent = Intent(context, PinRequestActivity::class.java)
- intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString())
+ intent.putExtra(Constant.EXTRA_MODE, PinRequestActivity.Mode.RequestPIN2.toString())
ctx.saveToIntent(intent)
startActivityForResult(intent, Constant.REQUEST_CODE_REQUEST_PIN2_FOR_PURGE)
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index edc089a4db..cc0bdcca10 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,8 +1,8 @@
-
-
-
-
-
-
+ android:layout_gravity="bottom|start"
+ android:layout_margin="10dp"
+ android:src="@drawable/ic_show_menu"
+ app:backgroundTint="@color/colorPrimary"
+ app:fabSize="normal" />
\ 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 19b3bfe5d2..85a18b6774 100644
--- a/app/src/main/res/layout/fr_loaded_wallet.xml
+++ b/app/src/main/res/layout/fr_loaded_wallet.xml
@@ -117,89 +117,83 @@
android:id="@+id/loWallet"
android:layout_width="match_parent"
android:layout_height="0dp"
+ android:layout_weight="1"
android:baselineAligned="false"
- android:gravity="top|center"
- android:orientation="horizontal"
+ android:gravity="center_vertical|center_horizontal"
+ android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHeight_min="wrap"
app:layout_constraintTop_toBottomOf="@+id/guideline">
-
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
+ android:fontFamily="@font/maaxmedium"
+ android:textAlignment="center"
+ android:textColor="@color/primary_dark"
+ android:textSize="18sp"
+ android:textStyle="normal"
+ tools:text="Bitcoin" />
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+ android:layout_weight="1"
+ android:backgroundTint="@color/white"
+ android:drawableStart="@drawable/ic_content_copy_black_24dp"
+ android:elevation="15dp"
+ android:fontFamily="@font/saira_condensed_bold"
+ android:paddingLeft="20dp"
+ android:paddingRight="20dp"
+ android:text="@string/copy"
+ android:textColor="@color/primary_dark" />
+
@@ -236,7 +230,7 @@
android:elevation="3dp"
android:fontFamily="@font/maax"
android:padding="4dp"
- android:shadowColor="@color/cardview_shadow_start_color"
+ android:shadowColor="@color/cardview_shadow_star"
android:textAlignment="center"
android:textColor="@color/white"
android:textStyle="bold"
@@ -257,14 +251,11 @@
android:id="@+id/btnLoad"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="0dp"
- android:layout_height="50dp"
+ android:layout_height="wrap_content"
android:layout_marginTop="10dp"
- android:layout_marginBottom="5dp"
+ android:layout_marginBottom="10dp"
android:layout_weight="1"
- android:elevation="15dp"
android:fontFamily="@font/saira_condensed_bold"
- android:paddingLeft="20dp"
- android:paddingRight="20dp"
android:text="@string/load"
android:textSize="@dimen/text_size_large" />
@@ -272,15 +263,12 @@
android:id="@+id/btnExtract"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="0dp"
- android:layout_height="50dp"
+ android:layout_height="wrap_content"
android:layout_marginTop="10dp"
- android:layout_marginBottom="5dp"
+ android:layout_marginBottom="10dp"
android:layout_weight="1"
- android:elevation="15dp"
android:enabled="false"
android:fontFamily="@font/saira_condensed_bold"
- android:paddingLeft="20dp"
- android:paddingRight="20dp"
android:text="@string/extract"
android:textSize="@dimen/text_size_large" />
@@ -291,8 +279,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
- android:paddingTop="10dp"
- android:paddingBottom="10dp"
app:layout_constraintBottom_toBottomOf="parent">
@@ -301,13 +287,12 @@
android:id="@+id/btnNewScan"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="0dp"
- android:layout_height="34dp"
- android:layout_marginTop="5dp"
- android:layout_marginBottom="5dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
android:layout_weight="1"
android:backgroundTint="@color/white"
android:drawableStart="@drawable/ic_nfc_white_24dp"
- android:elevation="15dp"
android:fontFamily="@font/saira_condensed_bold"
android:paddingLeft="20dp"
android:paddingRight="20dp"
diff --git a/app/src/main/res/layout/layout_btn_details.xml b/app/src/main/res/layout/layout_btn_details.xml
index 34de9aff03..b10556cf5f 100644
--- a/app/src/main/res/layout/layout_btn_details.xml
+++ b/app/src/main/res/layout/layout_btn_details.xml
@@ -4,13 +4,12 @@
android:id="@+id/btnDetails"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="0dp"
- android:layout_height="34dp"
- android:layout_marginTop="5dp"
- android:layout_marginBottom="5dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
android:layout_weight="1"
android:backgroundTint="@color/white"
android:drawableStart="@drawable/ic_settings_black_24dp"
- android:elevation="15dp"
android:fontFamily="@font/saira_condensed_bold"
android:paddingLeft="20dp"
android:paddingRight="20dp"
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index bc28012e33..3d72001a11 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -37,5 +37,6 @@
#7c0a02
#600600
#bff2af
+ #37000000
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f20adac23e..815f8e5599 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -91,6 +91,8 @@
Last unspent
Wallet was erased
Not personalized
+ There is a new application version: %1$s
+ Update
The wallet is empty