diff --git a/app/build.gradle b/app/build.gradle index 9b4906b8f9..beacd1853b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -64,7 +64,7 @@ dependencies { implementation 'com.google.android.material:material:1.2.1' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10' - implementation 'com.tangem:blockchain:1.57.0' + implementation 'com.tangem:blockchain:1.64.0' implementation 'com.tangem:core:1.63.0' implementation 'com.tangem:sdk:1.63.0' diff --git a/app/src/main/java/com/tangem/tap/domain/TangemSdkManager.kt b/app/src/main/java/com/tangem/tap/domain/TangemSdkManager.kt index c8ec821b08..d122202ca1 100644 --- a/app/src/main/java/com/tangem/tap/domain/TangemSdkManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TangemSdkManager.kt @@ -10,6 +10,7 @@ import com.tangem.tangem_sdk_new.extensions.init import com.tangem.tap.domain.tasks.CreateWalletAndRescanTask import com.tangem.tap.domain.tasks.ScanNoteResponse import com.tangem.tap.domain.tasks.ScanNoteTask +import com.tangem.wallet.R import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.* @@ -22,15 +23,18 @@ class TangemSdkManager(val activity: ComponentActivity) { ) suspend fun scanNote(): CompletionResult { - return runTaskAsyncReturnOnMain(ScanNoteTask()) + return runTaskAsyncReturnOnMain(ScanNoteTask(), + initialMessage = Message(activity.getString(R.string.tap_to_scan))) } suspend fun createWallet(cardId: String?): CompletionResult { - return runTaskAsyncReturnOnMain(CreateWalletAndRescanTask(), cardId) + return runTaskAsyncReturnOnMain(CreateWalletAndRescanTask(), cardId, + initialMessage = Message(activity.getString(R.string.tap_to_create_wallet))) } suspend fun eraseWallet(cardId: String?): CompletionResult { - return runTaskAsyncReturnOnMain(PurgeWalletCommand(), cardId) + return runTaskAsyncReturnOnMain(PurgeWalletCommand(), cardId, + initialMessage = Message(activity.getString(R.string.tap_to_purge_wallet))) } suspend fun setPasscode(cardId: String?): CompletionResult { @@ -38,7 +42,7 @@ class TangemSdkManager(val activity: ComponentActivity) { pinType = PinType.Pin2, newPin1 = tangemSdk.config.defaultPin1.calculateSha256(), newPin2 = null - ), cardId) + ), cardId, initialMessage = Message(activity.getString(R.string.tap_to_change_passcode))) } suspend fun setAccessCode(cardId: String?): CompletionResult { @@ -46,7 +50,7 @@ class TangemSdkManager(val activity: ComponentActivity) { pinType = PinType.Pin1, newPin1 = null, newPin2 = tangemSdk.config.defaultPin2.calculateSha256() - ), cardId) + ), cardId, initialMessage = Message(activity.getString(R.string.tap_to_change_access_code))) } suspend fun setLongTap(cardId: String?): CompletionResult { @@ -54,7 +58,7 @@ class TangemSdkManager(val activity: ComponentActivity) { pinType = PinType.Pin1, newPin1 = tangemSdk.config.defaultPin1.calculateSha256(), newPin2 = tangemSdk.config.defaultPin2.calculateSha256() - ), cardId) + ), cardId, initialMessage = Message(activity.getString(R.string.tap_the_card))) } private suspend fun runTaskAsync( diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt b/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt index 38afa64bf6..67e22baa41 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt @@ -1,5 +1,6 @@ package com.tangem.tap.features.send.redux +import com.tangem.Message import com.tangem.blockchain.common.Amount import com.tangem.tap.common.redux.ErrorAction import com.tangem.tap.common.redux.ToastNotificationAction @@ -102,7 +103,7 @@ sealed class ReceiptAction : SendScreenAction { } sealed class SendActionUi : SendScreenActionUi { - object SendAmountToRecipient : SendScreenActionUi + data class SendAmountToRecipient(val messageForSigner: Message) : SendScreenActionUi } sealed class SendAction : SendScreenAction { 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 a0cf8f4c46..3b790cb554 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 @@ -35,14 +35,17 @@ val sendMiddleware: Middleware = { dispatch, appState -> is AddressPayIdActionUi -> AddressPayIdMiddleware().handle(action, appState(), dispatch) is AmountActionUi -> AmountMiddleware().handle(action, appState(), dispatch) is RequestFee -> RequestFeeMiddleware().handle(appState(), dispatch) - is SendActionUi.SendAmountToRecipient -> verifyAndSendTransaction(appState(), dispatch) + is SendActionUi.SendAmountToRecipient -> + verifyAndSendTransaction(action, appState(), dispatch) } nextDispatch(action) } } } -private fun verifyAndSendTransaction(appState: AppState?, dispatch: (Action) -> Unit) { +private fun verifyAndSendTransaction( + action: SendActionUi.SendAmountToRecipient, appState: AppState?, dispatch: (Action) -> Unit +) { val sendState = appState?.sendState ?: return val walletManager = appState.globalState.scanNoteResponse?.walletManager ?: return val recipientAddress = sendState.addressPayIdState.recipientWalletAddress ?: return @@ -61,7 +64,8 @@ private fun verifyAndSendTransaction(appState: AppState?, dispatch: (Action) -> val txData = walletManager.createTransaction(amountToSend, feeAmount, recipientAddress) scope.launch { walletManager.update() - val result = (walletManager as TransactionSender).send(txData, Signer(tangemSdk)) + val signer = Signer(tangemSdk, action.messageForSigner) + val result = (walletManager as TransactionSender).send(txData, signer) withContext(Dispatchers.Main) { when (result) { is Result.Success -> { diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/SendFragment.kt b/app/src/main/java/com/tangem/tap/features/send/ui/SendFragment.kt index d5fca9bcf3..2e2e4b9ed2 100644 --- a/app/src/main/java/com/tangem/tap/features/send/ui/SendFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/send/ui/SendFragment.kt @@ -9,6 +9,7 @@ import android.view.inputmethod.EditorInfo import android.widget.EditText import androidx.core.view.postDelayed import androidx.core.widget.addTextChangedListener +import com.tangem.Message import com.tangem.merchant.common.toggleWidget.ToggleWidget import com.tangem.tangem_sdk_new.extensions.hideSoftKeyboard import com.tangem.tap.common.KeyboardObserver @@ -65,7 +66,9 @@ class SendFragment : BaseStoreFragment(R.layout.fragment_send) { setupFeeLayout() btnSend.setOnClickListener { - store.dispatch(SendActionUi.SendAmountToRecipient) + store.dispatch(SendActionUi.SendAmountToRecipient( + Message(getString(R.string.tap_to_sign)) + )) } } @@ -205,7 +208,8 @@ class SendFragment : BaseStoreFragment(R.layout.fragment_send) { val sp = requireContext().getSharedPreferences("SendScreen", Context.MODE_PRIVATE) val mainCurrency = sp.getString("mainCurrency", TapCurrency.DEFAULT_FIAT_CURRENCY) val foundType = MainCurrencyType.values() - .firstOrNull { it.name.toLowerCase() == mainCurrency!!.toLowerCase() } ?: MainCurrencyType.FIAT + .firstOrNull { it.name.toLowerCase() == mainCurrency!!.toLowerCase() } + ?: MainCurrencyType.FIAT return foundType } diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt index 13c4366fef..c337a895b8 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt @@ -215,8 +215,8 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber { if (dialog == null) dialog = PayIdDialog(requireContext()).apply { this.show() - this.stopProgress() } + (dialog as? PayIdDialog)?.stopProgress() } CreatingPayIdState.Waiting -> (dialog as? PayIdDialog)?.showProgress() } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 23ca3ebfbf..5a63464c76 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,6 +8,14 @@ and Warning + Tap to scan + Tap the card + Tap to sign + Tap to purge wallet + Tap to create wallet + Tap to change passcode + Tap to change access code + Address was successfully copied No internet connection @string/generic_retry