Updated on 2026-08-14

This commit is contained in:
Tangem 2019-04-10 12:49:54 +03:00
parent 128b472c3f
commit 6c8c041c3d
16 changed files with 70 additions and 73 deletions

View file

@ -5,12 +5,13 @@ import android.content.Context
import android.content.Intent
import android.net.Uri
import android.view.ViewGroup
import android.widget.Toast
import com.google.android.material.snackbar.Snackbar
import com.tangem.Constant
import com.tangem.wallet.R
import java.util.*
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) {
@ -44,4 +45,19 @@ class ToastHelper {
snackbar.show()
}
private var singleToast: Toast? = null
private var showTime: Date = Date()
fun showSingleToast(context: Context?, text: String) {
if (singleToast == null || !singleToast!!.view.isShown || showTime.time + 2000 < Date().time) {
if (singleToast != null)
singleToast!!.cancel()
if (context != null) {
singleToast = Toast.makeText(context, text, Toast.LENGTH_LONG)
singleToast!!.show()
showTime = Date()
}
}
}
}

View file

@ -1,6 +1,8 @@
package com.tangem.di
import com.tangem.ui.PrepareTransactionActivity
import com.tangem.ui.activity.EmptyWalletActivity
import com.tangem.ui.activity.LoadedWalletActivity
import com.tangem.ui.activity.MainActivity
import dagger.Component
import javax.inject.Singleton
@ -11,6 +13,10 @@ interface ToastHelperComponent {
fun inject(activity: MainActivity)
fun inject(activity: LoadedWalletActivity)
fun inject(activity: PrepareTransactionActivity)
fun inject(activity: EmptyWalletActivity)
}

View file

@ -36,6 +36,7 @@ import kotlinx.android.synthetic.main.layout_tangem_card.*
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 EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtocol.Notifications {
companion object {
@ -49,6 +50,8 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
@Inject
internal lateinit var navigator: Navigator
@Inject
internal lateinit var toastHelper: ToastHelper
private lateinit var nfcManager: NfcManager
private lateinit var ctx: TangemContext
@ -64,6 +67,7 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
setContentView(R.layout.activity_empty_wallet)
App.navigatorComponent.inject(this)
App.toastHelperComponent.inject(this)
nfcManager = NfcManager(this, this)
lifecycle.addObserver(NfcLifecycleObserver(nfcManager))
@ -98,11 +102,12 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
if (cardProtocol != null)
navigator.showVerifyCard(this, ctx)
else
UtilHelper.showSingleToast(this, getString(R.string.need_attach_card_again))
toastHelper.showSingleToast(this, getString(R.string.need_attach_card_again))
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == Constant.REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY) {
if (resultCode == Activity.RESULT_OK) {
if (data != null) {

View file

@ -9,6 +9,7 @@ import androidx.appcompat.app.AppCompatActivity
import com.tangem.App
import com.tangem.Constant
import com.tangem.di.Navigator
import com.tangem.di.ToastHelper
import com.tangem.wallet.TangemContext
import com.tangem.ui.fragment.LoadedWallet
import com.tangem.wallet.R
@ -18,6 +19,8 @@ class LoadedWalletActivity : AppCompatActivity() {
@Inject
lateinit var navigator: Navigator
@Inject
internal lateinit var toastHelper: ToastHelper
companion object {
fun callingIntent(context: Context, lastTag: Tag, ctx: TangemContext): Intent {
@ -33,6 +36,7 @@ class LoadedWalletActivity : AppCompatActivity() {
setContentView(R.layout.activity_loaded_wallet)
App.navigatorComponent.inject(this)
App.toastHelperComponent.inject(this)
if (intent.extras!!.containsKey(NfcAdapter.EXTRA_TAG)) {
val tag = intent.getParcelableExtra<Tag>(NfcAdapter.EXTRA_TAG)

View file

@ -46,7 +46,7 @@ import com.tangem.ui.dialog.RootFoundDialog
import com.tangem.ui.dialog.WaitSecurityDelayDialog
import com.tangem.util.CommonUtil
import com.tangem.util.LOG
import com.tangem.util.PhoneUtility
import com.tangem.util.UtilHelper
import com.tangem.wallet.BuildConfig
import com.tangem.wallet.R
import kotlinx.android.synthetic.main.activity_main.*
@ -196,7 +196,7 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco
f = Logger.collectLogs(this)
if (f != null) {
LOG.e(TAG, String.format("Collect %d log bytes", f.length()))
CommonUtil.sendEmail(this, zipFile, TAG, "Logs", PhoneUtility.getDeviceInfo(), arrayOf(f))
CommonUtil.sendEmail(this, zipFile, TAG, "Logs", UtilHelper.getDeviceInfo(), arrayOf(f))
} else {
LOG.e(TAG, "Can't create temporarily log file")
}

View file

@ -8,7 +8,6 @@ import androidx.appcompat.widget.Toolbar
import com.tangem.wallet.R
class SettingsActivity : AppCompatActivity() {
companion object {
fun callingIntent(context: Context) = Intent(context, SettingsActivity::class.java)
}

View file

@ -159,7 +159,7 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback
intent.addCategory(Intent.CATEGORY_DEFAULT)
startActivity(intent)
} catch (e: ActivityNotFoundException) {
UtilHelper.showSingleToast(context, getString(R.string.no_compatible_wallet))
(activity as LoadedWalletActivity).toastHelper.showSingleToast(context, getString(R.string.no_compatible_wallet))
}
}
@ -195,9 +195,9 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback
btnExtract.setOnClickListener {
if (UtilHelper.isOnline(context as Activity))
if (!engine.isExtractPossible)
UtilHelper.showSingleToast(context, ctx.message)
(activity as LoadedWalletActivity).toastHelper.showSingleToast(context, ctx.message)
else if (ctx.card!!.remainingSignatures == 0)
UtilHelper.showSingleToast(context, getString(R.string.card_has_no_remaining_signature))
(activity as LoadedWalletActivity).toastHelper.showSingleToast(context, getString(R.string.card_has_no_remaining_signature))
else
(activity as LoadedWalletActivity).navigator.showPrepareTransaction(context as Activity, ctx)
else
@ -208,7 +208,7 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback
if (cardProtocol != null)
(activity as LoadedWalletActivity).navigator.showVerifyCard(context as Activity, ctx)
else
UtilHelper.showSingleToast(context, getString(R.string.need_attach_card_again))
(activity as LoadedWalletActivity).toastHelper.showSingleToast(context, getString(R.string.need_attach_card_again))
}
btnNewScan.setOnClickListener { (activity as LoadedWalletActivity).navigator.showMain(context as Activity) }

View file

@ -1,35 +0,0 @@
package com.tangem.util;
import android.os.Build;
/**
* Created by Ilia on 20.04.2018.
*/
public class PhoneUtility {
public static String GetPhoneName()
{
return DeviceName.getDeviceName();
}
public static String getDeviceInfo() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("----------------------------------------\n");
stringBuilder.append("MODEL: ").append(Build.MODEL).append("\n");
stringBuilder.append("ID: ").append(Build.ID).append("\n");
stringBuilder.append("Manufacturer: ").append(Build.MANUFACTURER).append("\n");
stringBuilder.append("Brand: ").append(Build.BRAND).append("\n");
stringBuilder.append("Hardware: ").append(Build.HARDWARE).append("\n");
stringBuilder.append("Version: ").append(Build.VERSION.RELEASE).append(", ").append(Build.VERSION.INCREMENTAL).append("\n");
stringBuilder.append("OS: ").append(Build.VERSION.BASE_OS).append("\n");
stringBuilder.append("SDK: ").append(Build.VERSION.SDK_INT).append("\n");
stringBuilder.append("BOARD: ").append(Build.BOARD).append("\n");
stringBuilder.append("FINGERPRINT: ").append(Build.FINGERPRINT).append("\n");
stringBuilder.append("----------------------------------------\n");
return stringBuilder.toString();
}
}

View file

@ -5,6 +5,7 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.net.ConnectivityManager
import android.net.NetworkInfo
import android.os.Build
import android.widget.Toast
import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType
@ -48,19 +49,19 @@ object UtilHelper {
}
}
private var singleToast: Toast? = null
private var showTime: Date = Date()
fun showSingleToast(context: Context?, text: String) {
if (singleToast == null || !singleToast!!.view.isShown || showTime.time + 2000 < Date().time) {
if (singleToast != null)
singleToast!!.cancel()
if (context != null) {
singleToast = Toast.makeText(context, text, Toast.LENGTH_LONG)
singleToast!!.show()
showTime = Date()
}
}
fun getDeviceInfo(): String {
return "----------------------------------------\n" +
"MODEL: " + Build.MODEL + "\n" +
"ID: " + Build.ID + "\n" +
"Manufacturer: " + Build.MANUFACTURER + "\n" +
"Brand: " + Build.BRAND + "\n" +
"Hardware: " + Build.HARDWARE + "\n" +
"Version: " + Build.VERSION.RELEASE + ", " + Build.VERSION.INCREMENTAL + "\n" +
"OS: " + Build.VERSION.BASE_OS + "\n" +
"SDK: " + Build.VERSION.SDK_INT + "\n" +
"BOARD: " + Build.BOARD + "\n" +
"FINGERPRINT: " + Build.FINGERPRINT + "\n" +
"----------------------------------------\n"
}
}