From e2721b21e11b75c52b9c21023f245f7a164e7cba Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 4 Mar 2026 14:47:39 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/tap/routing/utils/ChildFactory.kt | 1 + .../com/tangem/common/routing/AppRoute.kt | 3 +++ core/res/src/main/res/values-de/strings.xml | 11 +++++++++-- core/res/src/main/res/values-ja/strings.xml | 4 ++++ core/res/src/main/res/values-ru/strings.xml | 6 +++--- core/res/src/main/res/values/strings.xml | 2 ++ .../tangem/core/ui/ds/topbar/TangemTopBar.kt | 4 ++-- .../core/ui/ds/topbar/TangemTopBarActionUM.kt | 2 ++ .../main/res/drawable/ic_qrcode_scaner_24.xml | 18 ++++++++++++++++++ .../domain/qrscanning/models/SourceType.kt | 1 + .../InitializeQrScanningStateTransformer.kt | 5 +++++ .../model/intents/WalletContentClickIntents.kt | 1 + .../ui/components/common/WalletTopBar.kt | 4 ++-- 13 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 core/ui/src/main/res/drawable/ic_qrcode_scaner_24.xml diff --git a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt index 4131a1c99f..6078133aea 100644 --- a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt +++ b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt @@ -349,6 +349,7 @@ internal class ChildFactory @Inject constructor( val source = when (route.source) { is AppRoute.QrScanning.Source.Send -> SourceType.SEND is AppRoute.QrScanning.Source.WalletConnect -> SourceType.WALLET_CONNECT + is AppRoute.QrScanning.Source.MainScreen -> SourceType.MAIN_SCREEN } createComponentChild( context = context, diff --git a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt index 07b256a7eb..8b1bc37667 100644 --- a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt +++ b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt @@ -167,11 +167,14 @@ sealed class AppRoute(val path: String) : Route { get() = when (this) { is Send -> "/$networkName" WalletConnect -> "" + MainScreen -> "" } data class Send(val networkName: String) : Source() data object WalletConnect : Source() + + data object MainScreen : Source() } } diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 4cc165f633..402ebaa74f 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -399,6 +399,7 @@ Staking beenden Aufgrund der Beschränkungen von %1$s können nur %2$d UTXOs in eine einzige Transaktion passen. Das bedeutet, dass du nur %3$s oder weniger senden kannst. Du musst den Betrag reduzieren. Wert kopiert + Meine Wallet Woche mit Ja @@ -469,9 +470,12 @@ Sende Geld nur mit Beste Gelegenheiten Filter löschen + Die Liste ist vorübergehend leer, da sie gerade aktualisiert wird. Schauen Sie in Kürze wieder rein. Alle Netzwerke Alle Arten Filtern nach + Meine Netzwerke + Netzwerke Meist verwendet Keine Ergebnisse Verdienen @@ -826,6 +830,7 @@ Volumen Rufe dies auf oder tippe auf die Suchleiste, um Token direkt vom Markt hinzuzufügen Token hinzufügen + Token hinzufügen Steiger die Leistung Deiner Assets und ermögliche Dir gleichzeitig den sofortigen Zugriff. %s Yield-Modus aktivieren Du musst auf die folgende Version aktualisieren: %1$s um eine mobile Wallet zu erstellen @@ -845,6 +850,7 @@ Verwandte Token Verwandte Nachrichten Auf dem Laufenden bleiben + Trend-Score NFC ist auf deinem Gerät nicht verfügbar Über NFT NFT-Vermögenswert @@ -963,12 +969,12 @@ Biometrische Daten Lese mehr über die Seed-Phrase - + . Schreibe diese %d-Wörter in der unten angegebenen Reihenfolge auf und bewahre sie an einem sicheren und geheimen Ort auf. Deine Seed-Phrase - + . %d Wörter Um deine Wallets zu importieren, gib bitte deine Seed-Phrase in das folgende Feld ein @@ -1431,6 +1437,7 @@ Das Netzwerk erhebt eine Token-Genehmigungsgebühr, um zu überprüfen, ob Sie die Verwendung Ihres Tokens für den Swap genehmigen. Tausche mehr Token zu besseren Kursen direkt in deiner Brieftasche. Neuer Swap-Anbieter verfügbar! + Suchen Sie etwas anderes? Versuchen Sie es mit der Suche oder erkunden Sie eine andere Kryptowährung! Suchen Sie nach einem beliebigen Token, auch wenn es noch nicht in Ihrer Liste ist. Nutzen Sie die Suche, um zu finden, was Sie benötigen. Vertraue auf den rund um die Uhr verfügbaren Support bei allen Problemen diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index 6b87995090..e1c2294119 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -839,6 +839,7 @@ 関連トークン 関連ニュース 最新情報を入手 + トレンドスコア お使いのデバイスではNFCが使用できません NFTについて NFTアセット @@ -1488,6 +1489,7 @@ メイン画面からKYCを非表示にする 資金を追加 入金オプション + Googleウォレットに追加 カード番号 PINを変更する カードは支払いの準備が整いました。 @@ -1876,6 +1878,8 @@ サービスは一時的に利用できません スワップするトークンの量は %s を超えないでください スワップ金額は %s 以上である必要があります + このペアではスワップを利用できません。別のトークンを選択して、もう一度お試しください。 + スワップ非対応のペアです スワップの金額を変更してください このカードは、サンプル品または偽造品である可能性があります 真正性チェックに失敗しました diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 350f3c2c43..32e497df40 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -733,13 +733,13 @@ Удалить Например Bitcoin Ваш портфель был обновлен - Выбранный токен не доступен в кошельке на данный момент. Но не переживайте, вы можете выразить свой интерес проголосовав за его добавление. + Выбранный токен недоступен в кошельке на данный момент. Но не переживайте, вы можете выразить свой интерес проголосовав за его добавление. Голосовать Кошелёк не поддерживает более одной сети О монете Чтобы купить, обменять или получить данный токен, вам нужно добавить его к себе в портфель Этот актив в настоящее время не поддерживается в кошельке - Этот токен не доступен для данного кошелька + Этот токен недоступен для данного кошелька Добавить APY %s Мой портфель @@ -1499,7 +1499,7 @@ Обмен… Вы получите Выберите токен - не доступен + недоступен Будем рады вашей обратной связи Tangem Pay в режиме beta Карта заморожена diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index b03f0df753..7e5f655ad3 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -699,6 +699,7 @@ Mana level To begin tracking your crypto assets and transactions, add tokens Manage tokens + Scan QR code to send funds or connect to an app To access all the networks you need to scan the card Scan your card or ring Enjoy %1$s service fees on swaps via Changelly from February %2$s-%3$s @@ -1509,6 +1510,7 @@ Hide KYC from main screen Add funds Top-up options + Add to Google Wallet Card Number Change PIN The card is fully ready for payments. diff --git a/core/ui/src/main/java/com/tangem/core/ui/ds/topbar/TangemTopBar.kt b/core/ui/src/main/java/com/tangem/core/ui/ds/topbar/TangemTopBar.kt index 383047dd49..ecb96f61cf 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/ds/topbar/TangemTopBar.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/ds/topbar/TangemTopBar.kt @@ -63,7 +63,7 @@ fun TangemTopBar( }, endContent = if (endActions.isNotEmpty()) { { - Row(horizontalArrangement = Arrangement.spacedBy(TangemTheme.dimens2.x1)) { + Row(horizontalArrangement = Arrangement.spacedBy(TangemTheme.dimens2.x5)) { endActions.forEach { action -> TangemTopBarActionContent(action) } @@ -225,7 +225,7 @@ private fun TangemTopBar_Preview(@PreviewParameter(PreviewProvider::class) param startContent = params.startActionUM?.let { { TangemTopBarActionContent(it) } }, endContent = if (params.endActions.isNotEmpty()) { { - Row(horizontalArrangement = Arrangement.spacedBy(TangemTheme.dimens2.x1)) { + Row(horizontalArrangement = Arrangement.spacedBy(TangemTheme.dimens2.x5)) { params.endActions.forEach { action -> TangemTopBarActionContent(action) } diff --git a/core/ui/src/main/java/com/tangem/core/ui/ds/topbar/TangemTopBarActionUM.kt b/core/ui/src/main/java/com/tangem/core/ui/ds/topbar/TangemTopBarActionUM.kt index 6857bffdbd..eb096a2d8f 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/ds/topbar/TangemTopBarActionUM.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/ds/topbar/TangemTopBarActionUM.kt @@ -2,6 +2,7 @@ package com.tangem.core.ui.ds.topbar import androidx.annotation.DrawableRes import androidx.annotation.FloatRange +import androidx.compose.runtime.Immutable /** * User model for top bar action @@ -11,6 +12,7 @@ import androidx.annotation.FloatRange * @property onClick lambda be invoked when action component is clicked. If null, action will not be clickable * @property ghostModeProgress progress of ghost mode animation, from 0f to 1f. */ +@Immutable data class TangemTopBarActionUM( @param:DrawableRes val iconRes: Int, val isActionable: Boolean = true, diff --git a/core/ui/src/main/res/drawable/ic_qrcode_scaner_24.xml b/core/ui/src/main/res/drawable/ic_qrcode_scaner_24.xml new file mode 100644 index 0000000000..2e11d5915c --- /dev/null +++ b/core/ui/src/main/res/drawable/ic_qrcode_scaner_24.xml @@ -0,0 +1,18 @@ + + + + diff --git a/domain/qr-scanning/models/src/main/java/com/tangem/domain/qrscanning/models/SourceType.kt b/domain/qr-scanning/models/src/main/java/com/tangem/domain/qrscanning/models/SourceType.kt index 87be83fd0c..3f4e122ff6 100644 --- a/domain/qr-scanning/models/src/main/java/com/tangem/domain/qrscanning/models/SourceType.kt +++ b/domain/qr-scanning/models/src/main/java/com/tangem/domain/qrscanning/models/SourceType.kt @@ -3,4 +3,5 @@ package com.tangem.domain.qrscanning.models enum class SourceType { WALLET_CONNECT, SEND, + MAIN_SCREEN, } \ No newline at end of file diff --git a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/transformers/InitializeQrScanningStateTransformer.kt b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/transformers/InitializeQrScanningStateTransformer.kt index 06faacb811..ca3528a5e9 100644 --- a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/transformers/InitializeQrScanningStateTransformer.kt +++ b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/transformers/InitializeQrScanningStateTransformer.kt @@ -22,6 +22,7 @@ internal class InitializeQrScanningStateTransformer( val message = when (source) { SourceType.SEND -> network?.let { resourceReference(R.string.send_qrcode_scan_info, wrappedList(it)) } SourceType.WALLET_CONNECT -> resourceReference(R.string.wc_qr_scan_hint) + SourceType.MAIN_SCREEN -> resourceReference(R.string.main_qr_scan_hint) } return QrScanningState( @@ -44,6 +45,10 @@ internal class InitializeQrScanningStateTransformer( title = resourceReference(R.string.wc_new_connection), startIcon = R.drawable.ic_close_24, ) + SourceType.MAIN_SCREEN -> TopBarConfig( + title = null, + startIcon = R.drawable.ic_close_24, + ) } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletContentClickIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletContentClickIntents.kt index 3264587566..5c65edb11b 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletContentClickIntents.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletContentClickIntents.kt @@ -43,6 +43,7 @@ import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject +@Suppress("TooManyFunctions") internal interface WalletContentClickIntents { fun onDetailsClick() diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletTopBar.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletTopBar.kt index e2eb07e356..7dd4faf316 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletTopBar.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletTopBar.kt @@ -82,8 +82,8 @@ internal fun WalletTopBar(config: WalletTopBarConfig) { }, actions = { config.endActions.forEach { action -> - if (action.onClick != null) { - IconButton(onClick = action.onClick!!) { + action.onClick?.let { onClick -> + IconButton(onClick = onClick) { Icon( painter = painterResource(id = action.iconRes), contentDescription = null,