diff --git a/app/build.gradle b/app/build.gradle index ed1c65144c..702131e2b2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { applicationId "com.tangem.wallet" minSdkVersion 21 targetSdkVersion 27 - versionCode 53 + versionCode 54 versionName "0.87.3." + generateVersionName() testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.java b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.java deleted file mode 100644 index dc955365f4..0000000000 --- a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.java +++ /dev/null @@ -1,304 +0,0 @@ -package com.tangem.presentation.activity; - -import android.app.Activity; -import android.content.Intent; -import android.content.res.ColorStateList; -import android.graphics.Color; -import android.nfc.NfcAdapter; -import android.nfc.Tag; -import android.nfc.tech.IsoDep; -import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.widget.Toast; - -import com.tangem.domain.cardReader.CardProtocol; -import com.tangem.domain.cardReader.NfcManager; -import com.tangem.domain.wallet.TangemCard; -import com.tangem.util.Util; -import com.tangem.presentation.dialog.NoExtendedLengthSupportDialog; -import com.tangem.wallet.R; -import com.tangem.data.nfc.VerifyCardTask; -import com.tangem.presentation.dialog.WaitSecurityDelayDialog; - -public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback, CardProtocol.Notifications { - public static final String TAG = EmptyWalletActivity.class.getSimpleName(); - - private static final int REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY = 2; - private static final int REQUEST_CODE_REQUEST_PIN2 = 3; - private static final int REQUEST_CODE_VERIFY_CARD = 4; - - private TangemCard mCard; - private ProgressBar progressBar; - - private NfcManager mNfcManager; - private boolean lastReadSuccess = true; - private VerifyCardTask verifyCardTask = null; - private int requestPIN2Count = 0; - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_empty_wallet); - - MainActivity.Companion.commonInit(getApplicationContext()); - mNfcManager = new NfcManager(this, this); - - mCard = new TangemCard(getIntent().getStringExtra("UID")); - mCard.LoadFromBundle(getIntent().getExtras().getBundle("Card")); - - TextView tvCardID = findViewById(R.id.tvCardID); - tvCardID.setText(mCard.getCIDDescription()); - - TextView tvIssuer = findViewById(R.id.tvIssuer); - TextView tvIssuerData = findViewById(R.id.tvIssuerData); - TextView tvBlockchain = findViewById(R.id.tvBlockchain); - - tvIssuer.setText(mCard.getIssuerDescription()); - tvIssuerData.setText(mCard.getIssuerDataDescription()); - - //tvBlockchain.setText(mCard.getBlockchain().getOfficialName()); - tvBlockchain.setText(mCard.getBlockchainName()); - progressBar = findViewById(R.id.progressBar); - - ImageView ivBlockchain = findViewById(R.id.imgBlockchain); - ImageView ivPIN = findViewById(R.id.imgPIN); - ImageView ivPIN2orSecurityDelay = findViewById(R.id.imgPIN2orSecurityDelay); - ImageView ivDeveloperVersion = findViewById(R.id.imgDeveloperVersion); - Button btnNewWallet = findViewById(R.id.btnNewWallet); - - ivBlockchain.setImageResource(mCard.getBlockchain().getImageResource(this, mCard.getTokenSymbol())); - - if (mCard.useDefaultPIN1()) { - ivPIN.setImageResource(R.drawable.unlock_pin1); - ivPIN.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.this_banknote_protected_default_PIN1_code, Toast.LENGTH_LONG).show()); - } else { - ivPIN.setImageResource(R.drawable.lock_pin1); - ivPIN.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.this_banknote_protected_user_PIN1_code, Toast.LENGTH_LONG).show()); - } - - if (mCard.getPauseBeforePIN2() > 0 && (mCard.useDefaultPIN2() || !mCard.useSmartSecurityDelay())) { - ivPIN2orSecurityDelay.setImageResource(R.drawable.timer); - ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, String.format(getString(R.string.this_banknote_will_enforce), mCard.getPauseBeforePIN2() / 1000.0), Toast.LENGTH_LONG).show()); - - } else if (mCard.useDefaultPIN2()) { - ivPIN2orSecurityDelay.setImageResource(R.drawable.unlock_pin2); - ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.this_banknote_protected_default_PIN2_code, Toast.LENGTH_LONG).show()); - } else { - ivPIN2orSecurityDelay.setImageResource(R.drawable.lock_pin2); - ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.this_banknote_protected_user_PIN2_code, Toast.LENGTH_LONG).show()); - } - - if (mCard.useDevelopersFirmware()) { - ivDeveloperVersion.setImageResource(R.drawable.ic_developer_version); - ivDeveloperVersion.setVisibility(View.VISIBLE); - ivDeveloperVersion.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.unlocked_banknote_only_development_use, Toast.LENGTH_LONG).show()); - } else { - ivDeveloperVersion.setVisibility(View.INVISIBLE); - } - - btnNewWallet.setOnClickListener(v -> { - requestPIN2Count = 0; - Intent intent = new Intent(getBaseContext(), RequestPINActivity.class); - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()); - intent.putExtra("UID", mCard.getUID()); - intent.putExtra("Card", mCard.getAsBundle()); - startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2); - }); - -// if (getIntent().getExtras().containsKey(NfcAdapter.EXTRA_TAG)) { -// Tag tag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG); -// if (tag != null) { -// onTagDiscovered(tag); -// } -// } - } - - @Override - public void onResume() { - super.onResume(); - mNfcManager.onResume(); - } - - @Override - public void onPause() { - super.onPause(); - mNfcManager.onPause(); - } - - @Override - public void onStop() { - super.onStop(); - mNfcManager.onStop(); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY) { - if (resultCode == Activity.RESULT_OK) { - - if (data != null) { - data.putExtra("modification", "updateAndViewCard"); - data.putExtra("updateDelay", 0); - setResult(Activity.RESULT_OK, data); - } - finish(); - } else { - if (data != null && data.getExtras().containsKey("UID") && data.getExtras().containsKey("Card")) { - TangemCard updatedCard = new TangemCard(data.getStringExtra("UID")); - updatedCard.LoadFromBundle(data.getBundleExtra("Card")); - mCard = updatedCard; - } - if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { - requestPIN2Count++; - Intent intent = new Intent(getBaseContext(), RequestPINActivity.class); - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()); - intent.putExtra("UID", mCard.getUID()); - intent.putExtra("Card", mCard.getAsBundle()); - startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2); - return; - } - } - setResult(resultCode, data); - finish(); - } else if (requestCode == REQUEST_CODE_REQUEST_PIN2) { - if (resultCode == Activity.RESULT_OK) { - doCreateNewWallet(); - } - } - } - - @Override - public void onTagDiscovered(Tag tag) { - try { - final IsoDep isoDep = IsoDep.get(tag); - if (isoDep == null) { - throw new CardProtocol.TangemException(getString(R.string.wrong_tag_err)); - } - byte UID[] = tag.getId(); - String sUID = Util.byteArrayToHexString(UID); - if (!mCard.getUID().equals(sUID)) { - Log.d(TAG, "Invalid UID: " + sUID); - mNfcManager.ignoreTag(isoDep.getTag()); - return; - } else { - Log.v(TAG, "UID: " + sUID); - } - - if (lastReadSuccess) { - isoDep.setTimeout(1000); - } else { - isoDep.setTimeout(65000); - } - //lastTag = tag; - verifyCardTask = new VerifyCardTask(this, mCard, mNfcManager, isoDep, this); - verifyCardTask.start(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void OnReadStart(CardProtocol cardProtocol) { - progressBar.post(() -> { - progressBar.setVisibility(View.VISIBLE); - progressBar.setProgress(5); - }); - } - - public void OnReadFinish(final CardProtocol cardProtocol) { - - verifyCardTask = null; - - if (cardProtocol != null) { - if (cardProtocol.getError() == null) { - progressBar.post(() -> { - progressBar.setProgress(100); - progressBar.setProgressTintList(ColorStateList.valueOf(Color.GREEN)); - Intent intent = new Intent(EmptyWalletActivity.this, VerifyCardActivity.class); - // TODO обновить карту mCard - intent.putExtra("UID", cardProtocol.getCard().getUID()); - intent.putExtra("Card", cardProtocol.getCard().getAsBundle()); - startActivityForResult(intent, REQUEST_CODE_VERIFY_CARD); - //addCard(cardProtocol.getCard()); - }); - } else { - // remove last UIDs because of error and no card read - progressBar.post(() -> { - lastReadSuccess = false; - if (cardProtocol.getError() instanceof CardProtocol.TangemException_ExtendedLengthNotSupported) { - if (!NoExtendedLengthSupportDialog.Companion.getAllReadyShowed()) { - new NoExtendedLengthSupportDialog().show(getFragmentManager(), NoExtendedLengthSupportDialog.Companion.getTAG()); - } - } else { - Toast.makeText(EmptyWalletActivity.this, R.string.try_to_scan_again, Toast.LENGTH_LONG).show(); - } - progressBar.setProgress(100); - progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED)); - }); - } - } - - progressBar.postDelayed(() -> { - try { - progressBar.setProgress(0); - progressBar.setProgressTintList(ColorStateList.valueOf(Color.DKGRAY)); - progressBar.setVisibility(View.INVISIBLE); - } catch (Exception e) { - e.printStackTrace(); - } - }, 500); - } - - public void OnReadProgress(CardProtocol protocol, final int progress) { - progressBar.post(() -> progressBar.setProgress(progress)); - } - - public void OnReadCancel() { - - verifyCardTask = null; - - progressBar.postDelayed(() -> { - try { - progressBar.setProgress(0); - progressBar.setProgressTintList(ColorStateList.valueOf(Color.DKGRAY)); - progressBar.setVisibility(View.INVISIBLE); - } catch (Exception e) { - e.printStackTrace(); - } - }, 500); - } - - @Override - public void OnReadWait(int msec) { - WaitSecurityDelayDialog.OnReadWait(this, msec); - } - - @Override - public void OnReadBeforeRequest(int timeout) { - WaitSecurityDelayDialog.onReadBeforeRequest(this, timeout); - } - - @Override - public void OnReadAfterRequest() { - WaitSecurityDelayDialog.onReadAfterRequest(this); - } - - - private void doCreateNewWallet() { - Intent intent = new Intent(this, CreateNewWalletActivity.class); - - intent.putExtra("UID", mCard.getUID()); - intent.putExtra("Card", mCard.getAsBundle()); - -// intent.putExtra("newPIN",mCard.getPIN()); -// intent.putExtra("newPIN2","12345678"); - startActivityForResult(intent, REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY); - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt new file mode 100644 index 0000000000..4e0caf774b --- /dev/null +++ b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt @@ -0,0 +1,254 @@ +package com.tangem.presentation.activity + +import android.app.Activity +import android.content.Intent +import android.content.res.ColorStateList +import android.graphics.Color +import android.nfc.NfcAdapter +import android.nfc.Tag +import android.nfc.tech.IsoDep +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import android.view.View +import android.widget.Toast +import com.tangem.data.nfc.VerifyCardTask +import com.tangem.domain.cardReader.CardProtocol +import com.tangem.domain.cardReader.NfcManager +import com.tangem.domain.wallet.TangemCard +import com.tangem.presentation.dialog.NoExtendedLengthSupportDialog +import com.tangem.presentation.dialog.WaitSecurityDelayDialog +import com.tangem.util.Util +import com.tangem.wallet.R +import kotlinx.android.synthetic.main.activity_empty_wallet.* + +class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtocol.Notifications { + + companion object { + val TAG: String = EmptyWalletActivity::class.java.simpleName + + private const val REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY = 2 + private const val REQUEST_CODE_REQUEST_PIN2 = 3 + private const val REQUEST_CODE_VERIFY_CARD = 4 + } + + private var nfcManager: NfcManager? = null + private var card: TangemCard? = null + private var lastReadSuccess = true + private var verifyCardTask: VerifyCardTask? = null + private var requestPIN2Count = 0 + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_empty_wallet) + + MainActivity.commonInit(applicationContext) + + nfcManager = NfcManager(this, this) + + card = TangemCard(intent.getStringExtra("UID")) + card!!.LoadFromBundle(intent.extras!!.getBundle("Card")) + + tvIssuer.text = card!!.issuerDescription + tvBlockchain.text = card!!.blockchainName + tvCardID.text = card!!.cidDescription + imgBlockchain.setImageResource(card!!.blockchain.getImageResource(this, card!!.tokenSymbol)) + + if (card!!.useDefaultPIN1()!!) { + imgPIN.setImageResource(R.drawable.unlock_pin1) + imgPIN.setOnClickListener { Toast.makeText(this@EmptyWalletActivity, R.string.this_banknote_protected_default_PIN1_code, Toast.LENGTH_LONG).show() } + } else { + imgPIN.setImageResource(R.drawable.lock_pin1) + imgPIN.setOnClickListener { Toast.makeText(this@EmptyWalletActivity, R.string.this_banknote_protected_user_PIN1_code, Toast.LENGTH_LONG).show() } + } + + if (card!!.pauseBeforePIN2 > 0 && (card!!.useDefaultPIN2()!! || !card!!.useSmartSecurityDelay())) { + imgPIN2orSecurityDelay.setImageResource(R.drawable.timer) + imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(this@EmptyWalletActivity, String.format(getString(R.string.this_banknote_will_enforce), card!!.pauseBeforePIN2 / 1000.0), Toast.LENGTH_LONG).show() } + + } else if (card!!.useDefaultPIN2()!!) { + imgPIN2orSecurityDelay.setImageResource(R.drawable.unlock_pin2) + imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(this@EmptyWalletActivity, R.string.this_banknote_protected_default_PIN2_code, Toast.LENGTH_LONG).show() } + } else { + imgPIN2orSecurityDelay.setImageResource(R.drawable.lock_pin2) + imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(this@EmptyWalletActivity, R.string.this_banknote_protected_user_PIN2_code, Toast.LENGTH_LONG).show() } + } + + if (card!!.useDevelopersFirmware()!!) { + imgDeveloperVersion.setImageResource(R.drawable.ic_developer_version) + imgDeveloperVersion.visibility = View.VISIBLE + imgDeveloperVersion.setOnClickListener { Toast.makeText(this@EmptyWalletActivity, R.string.unlocked_banknote_only_development_use, Toast.LENGTH_LONG).show() } + } else + imgDeveloperVersion.visibility = View.INVISIBLE + + btnNewWallet.setOnClickListener { + requestPIN2Count = 0 + val intent = Intent(baseContext, RequestPINActivity::class.java) + intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + intent.putExtra("UID", card!!.uid) + intent.putExtra("Card", card!!.asBundle) + startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2) + } + } + + public override fun onResume() { + super.onResume() + nfcManager!!.onResume() + } + + public override fun onPause() { + super.onPause() + nfcManager!!.onPause() + } + + public override fun onStop() { + super.onStop() + nfcManager!!.onStop() + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + if (requestCode == REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY) { + if (resultCode == Activity.RESULT_OK) { + + if (data != null) { + data.putExtra("modification", "updateAndViewCard") + data.putExtra("updateDelay", 0) + setResult(Activity.RESULT_OK, data) + } + finish() + } else { + if (data != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) { + val updatedCard = TangemCard(data.getStringExtra("UID")) + updatedCard.LoadFromBundle(data.getBundleExtra("Card")) + card = updatedCard + } + if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { + requestPIN2Count++ + val intent = Intent(baseContext, RequestPINActivity::class.java) + intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + intent.putExtra("UID", card!!.uid) + intent.putExtra("Card", card!!.asBundle) + startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2) + return + } + } + setResult(resultCode, data) + finish() + } else if (requestCode == REQUEST_CODE_REQUEST_PIN2) { + if (resultCode == Activity.RESULT_OK) { + doCreateNewWallet() + } + } + } + + override fun onTagDiscovered(tag: Tag) { + try { + val isoDep = IsoDep.get(tag) + ?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err)) + val uid = tag.id + val sUID = Util.byteArrayToHexString(uid) + if (card!!.uid != sUID) { +// Log.d(TAG, "Invalid UID: " + sUID); + nfcManager!!.ignoreTag(isoDep.tag) + return + } else { +// Log.v(TAG, "UID: " + sUID); + } + + if (lastReadSuccess) { + isoDep.timeout = 1000 + } else { + isoDep.timeout = 65000 + } + //lastTag = tag; + verifyCardTask = VerifyCardTask(this, card, nfcManager, isoDep, this) + verifyCardTask!!.start() + } catch (e: Exception) { + e.printStackTrace() + } + } + + override fun OnReadStart(cardProtocol: CardProtocol) { + progressBar!!.post { + progressBar!!.visibility = View.VISIBLE + progressBar!!.progress = 5 + } + } + + override fun OnReadFinish(cardProtocol: CardProtocol?) { + verifyCardTask = null + if (cardProtocol != null) { + if (cardProtocol.error == null) { + progressBar!!.post { + progressBar!!.progress = 100 + progressBar!!.progressTintList = ColorStateList.valueOf(Color.GREEN) + val intent = Intent(this@EmptyWalletActivity, VerifyCardActivity::class.java) + intent.putExtra("UID", cardProtocol.card.uid) + intent.putExtra("Card", cardProtocol.card.asBundle) + startActivityForResult(intent, REQUEST_CODE_VERIFY_CARD) + //addCard(cardProtocol.getCard()); + } + } else { + // remove last UIDs because of error and no card read + progressBar!!.post { + lastReadSuccess = false + if (cardProtocol.error is CardProtocol.TangemException_ExtendedLengthNotSupported) { + if (!NoExtendedLengthSupportDialog.allReadyShowed) { + NoExtendedLengthSupportDialog().show(fragmentManager, NoExtendedLengthSupportDialog.TAG) + } + } else { + Toast.makeText(this@EmptyWalletActivity, R.string.try_to_scan_again, Toast.LENGTH_LONG).show() + } + progressBar!!.progress = 100 + progressBar!!.progressTintList = ColorStateList.valueOf(Color.RED) + } + } + } + + progressBar!!.postDelayed({ + try { + progressBar!!.progress = 0 + progressBar!!.progressTintList = ColorStateList.valueOf(Color.DKGRAY) + progressBar!!.visibility = View.INVISIBLE + } catch (e: Exception) { + e.printStackTrace() + } + }, 500) + } + + override fun OnReadProgress(protocol: CardProtocol, progress: Int) { + progressBar!!.post { progressBar!!.progress = progress } + } + + override fun OnReadCancel() { + verifyCardTask = null + progressBar!!.postDelayed({ + try { + progressBar!!.progress = 0 + progressBar!!.progressTintList = ColorStateList.valueOf(Color.DKGRAY) + progressBar!!.visibility = View.INVISIBLE + } catch (e: Exception) { + e.printStackTrace() + } + }, 500) + } + + override fun OnReadWait(msec: Int) { + WaitSecurityDelayDialog.OnReadWait(this, msec) + } + + override fun OnReadBeforeRequest(timeout: Int) { + WaitSecurityDelayDialog.onReadBeforeRequest(this, timeout) + } + + override fun OnReadAfterRequest() { + WaitSecurityDelayDialog.onReadAfterRequest(this) + } + + private fun doCreateNewWallet() { + val intent = Intent(this, CreateNewWalletActivity::class.java) + intent.putExtra("UID", card!!.uid) + intent.putExtra("Card", card!!.asBundle) + startActivityForResult(intent, REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY) + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_empty_wallet.xml b/app/src/main/res/layout/activity_empty_wallet.xml index 73b61d742e..3336dc889d 100644 --- a/app/src/main/res/layout/activity_empty_wallet.xml +++ b/app/src/main/res/layout/activity_empty_wallet.xml @@ -1,6 +1,5 @@ - + android:textSize="@dimen/text_size_1_small" /> + android:textSize="@dimen/text_size_1_small" /> + tools:text="12345" /> @@ -83,7 +82,7 @@ android:fontFamily="@font/maax" android:text="@string/issuer" android:textColor="@color/primary_dark" - android:textSize="@dimen/text_size_1_small"/> + android:textSize="@dimen/text_size_1_small" /> - - - - - - - - + tools:text="5555" /> @@ -138,7 +114,7 @@ android:textAlignment="center" android:textColor="@color/primary_dark" android:textSize="@dimen/text_size_1_small" - android:textStyle="normal|bold"/> + android:textStyle="normal|bold" /> + android:textSize="@dimen/text_size_small" /> @@ -160,7 +136,7 @@ android:layout_alignParentTop="true" android:layout_marginEnd="8dp" android:layout_marginTop="8dp" - android:src="@drawable/tangem_logo_small_new"/> + android:src="@drawable/tangem_logo_small_new" /> + android:src="@drawable/unlock_pin1" /> + android:src="@drawable/unlock_pin2" /> + android:src="@drawable/ic_developer_version" /> @@ -206,6 +182,6 @@ android:visibility="invisible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toRightOf="parent"/> + app:layout_constraintRight_toRightOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fr_verify_card.xml b/app/src/main/res/layout/fr_verify_card.xml index e133ec3ab1..8160529a88 100644 --- a/app/src/main/res/layout/fr_verify_card.xml +++ b/app/src/main/res/layout/fr_verify_card.xml @@ -289,31 +289,6 @@ - - - - - - - -