From 7ce855dbb0d0cf469fffba7ce14ccf6f585b0fd6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 24 Nov 2025 16:12:00 +0300 Subject: [PATCH 1/7] Updated on 2026-08-14 --- tangem-android-tools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tangem-android-tools b/tangem-android-tools index 92c1bfd312..193db8a024 160000 --- a/tangem-android-tools +++ b/tangem-android-tools @@ -1 +1 @@ -Subproject commit 92c1bfd3123f0b2fd9e5a80b9d69bbc17a6e1160 +Subproject commit 193db8a0247a1f33574dcdd5f9ec4dab2c28ea73 From 744185dfa51840d4b466470a80226e2510801127 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 24 Nov 2025 20:09:41 +0500 Subject: [PATCH 2/7] Updated on 2026-08-14 --- core/res/src/main/res/values-de/strings.xml | 5 +- core/res/src/main/res/values-es/strings.xml | 4 + core/res/src/main/res/values-fr/strings.xml | 4 + core/res/src/main/res/values-ja/strings.xml | 33 ++-- core/res/src/main/res/values-ru/strings.xml | 167 +++++++++++++++++- core/res/src/main/res/values/strings.xml | 40 +++-- .../impl/main/model/YieldSupplyModel.kt | 13 +- 7 files changed, 235 insertions(+), 31 deletions(-) diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 0c8a26dff9..578eee799f 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -273,6 +273,7 @@ Entfernen Kostenlos Vom + Von %s Adressen synchronisieren Erste Schritte Token erhalten @@ -1402,7 +1403,6 @@ Tausche beliebige Vermögenswerte in Deinem Portfolio gegen eine Karte. Kartendetails Karte entsperren - Konto erstellen und Karte ausstellen Tangem Pay Status anzeigen KYC für Tangem Pay in Arbeit @@ -1951,6 +1951,9 @@ Ertragsmodus Bearbeitung Deiner Einzahlung Ertragsmodus + Ertragsmodus ein + Ertragsmodus aus + Aufstockung des Ertragsmodus Automatisch Einzahlung von %1$s %2$s zur Deckung der Netzwerkgebühr für Transaktionen Die Gebühr %s kann nicht gedeckt werden diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index 7a35e701c3..8e952b10f6 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -194,6 +194,7 @@ Lento Velocidad y tarifa Finalizar + De %s Sincronizar direcciones Comenzar Ir al proveedor @@ -1566,6 +1567,9 @@ Modo de rendimiento Procesando su depósito Modo Rendimiento + Modo Rendimiento activado + Modo Rendimiento desactivado + Recarga del modo Rendimiento Automático Deposite algo de %1$s %2$s para cubrir la tarifa de red para las transacciones No se puede cubrir la tarifa %s diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index 547fa6c870..b7f54cdaba 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -172,6 +172,7 @@ Lent Vitesse et frais Terminer + De %s Synchroniser les adresses Commencer Aller au fournisseur @@ -1545,6 +1546,9 @@ Mode Rendement Traitement de votre dépôt Mode Rendement + Mode rendement activé + Mode rendement désactivé + Recharger le mode Rendement Automatique Déposez %1$s %2$s pour couvrir les frais de réseau liés aux transactions. Impossible de couvrir les frais %s diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index 35063b6e10..afc248155a 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -164,7 +164,7 @@ すべてのTangemデバイスがリセットされました。ウォレットのアップグレードを続行できます。 もう一度アップグレードしてください リセット完了 - すべてのTangemデバイスをリセットしていません + このウォレット内のすべてのTangemデバイスで、リセット処理を完了することを推奨します。 すべてのTangemデバイスをリセットしていません このカードを使用して、このウォレット内の他のカードまたはリングのアクセスコードをリセットしたくない場合は、このオプションを無効にしてください。これにより、このカードのアクセスコードもリセットできなくなりますのでご注意ください。 このカードを使用して、このウォレット内の他のカードのアクセスコードをリセットできます。 @@ -270,6 +270,7 @@ 忘れる 無料 送信元 + %sから アドレスを同期する はじめる トークンを取得 @@ -294,6 +295,7 @@ %dネットワーク 新しいアドレス + ニュース NFT いいえ @@ -511,6 +513,9 @@ ID: %s 取引IDをコピーしました ポートフォリオ内のアセットをこのトークンと交換する + マーケット&ニュース + Tangem AI + いま話題 以下の情報はオプションです。共有したくない場合は消去できます。 どのような機能が不足しているかを教えください。解決できるよう尽力致します。 お持ちのカードまたはリングについて教えてください @@ -594,7 +599,7 @@ このウォレットを削除しますか? ウォレットの削除前にバックアップをしていなければ、アクセスを失う可能性があることを理解しています。 ウォレットを削除しても中身自体が消えるわけではなく、単にこのデバイスから表示が消えるだけであることを理解しています。 - もはやシードフレーズは不要——Tangemカードやリングがそのままあなたの安全なバックアップになります。 + もはや、シードフレーズは不要。Tangemカードやリングが、そのまま安全なバックアップになります。 Tangemでバックアップ アップグレードできません。このデバイスにはすでにウォレットが存在します。 別のデバイスを選択してください。このデバイスはアップグレードに使用できません。 @@ -758,6 +763,8 @@ 取引量 これをドラッグするか、検索窓をタップして、マーケットから直接トークンを追加します トークンを追加 + すべてのニュース + 最新情報を入手 お使いのデバイスではNFCが使用できません NFTについて NFTアセット @@ -1048,7 +1055,7 @@ 推奨手数料を下回る手数料が指定されたため、取引に遅れが生じる可能性があります。続行しますか? 理由: %1$s \nコード: %2$s 取引は完了していません - 別のトークンに変換する + 別のトークンまたはネットワークにスワップする 金額 受取人に送信されます 取引手数料は、vByteフィールドのSatoshiの値を調整して設定できます。 @@ -1399,13 +1406,14 @@ ポートフォリオ内のあらゆる資産をカードと交換 カードの詳細 カードの一時停止を解除 - アカウントを作成してカードを発行 + 通常は最大で15分ほどかかります + Tangemカードのセットアップ Tangem Pay ステータスを表示 Tangem PayのKYC手続き進行中 カードをGET - どこでも暗号資産を使える - Apple PayとGoogle Payに対応したデジタルカード付き + Apple PayとGoogle Payに対応したデジタルカード付き + どこでも暗号資産を使える 購入時に追加手数料はかかりません。 余計な費用なしで、表示金額のみを支払う あなたの住所や資産を開示することなく、個別の支払い用アカウントが作成されます。 @@ -1580,7 +1588,7 @@ すでにTangemウォレットを使っていますか? 今すぐスキャン ウォレットの設定方法を選択する - Tangemウォレットを手に入れる準備はできた? + Tangemウォレットを購入しますか? 今すぐ購入 Googleドライブのバックアップから既存のウォレットを復元する Googleドライブからインポート @@ -1602,7 +1610,7 @@ 今すぐ10 % オフで購入 1.3万種類以上の暗号資産にアクセス。ワンタップで買付、売却、スワップ、ステーキングが可能です。\nバックアップ用に最大3枚のカードを連携できます。 Tangemウォレットを見る - このシークレットコードはウォレットを保護し、ログインや取引の署名に使用されます。 + このアクセスコードはウォレットを保護し、ログインや取引の署名に使用されます。 アクセスコードの設定・変更 アクセスコードを変更する ウォレットの受信取引とTangemの更新について通知を受け取る。 @@ -1796,7 +1804,7 @@ URIはすでに使用されています WalletConnect 不審な取引 - すでにTangemをお持ちですか? + すでにTangemウォレットをお持ちですか? 数千種類の資産 業界最高水準のハードウェアウォレット 迅速な配送 @@ -1805,7 +1813,7 @@ シンプルな操作 Tangemでハードウェアウォレットを作成しましょう。銀行のカードのようにスリムで、金庫のように安全です。 ソフトウェアウォレットを作成またはインポート - スマートフォン上にソフトウェアウォレットを作成するか、インポートしてください。 + スマートフォン上にソフトウェアウォレットを作成またはインポートする。 モバイルウォレットから始める その他の方法 Tangemハードウェアウォレットを使用する @@ -1826,7 +1834,7 @@ 次回ウォレットにチャージするときに手数料の増加を避けるには、金額を%s XTZ減らしてください。 利息モードが有効な場合、このアドレスへの今後の入金はすべてAaveに提供されます。資金は引き続き自由に管理できます。 %sはAaveに供給されています - Aaveへの%1$s %2$sの供給は保留中です + %1$s %2$sをAaveへ供給中 承認 トークンの承認が取り消されました。サービスの機能を再開するには、再度トークンの承認を行ってください。 承認が必要 @@ -1902,6 +1910,9 @@ 利息モード 利息モードの有効化 利息モード + 利息モード オン + 利息モード オフ + 利息モードへの追加入金 自動 取引のネットワーク手数料をカバーするために、 %1$s %2$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 b77cf5fb56..07f0ff53e5 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -1,17 +1,51 @@ Ваш кошелёк не защищён без кода доступа. + Сбросить все равно + Код доступа не задан + Введите код доступа + Неверный код доступа. Ваш мобильный кошелёк будет удалён после ещё %s неверных попыток. + Подтвердите ваш код доступа, чтобы продолжить. + Повторите код доступа + Установите %s-значный код доступа для разблокировки кошелька. + Создать код доступа + Код доступа + Превышен лимит %1$s аккаунтов. Архивируйте, чтобы создать новый. + Невозможно добавить новый аккаунт. + Архивированные аккаунты + Восстановить Лимит в 20 активных аккаунтов достигнут. Пожалуйста, зархивируйте один аккаунт, чтобы продолжить. Невозможно восстановить аккаунт + В архиве + Ошибка архивации аккаунта. Пожалуйста, попробуйте позже. + Этот аккаунт участвует в реферальной программе + Этот аккаунт не может быть архивирован. + Мы не смогли создать аккаунт. Пожалуйста, попробуйте позже. + Архивный аккаунт Архив Вы архивируете свой аккаунт, но в любое время можете вернуть его обратно Архивация... + Аккаунт + Аккаунт для наград + Добавить аккаунт + Сохранить + Название аккаунта Имя аккаунта уже существует Аккаунт Новый аккаунт + Добавить аккаунт + Редактировать аккаунт + %1$s в %2$s Основной аккаунт - Продолжить редактирование + Лимит %1$s активных аккаунтов превышен. Архивируйте один, чтобы продолжить. + Невозможно восстановить аккаунт + Продолжить + Отменить + Вы уверены, что хотите создание нового аккаунта? + Вы уверены, что хотите отменить изменения? Несохраненные изменения + Некоторые пользовательские токены были перемещены из «%1$s» в «%2$s», поскольку их путь деривации относится к этой учётной записи. + Некоторые пользовательские токены были перемещены Не нашли свой токен? Перейдите в раздел «Рынок» на главной странице и добавьте его в свой портфель для покупки. Не нашли свой токен? Перейдите в раздел «Рынок» на главной странице и добавьте его в свой портфель для продажи. Продать @@ -51,8 +85,10 @@ Подключите функцию комиссии по умолчанию и при формировании транзакции на отправку средств комиссия будет выставлена автоматически, а экран комиссии пропущен. Вы всегда сможете на него вернуться. Перейдите в настройки, чтобы включить биометрическую аутентификацию в приложении Tangem Включите биометрическую аутентификацию + Отключение %1$s потребует ввода вашего кода доступа для разблокировки приложения и работы с кошельком. Все сохраненные коды доступа будут удалены. Вам потребуется вводить код доступа при работе с кошельком. При отключении функции сохранения кошелька все ранее сохраненные кошельки будут удалены из приложения. + Требуется код доступа Эта опция отключает использование биометрии для выполнения чувствительных действий. Каждый раз, например при подписании транзакции, вам потребуется вводить код доступа. Сохранение кода доступа Подключите функцию хранения кодов доступа от карт на телефоне в зашифрованном виде, и при работе с картой или кольцом вместо кода доступа будет запрашиваться биометрическая аутентификация. @@ -63,12 +99,29 @@ Как в системе Тема Настройки приложения + Добавить кошелек + Выберите кошелек для входа + С возвращением! + + %d карта + %d карты + %d карт + %d карты + + Мобильный кошелек + Вы успешно завершили бэкап вашего кошелька. Эти слова невозможно восстановить, если они будут потеряны. Храните их в надёжном месте. + Бэкап завершен Ваша секретная фраза восстановления — это фиксированный набор из %s случайных слов для доступа к вашему кошельку и его восстановления. Эти слова невозможно восстановить, если они будут потеряны. Храните их в безопасности. Храните в безопасности + Сохраните эти %s слов в безопасном месте и никому их не сообщайте. + Восстановление невозможно + Фраза восстановления Никому не сообщайте эти слова. Tangem никогда не будет их спрашивать. Ниже приведены %s слов вашей фразы восстановления кошелька. Используйте их, чтобы восстановить кошелёк в случае потери устройства. Запишите эти %s слов в указанном порядке и храните их в безопасности и в тайне. + Вы несёте полную ответственность за безопасность кошелька и фразы восстановления. + Фраза восстановления Чтобы скрыть или показать баланс, просто поверните ваше устройство вниз или отключите опцию его в разделе \"Настройки\" Больше не показывать Понятно @@ -97,9 +150,19 @@ %d устройств %d устройств + + %d токен + %d токена + %d токенов + %d токены + Пожалуйста, сбросьте следующее устройство, чтобы продолжить. Сброс кошелька + Все устройства Tangem были сброшены. Теперь вы можете продолжить апгрейд кошелька. + Обновить Сброс завершен + Мы рекомендуем завершить процесс сброса для всех устройств Tangem в этом кошельке. + Вы не сбросили все свои устройства Tangem Отключите эту опцию, если не хотите, чтобы эта карта использовалась для сброса кодов доступа на другие карты этого кошелька. Обратите внимание, сброс кода также не будет доступен на этой карте. Использовать эту карту для сброса кода доступа на других картах в этом кошельке Восстановление доступа @@ -126,20 +189,24 @@ Принять Доступ запрещен Аккаунт + Аккаунты Активировать Добавить Добавить в портфель Добавить токен + Добавлен Адрес Все Разрешить Сумма Аналитика + и Применить Одобрение Разрешить Внимание Доступные сети + Резервное копирование Баланс: %s Баланс биометрическую аутентификацию @@ -150,6 +217,7 @@ Вы не предоставили доступ к камере, пожалуйста, измените настройки конфиденциальности. Отмена Изменить + Выбрать аккаунт Выберите действие Выберите сеть Выберите токен @@ -157,6 +225,7 @@ Получить Вывести награду Закрыть + Скоро появится Подтвердить Подключение Продолжить @@ -200,9 +269,12 @@ Скорость и комиссия Завершить Забыть + Комиссия Из + Из %s Синхронизировать адреса Начать зарабатывать + Получить токен К провайдеру Перейти в токен Понятно @@ -214,15 +286,23 @@ Узнать больше Осталось %1$s Заблокирован + Заблокированные кошельки Основная сеть месяц Комиссия сети Сумма отправки будет уменьшена на %1$s (%2$s) для покрытия выбранного уровня комиссии + + %d сеть + %d сети + %d сетей + %d сети + Далее NFT Нет Нет адреса Не добавлено + Не сейчас Сейчас OK Открыть в браузере @@ -235,9 +315,11 @@ %1$s — %2$s Подробнее Получить + Рекомендовано Отклонить Перезагрузить Переименовать + Требуется Сброс Сохранить Сохранить изменения @@ -253,9 +335,12 @@ Сервер недоступен, повторите попытку позднее Поделиться Поделиться ссылкой + Скрыть Подробнее Подписать Подписать и отправить + Сбросить + Что-то пошло не так Застейкать Стейкинг Начать @@ -267,6 +352,7 @@ условия участия Условиями использования На + На %s Сегодня %d токен @@ -290,6 +376,8 @@ Да Адрес контракта скопирован! Доступные сети + Деривация вашего токена совпадает с деривацией %1$s. Токен будет добавлен к этой учётной записи. + Токен добавлен в аккаунт %1$s Адрес контракта Адрес контракта некорректен Пожалуйста, выберите сеть @@ -331,6 +419,7 @@ %s хэшей Номер устройства Обратиться в поддержку + Открыть чат поддержки Добавить еще карты Валюта приложения Скрывать балансы жестом переворота @@ -351,11 +440,13 @@ Ошибка WalletConnect Вы использовали карту или кольцо от другого кошелька. Приложите карту или кольцо, связанную с этим кошельком. Недостаточно средств для совершения транзакции. Пожалуйста, пополните свой аккаунт. + Обменять любой актив на этот токен Мои токены У вас нет добавленных токенов. Добавьте токены для обмена Недоступен для обмена с %s Предоставлено Статус + Выберите провайдера Tangem предоставляет доступ к обмену через сторонних поставщиков в соответствии с их правилами Провайдер Произошла ошибка. Код: %s @@ -367,6 +458,7 @@ Чтобы вернуть ваши деньги, посетите сайт провайдера Операция не выполнена провайдером Ваш обмен занимает больше времени, чем обычно, но ваши средства полностью в безопасности и будут доставлены. Если возникли вопросы, вы всегда можете связаться с поддержкой провайдера. + Долгое время транзакции Отправленные средства были возвращены в %1$s на ваш кошелек в соответствии с правилами OKX или моста обмена. %2$s Сумма была возвращена в %1$s (%2$s сети) Посетите сайт провайдера для проверки @@ -415,6 +507,9 @@ Скрыть эту транзакцию После скрытия статус транзакции нельзя будет просмотреть снова. Вместо этого вы можете просто свайпнуть плашку вниз, чтобы закрыть её. Скрыть статус транзакции? + Этот токен не поддерживается. Пожалуйста, выберите другой токен для обмена. + %s не поддерживается + Обменять с Токены не найдены. Пожалуйста, попробуйте другой запрос ID: %s ID транзакции скопирован @@ -442,6 +537,13 @@ Чтобы продолжить, вам нужно разрешить смарт-контракту %1s использовать ваш %2s Дать разрешение Безлимитно + Резервная копия создаётся на 2–3 картах Tangem. Храните их отдельно для безопасности — seed-фраза не нужна. + Бэкап на несколько карт + Добавить кошелек Tangem + Ваш приватный ключ генерируется на карте Tangem и никогда не покидает её. + Генерация ключа + Операции с криптографией выполняются внутри защищённого чипа, устойчивого к клонированию и физическому взлому. + Аппаратная безопасность Добавить существующий кошелек Создать новый кошелек Купить @@ -499,6 +601,7 @@ Я понимаю, что если я не создал резервную копию кошелька перед его удалением, я могу потерять к нему доступ. Я понимаю, что удаление моего кошелька не стирает его — оно просто удаляет его с моего устройства. Фраза восстановления больше не нужна — ваша карта или кольцо Tangem становятся вашей надёжной резервной копией. + Резервное копирование с Tangem Это устройство не может быть использовано для апгрейда, оно уже содержит другой кошелек. Выберите другое устройство. Это нельзя использовать для обновления. Во время операции произошла ошибка. @@ -568,6 +671,7 @@ Этот актив в настоящее время не поддерживается в кошельке Этот токен не доступен для данного кошелька Добавить + APY %s Мой портфель Рынок Чтобы создать адреса для выбранных сетей, отсканируйте вашу карту или кольцо Tangem кошелька @@ -773,12 +877,14 @@ Cоздавайте ключи приватно Ваша карта активирована и готова к использованию Успешно! + Ваш кошелек настроен и готов к использованию! В этом случае вам будет необходимо начать процесс заново. Вы хотите выйти из процесса активации? Подготовка Другой кошелек уже был создан на карте, которую вы пытаетесь добавить. Если на нем есть средства, пожалуйста сначала выведите их, а затем сделайте сброс до заводских настроек и используйте как резервную. Сохраните ваш кошелек Резервная копия + Биометрия Прочитать о seed-фразе @@ -844,6 +950,7 @@ Другие валюты Популярные фиаты Поиск по валюте + Получение лучших курсов... Моментально Пользуясь сервисом покупки, вы соглашаетесь с %1$s и %2$s Сумма покупки не может быть больше, чем %s @@ -879,6 +986,7 @@ %s мин Доступно от + Доступно до Вы получите Вы можете закрыть этот экран и проверить статус транзакции на экране информации о токене. До @@ -946,6 +1054,10 @@ Я понимаю, что не смогу использовать эту карту для восстановления кода доступа на других картах текущего кошелька Сброс к заводским настройкам приведет к полному удалению кошелька с выбранной карты или кольца. Вы не сможете восстановить текущий кошелек или использовать данную карту или кольцо для восстановления кода доступа. Сброс к заводским настройкам приведет к полному удалению кошелька с выбранной карты или кольца. Вы не сможете восстановить текущий кошелек. + Все Tangem девайсы были сброшены. + Что-то пошло не так при активации. Пожалуйста, сбросьте карты по одной. + Ошибка проверки карты + Сбросьте следующее устройство для продолжения. Владельцам колец — 3 обмена без комиссии на Changelly до 15.11! Обмен с 0% комиссией! Войдите в приложение и следите за своим балансом без сканирования карты или кольца @@ -973,8 +1085,9 @@ Вы указали комиссию ниже рекомендуемой, это может привести к задержке исполнения вашей транзакции. Продолжить? Причина: %1$s\nКод: %2$s Транзакция не выполнена - Конвертировать в другой токен + Обменять на другой токен или сеть Сумма + Будет отправлено получателю Вы можете установить комиссию за транзакцию, изменив значение в поле Satoshi per vByte. Комиссия, которая будет взята за вашу транзакцию. Вы можете выставить своё собственное значение. Максимальная комиссия @@ -1007,6 +1120,7 @@ Макс Максимальная сумма Комиссия не превысит + Мемо %s Недопустимый Memo Покрытие сетевой комиссии Nonce @@ -1056,6 +1170,7 @@ Комиссия сети будет покрыта за счет использования %1$s энергии Комиссия сети будет снижена за счет использования %1$s энергии включая комиссию сети в размере %1$s + На адрес Транзакция успешно подписана и отправлена в блокчейн. Баланс будет обновлен через некоторое время %1$s — это монета в сети Tron. Чтобы рассчитать комиссию и совершить транзакцию, вам необходимо внести немного Tron (TRX) на свой адрес. Сумма превышает остаток @@ -1090,11 +1205,13 @@ Сумма для стейкинга должна быть не менее %s Согласно правилам сети, сумма стейкинга будет округлена до %1$sTRX. Сумма для вывода из стейкинга будет округлена до %1$s TRX ввиду особенностей сети. + APR %1$s%% Забрать средства Комиссия за стейкинг аккаунт Стейкинг аккаунт — это специальный счет, на котором хранятся застейканные токены SOL. Он создается при делегировании ваших токенов валидатору для участия в подтверждении транзакций и получении наград. За создание стейкинг аккаунта взимается небольшая комиссия, которая возвращается после завершения стейкинга. Процентная ставка APR: Показывает процент, который вы можете заработать за год без учёта сложного процента. Начисленные проценты не добавляются к балансу, поэтому на них не начисляются дополнительные проценты. + Годовая процентная доходность APY: Показывает общий процент, который вы можете заработать за год с учётом сложного процента. Сложный процент означает, что начисленные проценты добавляются к вашему балансу, и на них тоже начисляются проценты. APR APY @@ -1105,6 +1222,7 @@ %s оценка доходности Позиция в рынке Метрики + Согласно правилам сети %1$s, заявки возможны с %2$s. Суммы ниже будут зачислены на ваш счёт при анстейкинге. Минимальное количество Нет вознаграждений к получению Способ вознаграждения @@ -1226,6 +1344,7 @@ Для отправки требуется входящая транзакция на сумму не менее %1$s Недостаточно средств Подтверждая, вы разрешаете смарт-контракту использовать ваши токены в будущих транзакциях. + Фиксированный курс Комиссия сети за одобрение токена будет взиматься за подтверждение того, что именно вы разрешаете использовать ваш токен для обмена. Обменивайте больше токенов по лучшим курсам прямо в вашем кошельке. Новый провайдер обмена! @@ -1257,7 +1376,12 @@ Вы получите Выберите токен не доступен + Пополнить Комиссия + Получить помощь + Скрыть детали + Всё готово! Ваша карта готова к использованию. + Получить карту Это мой кошелек Балансы скрыты Балансы показаны @@ -1323,6 +1447,7 @@ Это действие необратимо. У вас не будет доступа к старому кошельку. Приложите twin-карту с номером %s и не убирайте до окончания операции Пожалуйста, попробуйте позже. Если проблема сохранится, обратитесь в поддержку. + Что-то пошло не так Произошла ошибка. Код ошибки: %s. Попробуйте, пожалуйста, снова. Если проблема будет продолжать возникать — обратитесь в службу поддержки. Используйте %s или отсканируйте карту/кольцо, чтобы получить доступ к своему кошельку Соединение не удалось: это dApp использует Wallet Connect версии 1.0, которая не поддерживается. Убедитесь, что dApp поддерживает Wallet Connect версии 2.0 для успешного подключения. @@ -1346,8 +1471,15 @@ Переименование кошелька Разблокировать все Разблокировать все с %s + Код доступа Активация аккаунта ПИН не принят. Попробуйте ещё раз или введите другой код. + Выберите способ добавления кошелька + Отсканируйте вашу карту или кольцо Tangem, чтобы восстановить её или импортировать из другого кошелька. + Создать аппаратный кошелёк + Хотите приобрести кошелек Tangem? + Импортировать фразу восстановления + Восстановите кошелёк на телефоне или импортируйте из другого приложения — удобно, но менее безопасно, чем карта Tangem. Что выбрать? Блокчейн недоступен. Попробуйте позже. Отсканируйте карту или кольцо @@ -1388,6 +1520,7 @@ Подключение к dApps WalletConnect Подключение может занять несколько секунд + Создать кошелек Tangem от %s Купите Tangem Wallet — физическое устройство, которое надёжно хранит ваш приватный ключ офлайн. Аппаратный кошелёк @@ -1397,6 +1530,19 @@ Уже используете Tangem Wallet? Отсканировать Выберите способ создания кошелька + Хотите купить кошелёк Tangem? + Купить сейчас + Восстановите существующий кошелек через Google Drive. + Импорт из Google Drive + Добавить существующий кошелек + Сканировать кошелек Tangem + Импортируйте существующий кошелек через вашу фразу восстановления. + Имрортировать кошелек + Ввести фразу восстановления + Вы успешно сделали бэкап вашего кошелька. + Импортировать кошелек + Импорт завершен + Импортировать кошелек Рыночная цена %s за 24 часа Сеть %s @@ -1405,6 +1551,8 @@ Получить с 10% скидкой Получите доступ к более чем 13 000 криптовалют. Покупайте, продавайте, обменивайте и стейкайте в один клик. Свяжите до трех карт для резервного копирования. Откройте Tangem Wallet + Код доступа защищает кошелёк и нужен для входа и подписания транзакций. + Установить/изменить код доступа Изменить Код Доступа Получайте уведомления о входящих транзакциях в кошельке и обновлениях Tangem. В настоящий момент push-уведомления могут не работать на устройствах Huawei. Мы уже работаем над решением этой проблемы и планируем исправление в ближайших обновлениях. Спасибо за понимание! @@ -1597,6 +1745,19 @@ URI уже используется WalletConnect Подозрительная транзакция + Уже есть Tangem кошелек? + Тысячи активов + Лучший в своём классе аппаратный кошелёк + Быстрая доставка + Начните в один клик + Просто и надёжно + Интуитивно понятный + Создайте аппаратный кошелёк с Tangem. Тонкий, как банковская карта, безопасный, как банковский сейф. + Создать или импортировать мобильный кошелёк + Создайте или импортируйте программный кошелёк на своём телефоне. + Начать с Мобильным кошельком + Другие способы + Использовать аппаратный кошелек Tangem Узнать больше и купить Отказаться Вы не закончили резервное копирование. Хотите продолжить? @@ -1614,7 +1775,7 @@ Чтобы не платить повышенную комиссию при следующем пополнении кошелька, уменьшите сумму на %s XTZ При активном режиме доходности все будущие депозиты на этот адрес будут направляться в Aave. Вы по-прежнему можете свободно управлять своими средствами. Ваш %s внесён в Aave - Отправка %1$s %2$s в Aave находится в ожидании + Отправка %1$s %2$s в Aave Выдать разрешение Разрешение для вашего токена было отозвано. Выдайте его снова, чтобы продолжить работу сервиса. Необходимо разрешение diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 6c0c43f6d2..5f5daffaf8 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -90,6 +90,7 @@ Tokens in %1$s network are not supported by this card or ring due to firmware limitation. Are you having difficulty scanning your card or ring? This card is not designed to work with this app + Set an access code first to enable biometrics Use %1$s to unlock your wallet and approve sensitive actions, like signing transactions. For hardware wallets, a card or ring is still required to sign. Default Fee Enable Default Fee to set transaction fees automatically and skip the Fee page when sending funds. You can always go back to this page if necessary. @@ -167,7 +168,7 @@ All Tangem devices have been reset. You can now continue upgrading your wallet. Upgrade again Reset complete - You haven’t reset all your Tangem devices + We recommend completing the reset process for all Tangem devices in this wallet. You haven’t reset all your Tangem devices Disable this option if you don\'t want this card to be used to reset access codes on other cards or rings in this wallet. Please note that this will also prevent you from resetting the access code on this card. Allows you to use this card to reset access code on other cards in this wallet @@ -275,6 +276,7 @@ Forget Free From + From %s Synchronize addresses Get started Get token @@ -300,12 +302,13 @@ %d networks New address + News Next NFT No No address Not Added - Not Now + Not now Now OK Open in Browser @@ -357,6 +360,7 @@ terms and conditions Terms of Use To + To %s Today %d token @@ -519,6 +523,9 @@ ID: %s Transaction ID copied Swap any asset in your portfolio for this token + Market & News + Tangem AI + Trending Now The following information is optional. You can erase it if you don\'t want to share it. Tell us what functions you are missing, and we will try to help you. Please tell us what card or ring do you have @@ -605,7 +612,7 @@ Forget this wallet? I understand that if I haven\'t backed up my wallet before removing it, I may lose access to it. I understand that removing my wallet does not delete it—but simply removes it from my device. - No seed phrase is needed anymore — your Tangem card or ring becomes your secure backup. + No seed phrase is needed anymore. Your Tangem card or ring becomes your secure backup. Backup with Tangem Can’t upgrade. A wallet already exists on this device. Pick another device. This one can’t be used for the upgrade. @@ -772,6 +779,8 @@ Volume Pull this up or tap the search bar to add tokens directly from the market Add tokens + All news + Stay in the loop NFC is not available on your device About NFT NFT asset @@ -1070,7 +1079,7 @@ You specified a commission below the recommended amount, which could cause a delay in your transaction. Continue? Reason: %1$s\nCode: %2$s The transaction is not completed - Convert to another token + Swap to another token or network Amount Will be sent to recipient You can set your transaction fee by adjusting the value in the Satoshi per vByte field. @@ -1423,13 +1432,14 @@ Swap any asset in your portfolio for card Card details Unfreeze Card - Create account and issue a card + It usually takes up to 15 minutes + Setting up your Tangem Card Tangem Pay View Status KYC in progress for Tangem Pay Get card - Spend your crypto anywhere - With digital card that works with Apple Pay and Google Pay + With digital card that works with Apple Pay and Google Pay + Spend your assets anywhere There are no additional fees for purchases Pay exactly what you see A separate payment account will be created without disclosing your addresses and assets @@ -1651,7 +1661,7 @@ Using a Tangem Wallet already? Scan now Pick a wallet setup method - Ready to get a Tangem Wallet? + Want to purchase Tangem Wallet? Buy now Recover existing wallet via Google Drive backup Import from Google Drive @@ -1673,7 +1683,7 @@ Get now with 10% off Access 13,000+ cryptocurrencies. Buy, sell, swap, and stake with a single tap.\nLink up to three cards for a backup. Discover Tangem Wallet - This secret code protects your wallet and is used to log in and sign transactions. + This access code protects your wallet and is used to log in and sign transactions. Set/Change access code Change access code Stay notified on wallet incoming transactions and Tangem updates. @@ -1869,7 +1879,7 @@ URI already used WalletConnect Suspicious transaction - Already have Tangem? + Already have Tangem Wallet? Thousands of assets Best in class hardware wallet Fast delivery @@ -1878,7 +1888,7 @@ Simple to use Create a hardware wallet with Tangem. Slim as a bank card, secure as a bank vault. Create or import a software wallet - Create or import a software wallet on your phone + Create or import a software wallet on your phone. Start with Mobile Wallet Other method Use Tangem Hardware Wallet @@ -1899,7 +1909,7 @@ To avoid paying an increased commission the next time you top up your wallet, reduce the amount by %s XTZ When Yield Mode is active, all future top-ups to this address will be supplied to Aave. You can still manage your funds freely. Your %s is supplied to Aave - Supplying %1$s %2$s to Aave is pending + Supplying %1$s %2$s to Aave Approve Your token\'s approval has been revoked. Grant it again to resume the service\'s functionality. Approve needed @@ -1975,9 +1985,9 @@ Yield Mode Enabling Yield Mode Yield Mode - Yield mode on - Yield mode off - Yield mode top-up + Yield Mode on + Yield Mode off + Yield Mode top-up Automatic Add some %1$s %2$s to cover the network fee for transactions. Unable to cover %s fee diff --git a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/model/YieldSupplyModel.kt b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/model/YieldSupplyModel.kt index 5754705f8e..73c4100a23 100644 --- a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/model/YieldSupplyModel.kt +++ b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/model/YieldSupplyModel.kt @@ -110,7 +110,18 @@ internal class YieldSupplyModel @Inject constructor( bottomSheetNavigation.activate(Unit) } } else { - onStartEarningClick() + uiState + .filterIsInstance() + .take(1) + .onEach { state -> + appRouter.push( + YieldSupplyPromo( + userWalletId = params.userWalletId, + cryptoCurrency = params.cryptoCurrency, + apy = state.apy, + ), + ) + }.launchIn(modelScope) } } } From be2ba0603134b65ce909b85232155e0e0209eba8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 24 Nov 2025 20:11:17 +0500 Subject: [PATCH 3/7] Updated on 2026-08-14 --- .../local/token/DefaultStakingYieldsStore.kt | 26 ++++++++++--------- .../local/token/StakingYieldsStore.kt | 2 +- .../data/staking/DefaultStakingRepository.kt | 11 +++++++- .../tokendetails/model/TokenDetailsModel.kt | 11 ++++---- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/token/DefaultStakingYieldsStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/token/DefaultStakingYieldsStore.kt index cdac7d46bf..546383ebc6 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/token/DefaultStakingYieldsStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/token/DefaultStakingYieldsStore.kt @@ -23,20 +23,22 @@ internal class DefaultStakingYieldsStore( return withTimeoutOrNull(timeout = YIELDS_WAITING_TIMEOUT, block = { get().firstOrNull() }) } - override suspend fun store(items: List) { - dataStore.updateData { data -> - val updatedItems = data.toMutableList() - items.forEach { newItem -> - val existingItemIndex = data.indexOfFirst { it.id == newItem.id } - if (existingItemIndex != -1) { - // Update existing item - updatedItems[existingItemIndex] = newItem - } else { - // Add new item - updatedItems.add(newItem) + override suspend fun store(items: List, force: Boolean) { + if (force) { + dataStore.updateData { items } + } else { + dataStore.updateData { data -> + val updatedItems = data.toMutableList() + items.forEach { newItem -> + val existingItemIndex = data.indexOfFirst { it.id == newItem.id } + if (existingItemIndex != -1) { + updatedItems[existingItemIndex] = newItem + } else { + updatedItems.add(newItem) + } } + updatedItems } - updatedItems } } diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/token/StakingYieldsStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/token/StakingYieldsStore.kt index 29d2e37b01..b63e1c239c 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/token/StakingYieldsStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/token/StakingYieldsStore.kt @@ -11,5 +11,5 @@ interface StakingYieldsStore { suspend fun getSyncWithTimeout(): List? - suspend fun store(items: List) + suspend fun store(items: List, force: Boolean = false) } \ No newline at end of file diff --git a/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingRepository.kt b/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingRepository.kt index f6341c0957..bb9191de43 100644 --- a/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingRepository.kt +++ b/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingRepository.kt @@ -107,7 +107,9 @@ internal class DefaultStakingRepository( } } } - stakingYieldsStore.store(yields) + + val shouldRewriteCache = yieldsResponses.all { it is ApiResponse.Success } + stakingYieldsStore.store(yields, shouldRewriteCache) } } @@ -488,6 +490,13 @@ internal class DefaultStakingRepository( } private fun findPrefetchedYield(yields: List, currencyId: CryptoCurrency.RawID, symbol: String): Yield? { + if (!stakingFeatureToggles.isCardanoStakingEnabled && symbol.equals( + Blockchain.Cardano.currency, + ignoreCase = true, + ) + ) { + return null + } return yields.find { yield -> yield.tokens.any { it.coinGeckoId == currencyId.value && it.symbol == symbol } } diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt index 97f16addf1..ea55fc185b 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt @@ -1105,14 +1105,15 @@ internal class TokenDetailsModel @Inject constructor( private fun openStaking() { modelScope.launch { - val yield = getYieldUseCase.invoke( + getYieldUseCase.invoke( cryptoCurrencyId = cryptoCurrency.id, symbol = cryptoCurrency.symbol, - ).getOrElse { - error("Staking is unavailable for ${cryptoCurrency.name}") + ).onRight { yield -> + router.openStaking(userWalletId, cryptoCurrency, yield.id) + }.onLeft { + Timber.e("Staking is unavailable for ${cryptoCurrency.name}") + uiMessageSender.send(SnackbarMessage(resourceReference(R.string.staking_error_no_validators_title))) } - - router.openStaking(userWalletId, cryptoCurrency, yield.id) } } From 455455006d7ce504ee5edea34084f38a58226d99 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Nov 2025 00:18:51 +0700 Subject: [PATCH 4/7] Updated on 2026-08-14 --- core/res/src/main/res/values-ja/strings.xml | 1 + core/res/src/main/res/values-ru/strings.xml | 9 +- core/res/src/main/res/values/strings.xml | 9 +- .../ui/components/transactions/Transaction.kt | 2 + ...xHistoryItemToTransactionStateConverter.kt | 112 +++++++++++------- .../converter/TxHistoryItemStateConverter.kt | 83 ++++++++----- 6 files changed, 137 insertions(+), 79 deletions(-) diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index afc248155a..f753b2c756 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -90,6 +90,7 @@ %1$s ネットワークのトークンは、ファームウェアの制限により、このカードまたはリングではサポートされていません。 カードまたはリングのスキャンに問題がありますか? このカードはこのアプリでは使用できません。 + まずアクセスコードを設定してから、生体認証を有効にしてください %1$sを使用してウォレットのロックを解除し、取引の署名などの機密性の高い操作を承認してください。ハードウェアウォレットの場合は、署名にカードまたはリングが必要です。 デフォルト手数料 デフォルト手数料を有効にすると、取引手数料が自動的に設定され、送金時に手数料ページを表示する必要がなくなります。必要に応じて、いつでもこのページに戻ることができます。 diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 07f0ff53e5..4c5084da0c 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -1851,9 +1851,12 @@ Режим доходности Включение режима доходности Режим доходности - Доход включен - Доход выключен - Доход - пополнение + Режим доходности включен + %1$s отправлено в Aave + Режим доходности выключен + %1$s выведено из Aave + Перевод в Aave + %1$sотправлено в Aave Автоматически Внесите немного %1$s %2$s, чтобы покрыть комиссию сети за транзакции. Невозможно покрыть комиссию в %s diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 5f5daffaf8..5971b8288b 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -1985,9 +1985,12 @@ Yield Mode Enabling Yield Mode Yield Mode - Yield Mode on - Yield Mode off - Yield Mode top-up + Yield Mode enabled + %1$s supplied to Aave + Yield Mode disabled + %1$s withdrawn from Aave + Supply to Aave + %1$s supplied to Aave Automatic Add some %1$s %2$s to cover the network fee for transactions. Unable to cover %s fee diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt b/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt index 761db501ac..53ec6c23b8 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt @@ -240,6 +240,8 @@ private fun Subtitle(state: TransactionState, modifier: Modifier = Modifier) { textAlign = TextAlign.Start, color = TangemTheme.colors.text.tertiary, style = TangemTheme.typography.caption2, + maxLines = 1, + overflow = TextOverflow.Ellipsis, ) } is TransactionState.Loading -> { diff --git a/features/txhistory/impl/src/main/kotlin/com/tangem/features/txhistory/converter/TxHistoryItemToTransactionStateConverter.kt b/features/txhistory/impl/src/main/kotlin/com/tangem/features/txhistory/converter/TxHistoryItemToTransactionStateConverter.kt index c575a8070d..0fc75e0d67 100644 --- a/features/txhistory/impl/src/main/kotlin/com/tangem/features/txhistory/converter/TxHistoryItemToTransactionStateConverter.kt +++ b/features/txhistory/impl/src/main/kotlin/com/tangem/features/txhistory/converter/TxHistoryItemToTransactionStateConverter.kt @@ -27,7 +27,7 @@ internal class TxHistoryItemToTransactionStateConverter( txHash = value.txHash, amount = value.getAmount(), time = value.timestampInMillis.toTimeFormat(), - status = value.status.tiUiStatus(), + status = value.status.toUiStatus(), direction = value.extractDirection(), iconRes = value.extractIcon(), title = value.extractTitle(), @@ -41,21 +41,21 @@ internal class TxHistoryItemToTransactionStateConverter( R.drawable.ic_close_24 } else { when (type) { - is TxInfo.TransactionType.Approve -> R.drawable.ic_doc_24 - is TxInfo.TransactionType.Staking.Stake, - is TxInfo.TransactionType.Staking.Vote, - is TxInfo.TransactionType.Staking.Restake, + is TransactionType.Approve -> R.drawable.ic_doc_24 + is TransactionType.Staking.Stake, + is TransactionType.Staking.Vote, + is TransactionType.Staking.Restake, -> R.drawable.ic_transaction_history_staking_24 - is TxInfo.TransactionType.Staking.ClaimRewards, + is TransactionType.Staking.ClaimRewards, -> R.drawable.ic_transaction_history_claim_rewards_24 - is TxInfo.TransactionType.Staking.Unstake, - is TxInfo.TransactionType.Staking.Withdraw, + is TransactionType.Staking.Unstake, + is TransactionType.Staking.Withdraw, -> R.drawable.ic_transaction_history_unstaking_24 - is TxInfo.TransactionType.Operation, - is TxInfo.TransactionType.Swap, - is TxInfo.TransactionType.Transfer, - is TxInfo.TransactionType.YieldSupply, - is TxInfo.TransactionType.UnknownOperation, + is TransactionType.Operation, + is TransactionType.Swap, + is TransactionType.Transfer, + is TransactionType.YieldSupply, + is TransactionType.UnknownOperation, -> if (isOutgoing) R.drawable.ic_arrow_up_24 else R.drawable.ic_arrow_down_24 } } @@ -78,43 +78,67 @@ internal class TxHistoryItemToTransactionStateConverter( is TransactionType.UnknownOperation -> resourceReference(R.string.transaction_history_operation) } - private fun TxInfo.extractSubtitle(): TextReference = when (val interactionAddress = interactionAddressType) { - is TxInfo.InteractionAddressType.Contract -> resourceReference( - id = R.string.transaction_history_contract_address, - formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), - ) - is TxInfo.InteractionAddressType.Multiple -> resourceReference( - id = if (isOutgoing) { - R.string.transaction_history_transaction_to_address - } else { - R.string.transaction_history_transaction_from_address - }, - formatArgs = wrappedList(resourceReference(R.string.transaction_history_multiple_addresses)), - ) - is TxInfo.InteractionAddressType.User -> resourceReference( - id = if (isOutgoing) { - R.string.transaction_history_transaction_to_address - } else { - R.string.transaction_history_transaction_from_address - }, - formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), - ) - is TxInfo.InteractionAddressType.Validator -> resourceReference( - id = R.string.transaction_history_transaction_validator, - formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), - ) - null -> { - TextReference.EMPTY + private fun TxInfo.extractSubtitle(): TextReference { + return when (this.type) { + is TransactionType.YieldSupply.Enter -> { + val amount = amount.format { crypto(symbol = currency.symbol, decimals = currency.decimals) } + resourceReference(R.string.yield_module_transaction_enter_subtitle, wrappedList(amount)) + } + is TransactionType.YieldSupply.Topup, + -> { + val amount = amount.format { crypto(symbol = currency.symbol, decimals = currency.decimals) } + resourceReference(R.string.yield_module_transaction_topup_subtitle, wrappedList(amount)) + } + is TransactionType.YieldSupply.Exit -> { + val amount = amount.format { crypto(symbol = currency.symbol, decimals = currency.decimals) } + resourceReference(R.string.yield_module_transaction_exit_subtitle, wrappedList(amount)) + } + else -> extractSubtitleByAddressType() } } + private fun TxInfo.extractSubtitleByAddressType(): TextReference = + when (val interactionAddress = interactionAddressType) { + is TxInfo.InteractionAddressType.Contract -> resourceReference( + id = R.string.transaction_history_contract_address, + formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), + ) + is TxInfo.InteractionAddressType.Multiple -> resourceReference( + id = if (isOutgoing) { + R.string.transaction_history_transaction_to_address + } else { + R.string.transaction_history_transaction_from_address + }, + formatArgs = wrappedList(resourceReference(R.string.transaction_history_multiple_addresses)), + ) + is TxInfo.InteractionAddressType.User -> resourceReference( + id = if (isOutgoing) { + R.string.transaction_history_transaction_to_address + } else { + R.string.transaction_history_transaction_from_address + }, + formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), + ) + is TxInfo.InteractionAddressType.Validator -> resourceReference( + id = R.string.transaction_history_transaction_validator, + formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), + ) + null -> { + TextReference.EMPTY + } + } + private fun TxInfo.extractDirection() = if (isOutgoing) TransactionState.Content.Direction.OUTGOING else TransactionState.Content.Direction.INCOMING + @Suppress("ComplexCondition") private fun TxInfo.getAmount(): String { - if (type is TxInfo.TransactionType.Staking.Vote || - type == TxInfo.TransactionType.Staking.ClaimRewards || - type == TxInfo.TransactionType.Staking.Withdraw + if (type is TransactionType.Staking.Vote || + type == TransactionType.Staking.ClaimRewards || + type == TransactionType.Staking.Withdraw || + type == TransactionType.YieldSupply.Enter || + type == TransactionType.YieldSupply.Exit || + type == TransactionType.YieldSupply.Topup ) { return "" } @@ -126,7 +150,7 @@ internal class TxHistoryItemToTransactionStateConverter( return prefix + amount.format { crypto(symbol = currency.symbol, decimals = currency.decimals) } } - private fun TxInfo.TransactionStatus.tiUiStatus() = when (this) { + private fun TxInfo.TransactionStatus.toUiStatus() = when (this) { TxInfo.TransactionStatus.Confirmed -> TransactionState.Content.Status.Confirmed TxInfo.TransactionStatus.Failed -> TransactionState.Content.Status.Failed TxInfo.TransactionStatus.Unconfirmed -> TransactionState.Content.Status.Unconfirmed diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TxHistoryItemStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TxHistoryItemStateConverter.kt index be2bd415fe..db435626e8 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TxHistoryItemStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TxHistoryItemStateConverter.kt @@ -10,7 +10,8 @@ import com.tangem.core.ui.format.bigdecimal.crypto import com.tangem.core.ui.format.bigdecimal.format import com.tangem.core.ui.utils.toTimeFormat import com.tangem.domain.models.network.TxInfo -import com.tangem.domain.models.network.TxInfo.* +import com.tangem.domain.models.network.TxInfo.TransactionStatus +import com.tangem.domain.models.network.TxInfo.TransactionType import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents import com.tangem.feature.wallet.impl.R import com.tangem.utils.StringsSigns.MINUS @@ -85,36 +86,56 @@ internal class TxHistoryItemStateConverter( is TransactionType.UnknownOperation -> resourceReference(R.string.transaction_history_operation) } - private fun TxInfo.extractSubtitle(): TextReference = when (val interactionAddress = interactionAddressType) { - is InteractionAddressType.Contract -> resourceReference( - id = R.string.transaction_history_contract_address, - formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), - ) - is InteractionAddressType.Multiple -> resourceReference( - id = if (isOutgoing) { - R.string.transaction_history_transaction_to_address - } else { - R.string.transaction_history_transaction_from_address - }, - formatArgs = wrappedList(resourceReference(R.string.transaction_history_multiple_addresses)), - ) - is InteractionAddressType.User -> resourceReference( - id = if (isOutgoing) { - R.string.transaction_history_transaction_to_address - } else { - R.string.transaction_history_transaction_from_address - }, - formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), - ) - is InteractionAddressType.Validator -> resourceReference( - id = R.string.transaction_history_transaction_validator, - formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), - ) - null -> { - TextReference.EMPTY + private fun TxInfo.extractSubtitle(): TextReference { + return when (this.type) { + is TransactionType.YieldSupply.Enter -> { + val amount = amount.format { crypto(symbol = symbol, decimals = decimals) } + resourceReference(R.string.yield_module_transaction_enter_subtitle, wrappedList(amount)) + } + is TransactionType.YieldSupply.Topup, + -> { + val amount = amount.format { crypto(symbol = symbol, decimals = decimals) } + resourceReference(R.string.yield_module_transaction_topup_subtitle, wrappedList(amount)) + } + is TransactionType.YieldSupply.Exit -> { + val amount = amount.format { crypto(symbol = symbol, decimals = decimals) } + resourceReference(R.string.yield_module_transaction_exit_subtitle, wrappedList(amount)) + } + else -> extractSubtitleByAddressType() } } + private fun TxInfo.extractSubtitleByAddressType(): TextReference = + when (val interactionAddress = interactionAddressType) { + is TxInfo.InteractionAddressType.Contract -> resourceReference( + id = R.string.transaction_history_contract_address, + formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), + ) + is TxInfo.InteractionAddressType.Multiple -> resourceReference( + id = if (isOutgoing) { + R.string.transaction_history_transaction_to_address + } else { + R.string.transaction_history_transaction_from_address + }, + formatArgs = wrappedList(resourceReference(R.string.transaction_history_multiple_addresses)), + ) + is TxInfo.InteractionAddressType.User -> resourceReference( + id = if (isOutgoing) { + R.string.transaction_history_transaction_to_address + } else { + R.string.transaction_history_transaction_from_address + }, + formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), + ) + is TxInfo.InteractionAddressType.Validator -> resourceReference( + id = R.string.transaction_history_transaction_validator, + formatArgs = wrappedList(interactionAddress.address.toBriefAddressFormat()), + ) + null -> { + TextReference.EMPTY + } + } + private fun TxInfo.extractDirection() = if (isOutgoing) TransactionState.Content.Direction.OUTGOING else TransactionState.Content.Direction.INCOMING @@ -124,10 +145,14 @@ internal class TxHistoryItemStateConverter( TransactionStatus.Unconfirmed -> TransactionState.Content.Status.Unconfirmed } + @Suppress("ComplexCondition") private fun TxInfo.getAmount(): String { if (type is TransactionType.Staking.Vote || type == TransactionType.Staking.ClaimRewards || - type == TransactionType.Staking.Withdraw + type == TransactionType.Staking.Withdraw || + type == TransactionType.YieldSupply.Enter || + type == TransactionType.YieldSupply.Exit || + type == TransactionType.YieldSupply.Topup ) { return "" } From 63910410c4615d5c7c790990da6183250c3dc555 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Nov 2025 16:22:21 +0700 Subject: [PATCH 5/7] Updated on 2026-08-14 --- .../tap/di/domain/StakingDomainModule.kt | 8 +++- .../data/staking/DefaultStakingRepository.kt | 41 ++++++++++++------- .../staking/usecase/StakingApyFlowUseCase.kt | 13 +++++- 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/di/domain/StakingDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/StakingDomainModule.kt index 92e80ff6db..6fae7d3ea2 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/StakingDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/StakingDomainModule.kt @@ -6,6 +6,7 @@ import com.tangem.domain.staking.repositories.StakingErrorResolver import com.tangem.domain.staking.repositories.StakingRepository import com.tangem.domain.staking.repositories.StakingTransactionHashRepository import com.tangem.domain.staking.single.SingleYieldBalanceFetcher +import com.tangem.domain.staking.toggles.StakingFeatureToggles import com.tangem.domain.staking.usecase.StakingApyFlowUseCase import com.tangem.domain.walletmanager.WalletManagersFacade import dagger.Module @@ -220,7 +221,10 @@ internal object StakingDomainModule { @Provides @Singleton - fun provideStakingApyFlowUseCase(stakingRepository: StakingRepository): StakingApyFlowUseCase { - return StakingApyFlowUseCase(stakingRepository) + fun provideStakingApyFlowUseCase( + stakingRepository: StakingRepository, + stakingFeatureToggles: StakingFeatureToggles, + ): StakingApyFlowUseCase { + return StakingApyFlowUseCase(stakingRepository, stakingFeatureToggles) } } \ No newline at end of file diff --git a/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingRepository.kt b/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingRepository.kt index bb9191de43..e055e89e36 100644 --- a/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingRepository.kt +++ b/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingRepository.kt @@ -35,6 +35,7 @@ import com.tangem.domain.card.common.TapWorkarounds.isWallet2 import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.network.Network import com.tangem.domain.models.staking.NetworkType +import com.tangem.domain.models.staking.StakingID import com.tangem.domain.models.staking.YieldBalance import com.tangem.domain.models.staking.action.StakingActionType import com.tangem.domain.models.wallet.UserWallet @@ -174,9 +175,11 @@ internal class DefaultStakingRepository( } private fun getAvailableIntegrationsIds(): List { - return StakingIntegrationID.entries.filterNot { - it.blockchain == Blockchain.Cardano && !stakingFeatureToggles.isCardanoStakingEnabled - } + return StakingIntegrationID.entries + // load all integrations for now and filter in use cases if needed + // .filterNot { + // it.blockchain == Blockchain.Cardano && !stakingFeatureToggles.isCardanoStakingEnabled + // } } private fun NetworkTypeDTO.extractJsonName(): String { @@ -208,7 +211,7 @@ internal class DefaultStakingRepository( cryptoCurrency: CryptoCurrency, ): Flow { return channelFlow { - if (!checkFeatureToggleEnabled(cryptoCurrency.network.id)) { + if (!checkFeatureToggleEnabled(userWalletId, cryptoCurrency)) { send(StakingAvailability.Unavailable) return@channelFlow } @@ -257,7 +260,7 @@ internal class DefaultStakingRepository( userWalletId: UserWalletId, cryptoCurrency: CryptoCurrency, ): StakingAvailability { - if (!checkFeatureToggleEnabled(cryptoCurrency.network.id)) { + if (!checkFeatureToggleEnabled(userWalletId, cryptoCurrency)) { return StakingAvailability.Unavailable } @@ -294,10 +297,25 @@ internal class DefaultStakingRepository( } } - private fun checkFeatureToggleEnabled(networkId: Network.ID): Boolean { - return when (networkId.toBlockchain()) { + private suspend fun checkFeatureToggleEnabled(userWalletId: UserWalletId, cryptoCurrency: CryptoCurrency): Boolean { + return when (cryptoCurrency.network.id.toBlockchain()) { Blockchain.TON -> stakingFeatureToggles.isTonStakingEnabled - Blockchain.Cardano -> stakingFeatureToggles.isCardanoStakingEnabled + Blockchain.Cardano -> { + val address = walletManagersFacade.getDefaultAddress(userWalletId, cryptoCurrency.network).orEmpty() + val balance = stakingBalanceStoreV2.getSyncOrNull( + userWalletId = userWalletId, + stakingId = StakingID( + integrationId = StakingIntegrationID.create(currencyId = cryptoCurrency.id)?.value + ?: return false, + address = address, + ), + ) + if (balance != null && balance is YieldBalance.Data && balance.balance.items.isNotEmpty()) { + return true + } else { + stakingFeatureToggles.isCardanoStakingEnabled + } + } else -> true } } @@ -490,13 +508,6 @@ internal class DefaultStakingRepository( } private fun findPrefetchedYield(yields: List, currencyId: CryptoCurrency.RawID, symbol: String): Yield? { - if (!stakingFeatureToggles.isCardanoStakingEnabled && symbol.equals( - Blockchain.Cardano.currency, - ignoreCase = true, - ) - ) { - return null - } return yields.find { yield -> yield.tokens.any { it.coinGeckoId == currencyId.value && it.symbol == symbol } } diff --git a/domain/staking/src/main/java/com/tangem/domain/staking/usecase/StakingApyFlowUseCase.kt b/domain/staking/src/main/java/com/tangem/domain/staking/usecase/StakingApyFlowUseCase.kt index 3b50f3a63c..f2ee167562 100644 --- a/domain/staking/src/main/java/com/tangem/domain/staking/usecase/StakingApyFlowUseCase.kt +++ b/domain/staking/src/main/java/com/tangem/domain/staking/usecase/StakingApyFlowUseCase.kt @@ -1,7 +1,10 @@ package com.tangem.domain.staking.usecase +import com.tangem.blockchain.common.Blockchain +import com.tangem.blockchainsdk.utils.toCoinId import com.tangem.domain.staking.model.stakekit.Yield import com.tangem.domain.staking.repositories.StakingRepository +import com.tangem.domain.staking.toggles.StakingFeatureToggles import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map @@ -12,12 +15,18 @@ import kotlinx.coroutines.flow.map * - key: currency staking key (network.backendId + "_" + symbol) * - value: validators */ -class StakingApyFlowUseCase(private val stakingRepository: StakingRepository) { +class StakingApyFlowUseCase( + private val stakingRepository: StakingRepository, + private val stakingFeatureToggles: StakingFeatureToggles, +) { operator fun invoke(): Flow>> { return stakingRepository.getEnabledYields() .map { yields -> - yields.associate { yield -> + yields.filterNot { yield -> + val isCardanoYield = yield.token.coinGeckoId == Blockchain.Cardano.toCoinId() + isCardanoYield && !stakingFeatureToggles.isCardanoStakingEnabled + }.associate { yield -> val key = "${yield.token.coinGeckoId}_${yield.token.symbol}" val apy = yield.validators key to apy From a8864541bc9f7a38f3aedae077886c06da9040b1 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Nov 2025 12:48:59 +0300 Subject: [PATCH 6/7] Updated on 2026-08-14 --- core/res/src/main/res/values-de/strings.xml | 21 +++++++++++++++---- core/res/src/main/res/values-es/strings.xml | 5 ++++- core/res/src/main/res/values-fr/strings.xml | 5 ++++- core/res/src/main/res/values-ja/strings.xml | 9 +++++--- core/res/src/main/res/values-ru/strings.xml | 4 ++-- .../src/main/res/values-uk-rUA/strings.xml | 6 ++++++ 6 files changed, 39 insertions(+), 11 deletions(-) diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 578eee799f..79198ec916 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -54,6 +54,8 @@ Bist Du sicher, dass Du das neue Konto verwerfen willst? Bist Du sicher, dass Du die Bearbeitungen verwerfen willst? Nicht gespeicherte Änderungen + Einige benutzerdefinierte Token wurden von „%1$s\" Zu \"%2$sda ihre Herleitung zu diesem Konto gehört. + Einige benutzerdefinierte Token wurden verschoben. Du kannst Deinen Token nicht finden? Gehe zum Bereich „Markt“ auf der Hauptseite und fügen diesen zum kaufen im Portfolio hinzu. Du kannst Deinen Token nicht finden? Gehe zum Bereich „Markt“ auf der Hauptseite und fügen diesen zum verkaufen im Portfolio hinzu. Verkaufen @@ -88,6 +90,7 @@ Tokens im %1$s -Netzwerk werden von dieser Karte oder Ring aufgrund einer Firmware-Einschränkung nicht unterstützt. Hast du Probleme beim Scannen deiner Karte oder Ring? Diese Karte oder Ring ist für die Zusammenarbeit mit Tangem nicht geeignet + Lege zunächst einen Zugangscode fest, um die Biometrie zu aktivieren. Verwende die %1$s um Deine Wallet zu entsperren und sensible Aktionen wie das Signieren von Transaktionen zu bestätigen. Bei Hardware-Wallets ist zum Signieren weiterhin eine Karte oder ein Ring erforderlich. Standardgebühr Aktiviere die Option Standardgebühr, um die Transaktionsgebühren automatisch festzulegen und die Gebührenseite beim Senden von Geldern zu überspringen. Du kannst bei Bedarf jederzeit zu dieser Seite zurückkehren. @@ -299,6 +302,7 @@ %1$s Netzwerke Neue Adresse + Nachrichten Weiter NFT Nein @@ -364,7 +368,7 @@ Transaktion fehlgeschlagen Transaktionsstatus Transaktionen - Überweiseung + Überweisung Die Daten konnten nicht geladen werden… Ich verstehe Es ist ein Fehler aufgetreten. Bitte versuche es erneut. @@ -517,6 +521,8 @@ ID: %s Transaktions-ID kopiert Tauschen jeden Vermögenswert in Deinem Portfolio gegen diesen Token + Markt & Nachrichten + Aktuelle Trends Die folgenden Angaben sind freiwillig. Du kannst diese löschen, wenn du sie nicht weitergeben möchtest. Teile uns mit, welche Funktionen du vermisst, und wir werden versuchen, dir zu helfen. Bitte sag uns, welche Karte oder Ring du hast @@ -768,6 +774,8 @@ Volumen Rufe dies auf oder tippe auf die Suchleiste, um Token direkt vom Markt hinzuzufügen Token hinzufügen + Alle Neuigkeiten + Auf dem Laufenden bleiben NFC ist auf deinem Gerät nicht verfügbar Über NFT NFT-Vermögenswert @@ -1370,6 +1378,7 @@ Abgeschlossen Abgelehnt Ausstehend + Bedingungen und Einschränkungen Die Bank hat diese Transaktionsanfrage abgelehnt. Diese Gebühr dient zur Deckung der Kosten für die Abwicklung Deiner Überweisung. Nutze Dein Geld weiterhin. Du kannst es jederzeit einfrieren. @@ -1403,6 +1412,7 @@ Tausche beliebige Vermögenswerte in Deinem Portfolio gegen eine Karte. Kartendetails Karte entsperren + Es dauert in der Regel bis zu 15 Minuten. Tangem Pay Status anzeigen KYC für Tangem Pay in Arbeit @@ -1951,9 +1961,12 @@ Ertragsmodus Bearbeitung Deiner Einzahlung Ertragsmodus - Ertragsmodus ein - Ertragsmodus aus - Aufstockung des Ertragsmodus + Ertragsmodus aktivieren + %1$s geliefert an Aave + Ertragsmodus deaktiviert + %1$s aus Aave zurücküberwiesen + Lieferung an Aave + %1$s geliefert an Aave Automatisch Einzahlung von %1$s %2$s zur Deckung der Netzwerkgebühr für Transaktionen Die Gebühr %s kann nicht gedeckt werden diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index 8e952b10f6..a944d94513 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -1568,8 +1568,11 @@ Procesando su depósito Modo Rendimiento Modo Rendimiento activado + %1$s suministrado a Aave Modo Rendimiento desactivado - Recarga del modo Rendimiento + %1$s retirado de Aave + Suministrar a Aave + %1$s suministrado a Aave Automático Deposite algo de %1$s %2$s para cubrir la tarifa de red para las transacciones No se puede cubrir la tarifa %s diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index b7f54cdaba..6b9fd987ef 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -1547,8 +1547,11 @@ Traitement de votre dépôt Mode Rendement Mode rendement activé + %1$s fourni à Aave Mode rendement désactivé - Recharger le mode Rendement + %1$s retiré d\'Aave + Approvisionnement à Aave + %1$s fourni à Aave Automatique Déposez %1$s %2$s pour couvrir les frais de réseau liés aux transactions. Impossible de couvrir les frais %s diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index f753b2c756..a6478e3318 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -1911,9 +1911,12 @@ 利息モード 利息モードの有効化 利息モード - 利息モード オン - 利息モード オフ - 利息モードへの追加入金 + 利息モードが有効になりました + %1$sがAaveに供給されました + 利息モードが無効になりました + %1$sがAaveから引き出されました + Aaveへの供給 + %1$sがAaveに供給されました 自動 取引のネットワーク手数料をカバーするために、 %1$s %2$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 4c5084da0c..3d1a09fd10 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -1855,8 +1855,8 @@ %1$s отправлено в Aave Режим доходности выключен %1$s выведено из Aave - Перевод в Aave - %1$sотправлено в Aave + Перевод средств в Aave + %1$s отправлено в Aave Автоматически Внесите немного %1$s %2$s, чтобы покрыть комиссию сети за транзакции. Невозможно покрыть комиссию в %s diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml index 8fc009f93b..3bb44e8897 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -1520,6 +1520,12 @@ Режим дохідності Відправка ваших коштів Режим прибутковості + Режим прибутковості увімкнено + %1$s постачено в Aave + Режим прибутковості вимкнено + %1$s виведено з Aave + Постачити в Aave + %1$s постачено в Aave Автоматично Внесіть трохи %1$s %2$s, щоб покрити комісію мережі за транзакції. Неможливо покрити комісію в %s From 04f983f4b4ca93855a2bdacd7be1d7c5d40a74ba Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Nov 2025 09:49:27 +0000 Subject: [PATCH 7/7] Updated on 2026-08-14 --- gradle/tangem_dependencies.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 98c8350883..6b951ea826 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -5,13 +5,13 @@ # https://github.com/tangem/tangem-sdk-android/ # https://github.com/tangem/vico -tangemBlockchainSdk = "releases-5.30-1307" +tangemBlockchainSdk = "develop-1309" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "releases-5.30-567" +tangemCardSdk = "develop-564" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem12" #tangemVico = "0.0.1" # Keep it! - used for local builds ^ -tangemHotSdk = "develop-528" +tangemHotSdk = "develop-530" #tangemHotSdk = "0.0.1" # Keep it! - used for local builds ^