Updated on 2026-08-14

This commit is contained in:
Tangem 2020-09-29 18:44:14 +03:00
parent e84bb2f96c
commit 0cd8e6878d
7 changed files with 35 additions and 14 deletions

View file

@ -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'

View file

@ -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<ScanNoteResponse> {
return runTaskAsyncReturnOnMain(ScanNoteTask())
return runTaskAsyncReturnOnMain(ScanNoteTask(),
initialMessage = Message(activity.getString(R.string.tap_to_scan)))
}
suspend fun createWallet(cardId: String?): CompletionResult<ScanNoteResponse> {
return runTaskAsyncReturnOnMain(CreateWalletAndRescanTask(), cardId)
return runTaskAsyncReturnOnMain(CreateWalletAndRescanTask(), cardId,
initialMessage = Message(activity.getString(R.string.tap_to_create_wallet)))
}
suspend fun eraseWallet(cardId: String?): CompletionResult<PurgeWalletResponse> {
return runTaskAsyncReturnOnMain(PurgeWalletCommand(), cardId)
return runTaskAsyncReturnOnMain(PurgeWalletCommand(), cardId,
initialMessage = Message(activity.getString(R.string.tap_to_purge_wallet)))
}
suspend fun setPasscode(cardId: String?): CompletionResult<SetPinResponse> {
@ -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<SetPinResponse> {
@ -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<SetPinResponse> {
@ -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 <T : CommandResponse> runTaskAsync(

View file

@ -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 {

View file

@ -35,14 +35,17 @@ val sendMiddleware: Middleware<AppState> = { 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 -> {

View file

@ -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
}

View file

@ -215,8 +215,8 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber<Walle
CreatingPayIdState.EnterPayId -> {
if (dialog == null) dialog = PayIdDialog(requireContext()).apply {
this.show()
this.stopProgress()
}
(dialog as? PayIdDialog)?.stopProgress()
}
CreatingPayIdState.Waiting -> (dialog as? PayIdDialog)?.showProgress()
}

View file

@ -8,6 +8,14 @@
<string name="generic_and">and</string>
<string name="generic_warning">Warning</string>
<string name="tap_to_scan">Tap to scan</string>
<string name="tap_the_card">Tap the card</string>
<string name="tap_to_sign">Tap to sign</string>
<string name="tap_to_purge_wallet">Tap to purge wallet</string>
<string name="tap_to_create_wallet">Tap to create wallet</string>
<string name="tap_to_change_passcode">Tap to change passcode</string>
<string name="tap_to_change_access_code">Tap to change access code</string>
<string name="notification_address_copied">Address was successfully copied</string>
<string name="notification_no_internet">No internet connection</string>
<string name="notification_no_internet_retry">@string/generic_retry</string>