diff --git a/app/src/main/java/com/tangem/tap/common/redux/StateDialog.kt b/app/src/main/java/com/tangem/tap/common/redux/StateDialog.kt index ecec5fb9f4..6419e09ac2 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/StateDialog.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/StateDialog.kt @@ -1,5 +1,6 @@ package com.tangem.tap.common.redux +import com.tangem.common.extensions.VoidCallback import com.tangem.tap.features.wallet.redux.AddressData import com.tangem.tap.features.wallet.redux.Currency @@ -9,8 +10,8 @@ import com.tangem.tap.features.wallet.redux.Currency interface StateDialog sealed class AppDialog : StateDialog { - data class SimpleOkDialog(val header: String, val message: String) : AppDialog() - data class SimpleOkDialogRes(val headerId: Int, val messageId: Int) : AppDialog() + data class SimpleOkDialog(val header: String, val message: String, val onOk: VoidCallback? = null) : AppDialog() + data class SimpleOkDialogRes(val headerId: Int, val messageId: Int, val onOk: VoidCallback? = null) : AppDialog() object ScanFailsDialog : AppDialog() data class AddressInfoDialog( val currency: Currency, diff --git a/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt b/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt index 8f51995b2a..62dc1d7e8f 100644 --- a/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt +++ b/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt @@ -3,6 +3,7 @@ package com.tangem.tap.features.demo import com.tangem.blockchain.common.* import com.tangem.blockchain.extensions.Result import com.tangem.blockchain.extensions.SimpleResult +import com.tangem.common.CompletionResult import com.tangem.tap.common.extensions.dispatchNotification import com.tangem.tap.common.redux.AppState import com.tangem.tap.domain.tasks.product.ScanResponse @@ -171,7 +172,10 @@ class DemoTransactionSender( override suspend fun send(transactionData: TransactionData, signer: TransactionSigner): SimpleResult { val dataToSign = randomString(32).toByteArray() val signerResponse = signer.sign(dataToSign, walletManager.wallet.cardId, walletManager.wallet.publicKey) - return SimpleResult.Failure(Exception(ID)) + return when (signerResponse) { + is CompletionResult.Success -> SimpleResult.Failure(Exception(ID)) + is CompletionResult.Failure -> SimpleResult.fromTangemSdkError(signerResponse.error) + } } private fun randomInt(from: Int, to: Int): Int = kotlin.random.Random.nextInt(from, to) diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt index 34a63dd905..37a17cc269 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt @@ -246,10 +246,11 @@ private fun sendTransaction( dispatch(SendAction.SendError(TapError.XmlError.AssetAccountNotCreated)) } message.contains(DemoTransactionSender.ID) -> { + delay(DELAY_SDK_DIALOG_CLOSE) store.dispatchDialogShow(AppDialog.SimpleOkDialogRes( R.string.common_done, R.string.alert_demo_tx_send - )) + ) { dispatch(NavigationAction.PopBackTo()) }) } else -> { (sendResult.error as? TangemSdkError)?.let { error -> diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/dialogs/SimpleOkDialog.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/dialogs/SimpleOkDialog.kt index aa15f94e9f..3fc5187741 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/dialogs/SimpleOkDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/dialogs/SimpleOkDialog.kt @@ -18,7 +18,10 @@ class SimpleOkDialog { setTitle(dialog.header) setMessage(dialog.message) setPositiveButton(R.string.common_ok) { _, _ -> } - setOnDismissListener { store.dispatchDialogHide() } + setOnDismissListener { + store.dispatchDialogHide() + dialog.onOk?.invoke() + } }.create() } @@ -27,7 +30,10 @@ class SimpleOkDialog { setTitle(context.getString(dialog.headerId)) setMessage(dialog.messageId) setPositiveButton(R.string.common_ok) { _, _ -> } - setOnDismissListener { store.dispatchDialogHide() } + setOnDismissListener { + store.dispatchDialogHide() + dialog.onOk?.invoke() + } }.create() } }