diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/ScanNoteTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/ScanNoteTask.kt index 1e0b0dc71e..b51110845a 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/ScanNoteTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/ScanNoteTask.kt @@ -89,7 +89,7 @@ class ScanNoteTask(val card: Card? = null) : CardSessionRunnable) -> Unit ) { - ReadFileDataCommand(readPrivateFiles = true).run(session) { filesResult -> + ReadFileDataCommand().run(session) { filesResult -> when (filesResult) { is CompletionResult.Success -> { val decoder = Tlv.deserialize(filesResult.data.fileData)?.let { TlvDecoder(it) } diff --git a/app/src/main/java/com/tangem/tap/domain/twins/TwinsHelper.kt b/app/src/main/java/com/tangem/tap/domain/twins/TwinsHelper.kt index c14680c6dd..62bf089c7a 100644 --- a/app/src/main/java/com/tangem/tap/domain/twins/TwinsHelper.kt +++ b/app/src/main/java/com/tangem/tap/domain/twins/TwinsHelper.kt @@ -42,7 +42,7 @@ class TwinsHelper { } private fun String.calculateLuhn(): Int { - return 10 - this.reversed() + val checksum = this.reversed() .mapIndexed { index, c -> val digit = if (c in '0'..'9') c - '0' else c - 'A' if (!index.isEven()) { @@ -51,8 +51,9 @@ private fun String.calculateLuhn(): Int { val newDigit = digit * 2 if (newDigit >= 10) newDigit - 9 else newDigit } - } - .sum() % 10 + }.sum() + .rem(10) + return (10 - checksum) % 10 } enum class TwinCardNumber(val number: Int) { diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/twins/CreateTwinWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/details/redux/twins/CreateTwinWalletMiddleware.kt index 279ae9a5c0..1f42e8203f 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/twins/CreateTwinWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/twins/CreateTwinWalletMiddleware.kt @@ -34,7 +34,7 @@ class CreateTwinWalletMiddleware { } is DetailsAction.CreateTwinWalletAction.Cancel.Confirm -> { twinsManager = null - store.dispatch(NavigationAction.PopBackTo()) + store.dispatch(NavigationAction.PopBackTo(AppScreen.Home)) } is DetailsAction.CreateTwinWalletAction.LaunchFirstStep -> { store.state.globalState.scanNoteResponse?.let { diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/twins/CreateTwinWalletFragment.kt b/app/src/main/java/com/tangem/tap/features/details/ui/twins/CreateTwinWalletFragment.kt index a8cc0f892e..7dc481b077 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/twins/CreateTwinWalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/twins/CreateTwinWalletFragment.kt @@ -147,16 +147,21 @@ class CreateTwinWalletFragment : Fragment(R.layout.fragment_details_twin_cards), tv_twin_title.text = getString(R.string.details_twins_recreate_title_format, cardNumber) if (state.createTwinWalletState?.showAlert == true) { - dialog = MaterialAlertDialogBuilder(requireContext()) - .setMessage(R.string.details_twins_recreate_alert) - .setPositiveButton(R.string.common_ok) { _, _ -> - store.dispatch(DetailsAction.CreateTwinWalletAction.Cancel.Confirm) - } - .setNegativeButton(R.string.common_cancel) { _, _ -> - store.dispatch(DetailsAction.CreateTwinWalletAction.HideAlert) - } - .create() - dialog?.show() + if (dialog == null) { + dialog = MaterialAlertDialogBuilder(requireContext()) + .setMessage(R.string.details_twins_recreate_alert) + .setPositiveButton(R.string.common_ok) { _, _ -> + store.dispatch(DetailsAction.CreateTwinWalletAction.Cancel.Confirm) + } + .setNegativeButton(R.string.common_cancel) { _, _ -> + dialog?.cancel() + } + .setOnCancelListener { + store.dispatch(DetailsAction.CreateTwinWalletAction.HideAlert) + } + .create() + dialog?.show() + } } else { dialog?.cancel() dialog = null