From 4d36c61c7861537d245617c2d74c5368cece3ef3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Sun, 18 Nov 2018 20:19:56 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../java/com/tangem/data/db/PINStorage.java | 2 +- app/src/main/java/com/tangem/di/Navigator.kt | 17 ++++---- .../com/tangem/di/NavigatorComponent.java | 6 +++ .../java/com/tangem/domain/cardReader/FW.java | 13 +++--- .../java/com/tangem/domain/wallet/Issuer.java | 8 ++-- .../activity/LoadedWalletActivity.kt | 8 ++++ .../presentation/activity/MainActivity.kt | 6 +-- .../activity/VerifyCardActivity.kt | 21 ++++++++++ .../presentation/fragment/LoadedWallet.kt | 40 +++++++++---------- 9 files changed, 78 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/tangem/data/db/PINStorage.java b/app/src/main/java/com/tangem/data/db/PINStorage.java index 96b5866c91..91a9c3a47a 100644 --- a/app/src/main/java/com/tangem/data/db/PINStorage.java +++ b/app/src/main/java/com/tangem/data/db/PINStorage.java @@ -21,7 +21,7 @@ public class PINStorage { private static String mSavedPIN, mUserPIN, mLastUsedPIN, mEncryptedPIN, mPIN2; private static SharedPreferences sharedPreferences = null; - public static void Init(Context context) { + public static void init(Context context) { sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); mSavedPIN = sharedPreferences.getString("SavedPIN", null); mUserPIN = null; diff --git a/app/src/main/java/com/tangem/di/Navigator.kt b/app/src/main/java/com/tangem/di/Navigator.kt index 90b9e48e92..4015aa881d 100644 --- a/app/src/main/java/com/tangem/di/Navigator.kt +++ b/app/src/main/java/com/tangem/di/Navigator.kt @@ -1,17 +1,18 @@ package com.tangem.di import android.app.Activity -import android.content.Context import android.nfc.Tag import android.os.Bundle +import com.tangem.domain.wallet.TangemCard import com.tangem.presentation.activity.EmptyWalletActivity import com.tangem.presentation.activity.LoadedWalletActivity - import com.tangem.presentation.activity.MainActivity +import com.tangem.presentation.activity.VerifyCardActivity +import com.tangem.presentation.fragment.LoadedWallet class Navigator { - fun showMain(context: Context) { + fun showMain(context: Activity) { context.startActivity(MainActivity.callingIntent(context)) } @@ -23,13 +24,15 @@ class Navigator { context.startActivity(EmptyWalletActivity.callingIntent(context)) } - fun showVerifyCard(context: Context) { + fun showVerifyCard(context: Activity, card: TangemCard) { + context.startActivityForResult(VerifyCardActivity.callingIntent(context, card), LoadedWallet.REQUEST_CODE_VERIFY_CARD) + } + + fun showPreparePayment(context: Activity) { } - - - fun showCreateNewWallet(context: Context) { + fun showCreateNewWallet(context: Activity) { } diff --git a/app/src/main/java/com/tangem/di/NavigatorComponent.java b/app/src/main/java/com/tangem/di/NavigatorComponent.java index b1f5a72852..dc6bf5a5fc 100644 --- a/app/src/main/java/com/tangem/di/NavigatorComponent.java +++ b/app/src/main/java/com/tangem/di/NavigatorComponent.java @@ -1,8 +1,10 @@ package com.tangem.di; import com.tangem.presentation.activity.EmptyWalletActivity; +import com.tangem.presentation.activity.LoadedWalletActivity; import com.tangem.presentation.activity.LogoActivity; import com.tangem.presentation.activity.MainActivity; +import com.tangem.presentation.activity.VerifyCardActivity; import javax.inject.Singleton; @@ -18,6 +20,10 @@ public interface NavigatorComponent { void inject(MainActivity activity); + void inject(LoadedWalletActivity activity); + + void inject(VerifyCardActivity activity); + void inject(EmptyWalletActivity activity); } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/domain/cardReader/FW.java b/app/src/main/java/com/tangem/domain/cardReader/FW.java index 0760709057..576463685d 100644 --- a/app/src/main/java/com/tangem/domain/cardReader/FW.java +++ b/app/src/main/java/com/tangem/domain/cardReader/FW.java @@ -13,14 +13,14 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; public class FW { - private static JsonArray jaFirmwares=null; + private static JsonArray jaFirmwares = null; public static boolean needInit() { return jaFirmwares == null; } - public static void Init(Context context) { - try(InputStream is=context.getAssets().open("fw_hashes.json")) { + public static void init(Context context) { + try (InputStream is = context.getAssets().open("fw_hashes.json")) { try (InputStreamReader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) { JsonParser parser = new JsonParser(); jaFirmwares = parser.parse(reader).getAsJsonArray(); @@ -30,8 +30,7 @@ public class FW { } } - public static class VerifyCodeRecord - { + public static class VerifyCodeRecord { public String hashAlg; public int blockIndex; public int blockCount; @@ -57,9 +56,7 @@ public class FW { return result; } } - } - catch (Exception e) - { + } catch (Exception e) { e.printStackTrace(); } return null; diff --git a/app/src/main/java/com/tangem/domain/wallet/Issuer.java b/app/src/main/java/com/tangem/domain/wallet/Issuer.java index 5deeec139b..778111463b 100644 --- a/app/src/main/java/com/tangem/domain/wallet/Issuer.java +++ b/app/src/main/java/com/tangem/domain/wallet/Issuer.java @@ -59,20 +59,20 @@ public class Issuer { return id; } - private static List instances=new ArrayList<>(); + private static List instances = new ArrayList<>(); public static boolean needInit() { return instances.size() == 0; } - public static void Init(Context context) { + public static void init(Context context) { try { Issuer unknown = new Issuer(); unknown.id = "UNKNOWN"; unknown.officialName = "UNKNOWN"; - try(InputStream is=context.getAssets().open("issuers.json")) { - try ( InputStreamReader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) { + try (InputStream is = context.getAssets().open("issuers.json")) { + try (InputStreamReader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) { Type listType = new TypeToken>() { }.getType(); instances = new Gson().fromJson(reader, listType); diff --git a/app/src/main/java/com/tangem/presentation/activity/LoadedWalletActivity.kt b/app/src/main/java/com/tangem/presentation/activity/LoadedWalletActivity.kt index f0164ee104..04dab07418 100644 --- a/app/src/main/java/com/tangem/presentation/activity/LoadedWalletActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/LoadedWalletActivity.kt @@ -6,11 +6,17 @@ import android.nfc.NfcAdapter import android.nfc.Tag import android.os.Bundle import android.support.v7.app.AppCompatActivity +import com.tangem.App +import com.tangem.di.Navigator import com.tangem.presentation.fragment.LoadedWallet import com.tangem.wallet.R +import javax.inject.Inject class LoadedWalletActivity : AppCompatActivity() { + @Inject + lateinit var navigator: Navigator + companion object { fun callingIntent(context: Context, lastTag: Tag, cardInfo: Bundle): Intent { val intent = Intent(context, LoadedWalletActivity::class.java) @@ -24,6 +30,8 @@ class LoadedWalletActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_loaded_wallet) + App.getNavigatorComponent().inject(this) + MainActivity.commonInit(applicationContext) if (intent.extras!!.containsKey(NfcAdapter.EXTRA_TAG)) { diff --git a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt index fb47e34e95..d69712902a 100644 --- a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt @@ -63,13 +63,13 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco fun commonInit(context: Context) { if (PINStorage.needInit()) - PINStorage.Init(context) + PINStorage.init(context) if (Issuer.needInit()) - Issuer.Init(context) + Issuer.init(context) if (FW.needInit()) - FW.Init(context) + FW.init(context) } } diff --git a/app/src/main/java/com/tangem/presentation/activity/VerifyCardActivity.kt b/app/src/main/java/com/tangem/presentation/activity/VerifyCardActivity.kt index deb4f339e0..83a1201252 100644 --- a/app/src/main/java/com/tangem/presentation/activity/VerifyCardActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/VerifyCardActivity.kt @@ -1,15 +1,36 @@ package com.tangem.presentation.activity +import android.content.Context +import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity +import com.tangem.App +import com.tangem.di.Navigator +import com.tangem.domain.wallet.TangemCard import com.tangem.presentation.fragment.VerifyCard import com.tangem.wallet.R +import javax.inject.Inject class VerifyCardActivity : AppCompatActivity() { + @Inject + lateinit var navigator: Navigator + + companion object { + fun callingIntent(context: Context, card: TangemCard): Intent { + val intent = Intent(context, VerifyCardActivity::class.java) + intent.putExtra(TangemCard.EXTRA_UID, card.uid) + intent.putExtra(TangemCard.EXTRA_CARD, card.asBundle) + return intent + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_verify_card) + + App.getNavigatorComponent().inject(this) + MainActivity.commonInit(applicationContext) } 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 6aeca1f8de..a13a757175 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -28,6 +28,7 @@ import com.tangem.data.network.ServerApiInfura import com.tangem.data.network.model.CardVerifyAndGetInfo import com.tangem.data.network.model.InfuraResponse import com.tangem.data.nfc.VerifyCardTask +import com.tangem.di.Navigator import com.tangem.domain.cardReader.CardProtocol import com.tangem.domain.cardReader.NfcManager import com.tangem.domain.wallet.* @@ -49,12 +50,13 @@ import org.json.JSONException import java.io.InputStream import java.math.BigInteger import java.util.* +import javax.inject.Inject class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notifications, SharedPreferences.OnSharedPreferenceChangeListener { companion object { val TAG: String = LoadedWallet::class.java.simpleName private const val REQUEST_CODE_SEND_PAYMENT = 1 - private const val REQUEST_CODE_VERIFY_CARD = 4 + const val REQUEST_CODE_VERIFY_CARD = 4 private const val REQUEST_CODE_PURGE = 2 private const val REQUEST_CODE_REQUEST_PIN2_FOR_PURGE = 3 private const val REQUEST_CODE_ENTER_NEW_PIN = 5 @@ -191,13 +193,12 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific btnDetails.setOnClickListener { if (cardProtocol != null) openVerifyCard(cardProtocol!!) +// (activity as LoadedWalletActivity).navigator.showVerifyCard(activity, ctx.card) + else showSingleToast(R.string.need_attach_card_again) } - btnScanAgain.setOnClickListener { - val intent = Intent(activity, MainActivity::class.java) - startActivity(intent) - } + btnScanAgain.setOnClickListener { (activity as LoadedWalletActivity).navigator.showMain(activity) } btnExtract.setOnClickListener { val engine = CoinEngineFactory.create(ctx) if (UtilHelper.isOnline(activity)) { @@ -625,9 +626,9 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } REQUEST_CODE_SEND_PAYMENT, REQUEST_CODE_RECEIVE_PAYMENT -> { if (resultCode == Activity.RESULT_OK) { - ctx.coinData!!.clearInfo() - srl!!.postDelayed({ this.refresh() }, 5000) - srl!!.isRefreshing = true + ctx.coinData?.clearInfo() + srl?.postDelayed({ this.refresh() }, 5000) + srl?.isRefreshing = true updateViews() } @@ -807,19 +808,19 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific requestVerifyAndGetInfo() - // Bitcoin - if (ctx.blockchain == Blockchain.Bitcoin || ctx.blockchain == Blockchain.BitcoinTestNet) { - ctx.coinData.setIsBalanceEqual(true) + // Bitcoin + if (ctx.blockchain == Blockchain.Bitcoin || ctx.blockchain == Blockchain.BitcoinTestNet) { + ctx.coinData.setIsBalanceEqual(true) requestElectrum(ElectrumRequest.checkBalance(ctx.card!!.wallet)) requestElectrum(ElectrumRequest.listUnspent(ctx.card!!.wallet)) requestRateInfo("bitcoin") } - // BitcoinCash - else if (ctx.blockchain == Blockchain.BitcoinCash) { - ctx.coinData.setIsBalanceEqual(true) - val engine = CoinEngineFactory.create(ctx) + // BitcoinCash + else if (ctx.blockchain == Blockchain.BitcoinCash) { + ctx.coinData.setIsBalanceEqual(true) + val engine = CoinEngineFactory.create(ctx) requestElectrum(ElectrumRequest.checkBalance((engine as BtcCashEngine).convertToLegacyAddress(ctx.card!!.wallet))) requestElectrum(ElectrumRequest.listUnspent((engine as BtcCashEngine).convertToLegacyAddress(ctx.card!!.wallet))) @@ -843,11 +844,11 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } private fun requestElectrum(electrumRequest: ElectrumRequest) { - if (UtilHelper.isOnline(activity!!)) { + if (UtilHelper.isOnline(activity)) { requestCounter++ serverApiElectrum.electrumRequestData(ctx.card, electrumRequest) } else { - Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() + Toast.makeText(activity, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() srl?.isRefreshing = false } } @@ -902,11 +903,10 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific // Log.v(TAG, "UID: $sUID") } - if (lastReadSuccess) { + if (lastReadSuccess) isoDep.timeout = 1000 - } else { + else isoDep.timeout = 65000 - } verifyCardTask = VerifyCardTask(activity, ctx.card, nfcManager, isoDep, this) verifyCardTask!!.start()