Updated on 2026-08-14

This commit is contained in:
Tangem 2022-03-05 18:14:10 +03:00
commit 30606cd99f
7 changed files with 53 additions and 54 deletions

View file

@ -80,8 +80,8 @@ dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
implementation 'com.tangem:blockchain:develop-64'
implementation 'com.tangem.tangem-sdk-kotlin:core:develop-134'
implementation 'com.tangem.tangem-sdk-kotlin:android:develop-134'
implementation 'com.tangem.tangem-sdk-kotlin:core:develop-139'
implementation 'com.tangem.tangem-sdk-kotlin:android:develop-139'
// WebView
implementation "androidx.browser:browser:1.3.0"

View file

@ -153,7 +153,7 @@ class TangemSdkManager(private val tangemSdk: TangemSdk, private val context: Co
fun changeDisplayedCardIdNumbersCount(scanResponse: ScanResponse) {
tangemSdk.config.cardIdDisplayFormat = if (scanResponse.isTangemTwins()) {
CardIdDisplayFormat.LastLunh(4)
CardIdDisplayFormat.LastLuhn(4)
} else {
CardIdDisplayFormat.Full
}

View file

@ -71,7 +71,7 @@ class WalletCardsWidget(
)
leapfrogWidget.fold {
animator.doOnEnd {
// leapfrogWidget.initViews()
leapfrogWidget.initViews()
leapfrogWidget.unfold()
}
animator.start()

View file

@ -11,6 +11,7 @@ import com.tangem.common.CompletionResult
import com.tangem.common.core.TangemSdkError
import com.tangem.common.extensions.isZero
import com.tangem.common.services.Result
import com.tangem.operations.attestation.Attestation
import com.tangem.operations.attestation.OnlineCardVerifier
import com.tangem.tap.common.analytics.Analytics
import com.tangem.tap.common.extensions.*
@ -147,6 +148,9 @@ class WalletMiddleware {
store.dispatch(NavigationAction.PopBackTo(AppScreen.Home))
}
is WalletAction.LoadCardInfo -> {
val attestationFailed = action.card.attestation.status == Attestation.Status.Failed
store.dispatchOnMain(GlobalAction.SetIfCardVerifiedOnline(!attestationFailed))
scope.launch {
val response = OnlineCardVerifier().getCardInfo(
action.card.cardId, action.card.cardPublicKey
@ -156,13 +160,9 @@ class WalletMiddleware {
val actionList = listOf(
WalletAction.SetArtworkId(response.data.artwork?.id),
WalletAction.LoadArtwork(action.card, response.data.artwork?.id),
GlobalAction.SetIfCardVerifiedOnline(response.data.passed)
)
withMainContext { actionList.forEach { store.dispatch(it) } }
}
is Result.Failure -> {
store.dispatchOnMain(GlobalAction.SetIfCardVerifiedOnline(false))
}
}
store.dispatchOnMain(WalletAction.Warnings.CheckIfNeeded)
}

View file

@ -128,7 +128,7 @@ class SingleWalletView : WalletView {
val btnConfirm = if (state.tradeCryptoState.sellingAllowed ||
state.tradeCryptoState.buyingAllowed
) {
lButtonsShort.btnConfirmShort
lButtonsShort.btnConfirm
} else {
lButtonsLong.btnConfirmLong
}
@ -136,7 +136,7 @@ class SingleWalletView : WalletView {
val btnScan = if (state.tradeCryptoState.sellingAllowed ||
state.tradeCryptoState.buyingAllowed
) {
lButtonsShort.btnScanShort
lButtonsShort.btnScan
} else {
lButtonsLong.btnScanLong
}
@ -175,14 +175,14 @@ class SingleWalletView : WalletView {
else -> R.string.wallet_button_trade
}
val icon = when {
allowedToBuy && !allowedToSell -> R.drawable.ic_arrow_up_short_btn
!allowedToBuy && allowedToSell -> R.drawable.ic_arrow_down_short_button
allowedToBuy && allowedToSell -> R.drawable.ic_arrows_up_down_short_btn
allowedToBuy && !allowedToSell -> R.drawable.ic_arrow_up
!allowedToBuy && allowedToSell -> R.drawable.ic_arrow_down
allowedToBuy && allowedToSell -> R.drawable.ic_arrows_up_down
else -> null
}
with(binding) {
lButtonsShort.btnTrade.text = fragment?.getText(text)
lButtonsShort.btnTrade.setCompoundDrawablesWithIntrinsicBounds(0, icon ?: 0, 0, 0)
icon?.let { lButtonsShort.btnTrade.setIconResource(it) }
lButtonsShort.btnTrade.setOnClickListener { if (action != null) store.dispatch(action) }
}
}

View file

@ -6,58 +6,57 @@
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_scan_short"
style="@style/TapBlackButton"
android:id="@+id/btn_trade"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_height="52dp"
android:layout_marginStart="16dp"
android:layout_marginTop="30dp"
android:layout_marginBottom="33dp"
android:drawableTop="@drawable/ic_group_1243"
android:gravity="bottom|center_horizontal"
android:paddingStart="0dp"
android:paddingTop="7dp"
android:paddingEnd="0dp"
android:text="@string/wallet_button_scan"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/btn_trade"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_bias="1" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_trade"
style="@style/TapButton"
android:layout_width="0dp"
android:layout_height="52dp"
android:layout_marginStart="8dp"
android:layout_marginTop="30dp"
android:layout_marginBottom="33dp"
android:drawableTop="@drawable/ic_arrows_up_down_short_btn"
android:gravity="bottom|center_horizontal"
android:paddingTop="1dp"
android:layout_marginBottom="8dp"
android:text="@string/wallet_button_trade"
app:drawableTint="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btn_confirm_short"
app:layout_constraintStart_toEndOf="@+id/btn_scan_short"
app:icon="@drawable/ic_arrows_up_down"
app:layout_constraintBottom_toTopOf="@id/btn_scan"
app:layout_constraintEnd_toStartOf="@id/btn_confirm"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:iconGravity="textEnd"
android:textAlignment="center"
app:layout_constraintVertical_bias="1" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_confirm_short"
style="@style/TapButton"
android:id="@+id/btn_confirm"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_height="52dp"
android:layout_marginStart="8dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="33dp"
android:drawableTop="@drawable/ic_send_short_btn"
android:gravity="bottom|center_horizontal"
android:paddingTop="2dp"
android:layout_marginBottom="8dp"
android:text="@string/wallet_button_send"
app:layout_constraintBottom_toBottomOf="parent"
app:icon="@drawable/ic_send"
app:iconGravity="textEnd"
android:textAlignment="center"
app:layout_constraintBottom_toTopOf="@id/btn_scan"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/btn_trade"
app:layout_constraintStart_toEndOf="@id/btn_trade"
app:layout_constraintVertical_bias="1" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_scan"
style="@style/TapBlackButton"
android:layout_width="match_parent"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="30dp"
android:layout_marginBottom="33dp"
android:gravity="center"
android:paddingTop="7dp"
android:text="@string/wallet_button_scan"
app:icon="@drawable/ic_scan"
app:iconGravity="textEnd"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintVertical_bias="1" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -30,7 +30,7 @@
<string name="story_web3_description">Обменивайте, покупайте NFT, получайте займы и делайте вклады в более чем 100 различных децентрализованных сервисах</string>
<string name="story_finish_title">Кошелек для каждого</string>
<string name="story_finish_description">Используйте его на ходу, в любом месте, в любое время. Без проводов и батареек. Как только понадобится крипта, просто приложите карту к телефону.</string>
<string name="home_button_order">Заказать карту</string>
<string name="home_button_order">Купить</string>
<string name="home_button_search_tokens">Поиск токенов</string>
<string name="search_tokens_title">Поиск токенов</string>
<string name="alert_demo_message">Приложение работает в демонстрационном режиме. Средства на всех счетах ненастоящие.</string>