diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index b7cc837f73..a9bc17a583 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -984,7 +984,6 @@ Überprüfe deine Netzwerkverbindung Informationen zur Netzwerkgebühr nicht erreichbar Sie senden - Von Von %s Grenzwert Gasgebühr Dies ist die maximale Gasgebühr, die für den Abschluss einer Transaktion oder eines Vertrags ausgegeben wird. Ein Gaslimit verhindert unerwartete oder unbegrenzte Gebühren bei der Ausführung einer Transaktion. @@ -1141,7 +1140,7 @@ Um mit dem Staking bei TON zu beginnen, führe zunächst eine ausgehende Transaktion in beliebiger Höhe durch – dadurch wird Deine Wallet aktiviert. Für den Abschluss der Transaktion können zusätzlich zur Netzwerkgebühr bis zu 0,2 TON erforderlich sein. Nicht genutzte Beträge werden zurückerstattet. Für diesen Vorgang sind zusätzlich zur Netzwerkgebühr 0,2 TON erforderlich. Bitte lade Dein Guthaben auf. - 0,2 Ton reserviert + TON-Reserve erforderlich Durch diese Aktion werden andere Positionen geschlossen oder gemäß den Netzwerkregeln in den Auszahlungsstatus versetzt. Positionsstatus Entsperre dein Geld, um es aus dem Staking-Prozess abzuheben. Das Freischalten nimmt %s. diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index 16cac3a4f8..31e91c7d59 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -196,7 +196,7 @@ Sincronizar direcciones Ir al proveedor Ir al token - Entiendo + Entendido Ocultar hora Importe @@ -880,8 +880,7 @@ Memo Compruebe su conexión de red Información de tarifa de red no accesible - Envía - Desde + Usted envía De %s Límite de gas Este es el máximo de gas que se gastará para completar una transacción o contrato. Un límite de gas evita cargos inesperados o ilimitados al ejecutar una transacción. @@ -895,7 +894,7 @@ Cobertura de tarifa de red Nonce Número único para cada transacción. Utilícelo para reenviar o cancelar una transacción pendiente. - Introduzca nonce.. + Introduzca nonce... Fondos insuficientes para la transferencia, ya que el total de la tarifa y el importe de la transferencia supera el saldo existente El total supera el saldo Se requiere un saldo de al menos %s para mantener su cuenta en blockchain para evitar riesgos de seguridad. Este monto permanecerá en su saldo y no podrá retirarse. @@ -950,6 +949,8 @@ Cantidad no válida La tarifa excede el saldo La cantidad total excede el saldo + ¿Está seguro que desea cambiar el token a recibir? Esto restablecerá los datos introducidos previamente. + Cambio de token Intercambiar y enviar ¿Continuar con la conversión? Esto borrará sus datos anteriores. Confirmar Conversión @@ -961,6 +962,7 @@ Cantidad a recibir El destinatario recibe %s ¿Seguro que desea cancelar la conversión? Se borrarán sus datos anteriores. + Eliminar conversión Enviar con swap Transacción enviada Escanee la tarjeta/anillo que quiere configurar @@ -968,10 +970,10 @@ Esto eliminará la wallet de la aplicación. La wallet en sí puede\nañadirse de nuevo. Nombre Haga que su token trabaje para Ud. - El monto del staking debe ser al menos %s - El monto del staking se redondeará a %1$s TRX debido a las reglas de la red. + La cantidad del staking debe ser al menos %s + La cantidad de staking se redondeará a %1$s TRX debido a las reglas de la red. El monto de cancelación del staking se redondeará a %1$s TRX debido a las reglas de la red. - Unstaking de la reclamación + Reclamar lo que no está en staking Tarifa de staking de la cuenta Una cuenta de staking es una cuenta especial donde se almacenan los tokens SOL de staking. Se crea cuando delegas sus tokens a un validador para participar en la validación de transacciones y ganar recompensas. Se cobra una pequeña tarifa por crear la cuenta de staking, que se devuelve una vez que se completa el staking. Porcentaje de rendimiento anual @@ -1007,7 +1009,7 @@ No hay validadores activos disponibles para hacer staking en este momento. Por favor, inténtalo de nuevo más tarde. Al hacer staking en la red Cardano, se utiliza todo su saldo. Se reservarán 2 ADA adicionales y se devolverán después del staking. Su ADA permanece desbloqueado mientras hace staking. Detalles del staking de ADA - Recomp. won se le enviará y estará disponible para su uso inmediato + Las recompensas obtenidas se enviarán a su billetera y estarán disponibles para su uso inmediato Haga staking de forma segura y comience a ganar recompensas Tangem permite a los usuarios hacer staking de sus criptomonedas Tangem permite a los usuarios hacer staking de sus criptomonedas @@ -1034,7 +1036,7 @@ Para empezar a hacer staking en TON, realice primero una transacción de salida de cualquier importe - esto activará su billetera. Es posible que se requieran hasta 0.2 TON además de la tarifa de red para completar la transacción. Cualquier cantidad no utilizada será reembolsada. Se requieren 0.2 TON para realizar esta operación, además de la tarifa de red. Por favor, recargue su saldo. - 0.2 Ton Reservado + Se requiere reserva de TON Esta acción cerrará otras posiciones o las cambiará al estado de retiro, de acuerdo con las reglas de la red. Estado de las posiciones Desbloquee su dinero para retirarlo del proceso de staking. El desbloqueo demora %s minuto. @@ -1044,9 +1046,9 @@ Hacer staking en la red Tron con un nuevo validador transferirá automáticamente todos los fondos de staking a este validador. Preparando Listo para retirar - Reunir - Haga el staking de nuevo - Restaking de las recompensas + Volver a unir + Hacer staking de nuevo + Hacer restaking de las recompensas Revocar Revotar Auto @@ -1080,7 +1082,7 @@ La cantidad para el unstaking debe ser al menos %s El monto excede el saldo apostado Sin staking - Unstaking + Deshacer el staking Detenando el staking de activos %s Validador Validadores @@ -1195,7 +1197,7 @@ Tangem Twin Esta acción es irreversible. No tendrá acceso la billetera antigua. Toque la tarjeta gemela con el número %s y no la retira hasta el final de la operación - Por favor, inténtelo de nuevo más tarde. Si el problema persiste, póngase en contacto con el servicio de asistencia. + Por favor, inténtelo de nuevo más tarde. Si el problema persiste, póngase en contacto con el servicio de soporte. ¡Algo salió mal! Hemos encontrado un error. Código de error: %s. Póngase en contacto con nuestro servicio de soporte. Use %s o escanee una tarjeta/anillo para tener acceso a su billetera @@ -1334,10 +1336,10 @@ Su opinión nos motiva a hacer Tangem Wallet aún mejor ¿Disfrutando de Tangem? Deba asociar su token antes de recibir tokens - Debe abrir una trustline para su token antes de recibirlo + Debe abrir una trustline (línea de confianza) para su token antes de recibirlo Se requiere tarifa de alquiler de red Acción requerida - ¿Se puso en contacto con el servicio de soporte a través de la app en los 7 días posteriores a la creación de la billetera? Si lo hiciste o no estás seguro, pulse en \"Sí\" y complete las instrucciones. + ¿Se puso en contacto con el servicio de soporte a través de la app en los 7 días posteriores a la creación de la billetera? Si lo hizo o no está seguro, pulse en \"Sí\" y complete las instrucciones. ¡Gracias! ¡Todo listo! No se requieren más acciones. Ahora será redirigido al sitio web oficial de Tangem. Por favor, lea y siga las instrucciones allí indicadas. ¿Alguna vez contactó al equipo de soporte de Tangem directamente desde esta aplicación? @@ -1355,11 +1357,11 @@ Solo para fines de prueba El saldo podría estar desactualizado. Actualice la página. No hay suficiente %1$s. Recargue su cuenta %2$s para asociar este token - Habilitar Trustline + Habilitar Trustline (línea de confianza) Una trustline (línea de confianza) debe estar habilitada para recibir este token. La red requiere un %1$s %2$s reserva. Se requiere trustline (línea de confianza) - La red requerida %s no está añadida a su portafolio. Añádala primero y luego continúe con la conexión. - Agregue red al portafolio + La red requerida %s no está agregada a su portafolio. Agréguela primero y luego continúe con la conexión. + Agregar red al portafolio Dominio malicioso Dominio desconocido Conectarse de todas formas diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index 0d2ee7b831..2b20ddae59 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -854,7 +854,6 @@ Vérifiez votre connexion réseau Informations sur les frais de réseau inaccessibles Vous envoyez - De De %s Limite de gaz Il s\'agit du montant maximal de gaz qui sera dépensé pour effectuer une transaction ou un contrat. Une limite de gaz empêche des frais imprévus ou illimités lors de l\'exécution d\'une transaction. @@ -1011,7 +1010,7 @@ Pour commencer à staker TON, effectuez d\'abord une transaction sortante de n\'importe quel montant — cela activera votre portefeuille. Jusqu\'à 0,2 TON peuvent être requis en plus des frais de réseau pour terminer la transaction. Tout montant non utilisé sera remboursé. 0,2 TON requis pour effectuer cette opération, en plus des frais de réseau. Veuillez recharger votre solde. - 0,2 Ton réservés + Réserve de TON requise Cette action fermera d\'autres positions ou les fera passer au statut de retrait, conformément aux règles du réseau. Statut des positions Débloquez votre argent pour le retirer du processus de staking. Le déverrouillage prend %s. diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index ff93a67733..5205787420 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -35,6 +35,7 @@ アカウントを追加 アカウントを編集 %1$s ( %2$s内) + メインアカウント アカウントが回復しました アカウントを長押しして並べ替える 編集を続ける @@ -179,6 +180,7 @@ 許可する 金額 アナリティクス + そして 適用する 承認 承認 @@ -242,6 +244,7 @@ 終了 無料 アドレスを同期する + はじめる プロバイダーへ移動 トークンへ移動 わかりました @@ -250,6 +253,7 @@ インポート 進行中 後で + もっと詳しく 残り%1$s レガシービットコイン ロックされています @@ -387,6 +391,7 @@ デフォルトアドレス レガシーアドレス 資金を受け取る + %sアドレス 他のネットワークで資産を送金すると、永久に失われます。 %sネットワーク 下記のみを使用して資金を送金する @@ -410,7 +415,7 @@ %sによる交換 返金を受けるには、プロバイダーのウェブサイトにアクセスしてください。 プロバイダーによる操作が失敗しました。 - スワップに予想以上の時間がかかっています。プロバイダーサポートにお問い合わせください。 + スワップは通常より時間がかかっておりますが、資金は完全に安全であり、送金されます。ご不明な点がございましたら、プロバイダーのサポートチームまでお問い合わせください。 長い取引時間 OKXまたはブリッジのルールにより、取引金額は%1$sでウォレットに返金されました。%2$s 金額は %1$s(%2$sネットワーク)で返金されました @@ -495,6 +500,7 @@ 新しいウォレットを作成する Tangemを注文 Tangemをスキャン + 「Tangem」に生体認証の使用を許可しますか?\n本人確認とアプリの起動のために使用されます。 %sへ %sネットワーク アクセスコードの作成プロセスを終了してもよろしいですか? @@ -786,6 +792,7 @@ 追加しようとしているカードには、すでに別のウォレットが作成されています。このウォレットに資金がある場合は、それを引き出してからこのカードをリセットし、バックアップとして追加してください。 ウォレットを保存する バックアップの作成 + 生体認証を使用する シードフレーズについてもっと読む これらの %d 単語を以下の順番通りに書き留め、安全かつ秘密の場所に保管してください。 @@ -837,6 +844,7 @@ アクセスコードの復元 同一のカード アクセスコード + すべてのオファー %sで利用可能 プロバイダーが取引を促進します 国で検索 @@ -844,13 +852,22 @@ その他の通貨 人気の法定通貨 通貨で検索 + 即時 オンランプ機能を使用することにより、プロバイダの%1$sおよび%2$sに同意するものとします 買付金額は%s以下にしてください 買付金額は少なくとも%sである必要があります この通貨で利用可能なプロバイダーはありません + 最速 支払う + 支払方法 最大 %s まで使用可能 %s 以上で利用可能 + + %dプロバイダー + + プロバイダー + 最近使用した + 推奨 サードパーティプロバイダー%sで取引を完了できます。 %sにリダイレクトしています... この国では当社のサービスはご利用いただけません @@ -859,7 +876,13 @@ 正確なお支払い方法とサービスを確保するため、正しい国を選択してください。 設定 この画面を閉じて、トークンの詳細画面で取引状況を確認できます。 + + 最大%d日 + + %s分 + 以下が手に入ります。 この画面を閉じて、トークンの詳細画面で取引状況を確認できます。 + 最大 経由 支払い グループ @@ -970,7 +993,6 @@ ネットワーク接続を確認してください ネットワーク手数料についての情報にアクセスできません 送信する - より %sから ガス上限 これは、取引または契約を完了するために使用されるガスの最大額です。ガス上限を設定することで、取引実行時に予期せぬ請求や無制限の請求を防ぐことができます。 @@ -1014,7 +1036,7 @@ 有効なアドレスではありません トークンの損失を避けるために、受信ウォレットアドレスが** %sネットワーク**上にあることを確認してください %s に送信 - %sネットワークアドレスを確認してください。エラーが発生すると転送が失われる可能性があります。 + %sネットワーク上のアドレスに送信していることを確認してください。エラーが発生すると資金が失われる可能性があります。 送金先 メモ/宛先タグは、同じネットワーク上の同じ受信者に送信された取引を区別するためのユニークなIDです。注意:メモを省略すると、資金の行き違いにつながる可能性があります。 メモ / 宛先タグは、暗号資産ネットワーク内の共有受信者への取引を分離するコードです。 @@ -1025,7 +1047,7 @@ 送金中... 変更するには任意の箇所をタップしてください %sを送金する - **%1$s** を送金する (ネットワーク手数料%2$sを含む) + %2$sのネットワーク料を含む**%1$s**を送信しています。 **%1$s** と %2$s を送金しています。 ** %1$s ** を送信しています ネットワーク手数料は%1$sエネルギーを使用してカバーされます @@ -1127,7 +1149,7 @@ TONでステーキングを開始するには、まず任意の金額の送金を行ってください。これにより、ウォレットがアクティブになります。 取引を完了するには、ネットワーク手数料に加えて最大0.2TONが必要になる場合があります。未使用分は返金されます。 この操作を続行するには、ネットワーク手数料に加えて0.2 TONが必要です。残高を補充してください。 - 0.2 TON保留済み + TONの準備金が必要です このアクションは、ネットワークのルールに従って、他のポジションをクローズするか、引き出しステータスに切り替えます。 ポジション状況 資金をステーキングから引き出すには、ロックを解除してください。ロック解除には%sかかります。 @@ -1601,4 +1623,64 @@ いいえ、すべて送信します %s XTZを減らす 次回ウォレットにチャージするときに手数料の増加を避けるには、金額を%s XTZ減らしてください。 + 承認する + 前回の承認に問題があったため、新しい承認が必要です。手続き方法を選択してください。 + 承認が必要 + 手数料が差し引かれ、あなたの資産は再び貸し出されます。 + 引き続き収益を得るには承認が必要です。 + 承認を確定する + 資産残高 + あなたの%sはAaveに預けられています + %s%を獲得 + 利用可能 + 現在のAPY + 私の資金 + あなたの%1$sはAaveに預けられ、利息が付きます。あなたは%2$sトークンを保有しており、これは残高を表し、時間の経過とともに増加します。入金すると、資金はAaveに預け入れられ、取引手数料を差し引いた利息が付きます。 + アクティブ + 利回りを得る + 総収益 + Aaveへの送金 + 資産はプロトコル内に保管されています + Aaveの詳細を見る + あなたの%sはAaveに預けられています + これは%sの現在の供給手数料です。実際のコストは受取画面に表示されます。 + 現在の手数料 + 今後の%sの入金はすべて、取引手数料が差し引かれて自動的にAaveに供給されます。 + ネットワーク手数料が上限手数料を超えた場合、手数料が下がるまで取引は成立しません。この制限は後で変更できます。 + 最大手数料 + 手数料ポリシー + ここに説明文を入力してください。1〜3行が理想的です。 + トークン承認が必要 + アカウントへの入金はすべて自動的にAaveに貸し出されます。 + 残高は自動的に計算されます + いつでも、即座に資金を送信、交換、売却できます。 + すぐに現金化 + 使い方 + Aaveは世界中で何百万人もの人々に信頼されています。総貸付額は104億ドルです。 + 分散型・自己管理型 + サービスを使用することにより、プロバイダーに同意したものとみなされます + 年間%s%の収益 + Aave • 変動金利 + Aave + 平均%s + 昨年のリターン + 現在の金利は常に変動し、リアルタイムの需要と供給に基づいて、AAVEオンチェーンスマートコントラクトによって自動的に計算されます。 + 提供 + 金利は変動します + 入金すると、資金は自動的にAaveに送金され、利息が付き始めます。取引手数料として%s相当の少額の手数料が差し引かれます。 + 利息の獲得を開始 + %sはAaveに供給され、すぐに利用可能になります + 手数料ポリシーを見る + 次回の入金は自動的にAaveに供給されます。 + 収益を停止する + オフにすると、Aaveから資金が引き出され、ウォレットの%sに戻され、報酬の獲得が停止されます。 + 出金金額からネットワーク手数料が差し引かれます。 + APY + あなたの資産を眠らせない — 残高を運用して利息を得ましょう。 + 保有資産から報酬を得る + 入金の処理中 + 年間%1$s%%の収益 + 自動 + 取引のネットワーク手数料をカバーするために、 %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 34e2073bb1..58186b2510 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -142,6 +142,7 @@ Подтвердить Подключение Продолжить + Конвертировать Копировать Скопировать адрес Создать @@ -236,6 +237,7 @@ Отправить Успешно Поддержка + Поддерживаемые сети Обменять условия участия Условиями использования @@ -743,6 +745,7 @@ Восстановление кода доступа Идентичные карты Код доступа + Все предложения Доступно с %s Tangem предоставляет доступ к покупке через сторонних провайдеров в соответствии с их правилами Поиск по стране @@ -750,13 +753,25 @@ Другие валюты Популярные фиаты Поиск по валюте + Моментально Пользуясь сервисом покупки, вы соглашаетесь с %1$s и %2$s Сумма покупки не может быть больше, чем %s Сумма покупки должна составлять минимум %s Нет доступных провайдеров для выбранной валюты + Самый быстрый Оплата с + Платежный метод Доступно до %s Доступно от %s + + %d провайдер + %d провайдера + %d провайдеров + %d провайдеров + + Провайдеры + Ранее используемый + Рекомендуемый Вы сможете продолжить транзакцию через сервис стороннего провайдера, %s Переход к %s... Наши сервисы недоступны в данной стране @@ -765,8 +780,18 @@ Пожалуйста, укажите правильную страну, чтобы обеспечить точность доступных способов оплаты и услуг. Настройки You can close this screen and check the transaction status on the token details screen. + + до %d дня + до %d дней + до %d дней + до %d дней + + %s мин + Вы получите Вы можете закрыть этот экран и проверить статус транзакции на экране информации о токене. + До Через + Вы заплатите Группы По балансу Упорядочить токены @@ -854,6 +879,7 @@ Вы указали комиссию ниже рекомендуемой, это может привести к задержке исполнения вашей транзакции. Продолжить? Причина: %1$s\nКод: %2$s Транзакция не выполнена + Конвертировать в другой токен Сумма Вы можете установить комиссию за транзакцию, изменив значение в поле Satoshi per vByte. Комиссия, которая будет взята за вашу транзакцию. Вы можете выставить своё собственное значение. @@ -879,7 +905,7 @@ Проверьте своё интернет соединение Информация о комиссии сети недоступна Вы отправляете - Из + Из %s Лимит газа Это максимальное количество газа, которое будет потрачено на выполнение транзакции или контракта. Лимит газа предотвращает неожиданные или неограниченные расходы при выполнении транзакции. Цена газа @@ -920,6 +946,7 @@ Получатель Неверный адрес Убедитесь, что вы отправляете средства на адрес кошелька %s. Ошибки могут привести к потере ваших токенов. + Убедитесь, что отправляете на адрес в сети %s, ошибки могут привести к потере средств. Отправить Мемо/ Код назначения - это код, разделяющий транзакции к общему получателю в сети криптовалют. Внимание: отсутствие мемо может привести к потере средств. Memo / Destination Tag — это код, разделяющий транзакции, отправляемые одному и тому же получателю в криптовалютной сети. @@ -948,10 +975,13 @@ Обмен и отправка Продолжить с обменом? Это действие удалит предыдущие данные Подтвердить конвертацию + Отправка любой другой валюты приведёт к её безвозвратной потере. + Выберите правильную сеть получателя Выберите любой токен к получению. Ваш адресат получит ровно то, что вы выбрали — без лишних сложностей. Будет получено Получателю Сумма к получению + К получению %s Вы уверены, что хотите отменить конвертацию? Ваши предыдущие данные будут удалены. Убрать конвертацию Отправка с обменом @@ -1026,7 +1056,7 @@ Чтобы начать стейкинг в TON, сначала осуществите исходящую транзакцию на любую сумму — это активирует ваш кошелек. До 0.2 TON может потребоваться сверх сетевой комиссии для завершения транзакции. Неиспользованная часть будет возвращена. Для выполнения операции требуется дополнительно 0.2 TON, помимо сетевой комиссии. Пожалуйста, пополните баланс. - Зарезервировано 0.2 TON + Требуется резерв TON Это действие закроет другие позиции или переведёт их в статус вывода средств в соответствии с правилами сети. Статус позиций Разблокируйте свои средства, чтобы вывести их из стейкинга. Разблокировка займёт %s. @@ -1187,6 +1217,7 @@ Tangem Twin Это действие необратимо. У вас не будет доступа к старому кошельку. Приложите twin-карту с номером %s и не убирайте до окончания операции + Пожалуйста, попробуйте позже. Если проблема сохранится, обратитесь в поддержку. Произошла ошибка. Код ошибки: %s. Попробуйте, пожалуйста, снова. Если проблема будет продолжать возникать — обратитесь в службу поддержки. Используйте %s или отсканируйте карту/кольцо, чтобы получить доступ к своему кошельку Соединение не удалось: это dApp использует Wallet Connect версии 1.0, которая не поддерживается. Убедитесь, что dApp поддерживает Wallet Connect версии 2.0 для успешного подключения. 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 33db0a745b..8ef3fe2fc2 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -134,6 +134,7 @@ Підтвердити Підключення Продовжити + Конвертувати Копіювати Скопіювати адресу Створити @@ -836,6 +837,7 @@ Ви вказали комісію нижче рекомендованої, це може спричинити затримку вашої транзакції. Продовжити? Причина: %1$s\nКод: %2$s Транзакція не завершена + Конвертувати в інший токен Сума Ви можете встановити розмір комісії за транзакцію, налаштувавши значення в полі Satoshi per vByte. Комісія, яка буде стягнута за вашу транзакцію. Ви можете встановити власне значення. @@ -861,7 +863,6 @@ Перевірте підключення до мережі Інформація щодо комісії в мережі недоступна Ви надсилаєте - Із Ліміт газу Це максимальна кількість газу, яка буде витрачена на здійснення транзакції чи контракту. Ліміт газу запобігає несподіваним або необмеженим стягненням під час виконання транзакції. Вартість газу @@ -902,6 +903,7 @@ Одержувач Недійсна адреса Переконайтеся, що адреса гаманця одержувача знаходиться в мережі %s, щоб уникнути втрати ваших токенів + Переконайтеся, що ви надсилаєте на адресу в мережі %s. Помилка може призвести до втрати коштів. Надіслати до Memo/ Тег призначення — це унікальний ідентифікатор для розрізнення транзакцій, надісланих тому самому одержувачу в тій самій мережі. Застереження: відсутність тегу може призвести до втрати коштів. Мемо / Destination Tag — це код, що розділяє транзакції до спільного одержувача в криптовалютній мережі. @@ -926,7 +928,21 @@ Недопустима сума Комісія перевищує залишок Сума, що відправляється, перевищує залишок + Ви впевнені, що хочете змінити токен отримання? Це призведе до скидання раніше введених даних. + Зміна токену + Обмін та надсилання + Продовжити обмін? Це очистить ваші попередні дані. + Підтвердити конвертацію + Надсилання будь-якої іншої валюти призведе до її незворотної втрати. + Виберіть правильну мережу одержувача Виберіть будь-який токен. Той, кому ви його надішлете, отримає саме те, що ви обрали — без жодних ускладнень. + Буде отримано + Отримувачу + Сума для отримання + До отримання %s + Ви впевнені, що хочете скасувати конвертацію? Ваші попередні дані будуть видалені. + Прибрати конвертацію + Надіслати з обміном Трансакцію надіслано Підготуйтеся до сканування кільця або картки, яку ви хочете налаштувати. Забути гаманець @@ -999,7 +1015,7 @@ Щоб почати стейкінг в TON, спочатку здійсніть вихідну транзакцію на будь-яку суму — це активує ваш гаманець. До 0.2 TON може знадобитися додатково мережевої комісії для завершення транзакції. Невикористана частина буде повернута. Для виконання операції потребується додатково 0.2 TON, крім мережевої комісії. Будь ласка, поповніть баланс. - Зарезервовано 0.2 TON + Потрібен резерв TON Ця дія закриє інші позиції або переведе їх у статус виведення, відповідно до правил мережі. Статус позицій Розблокуйте свої кошти, щоб вивести їх зі стейкінгу. Розблокування займе %s. @@ -1159,6 +1175,7 @@ Tangem Twin Ця дія є незворотною. Ви не матимете доступу до старого гаманця. Прикладіть twin-картку з номером %s та не прибирайте її до завершення операції + Спробуйте ще раз пізніше. Якщо проблема залишиться, зверніться до служби підтримки. Виникла помилка. Код помилки: %s. Спробуйте, будь ласка, знову. Якщо проблема знову виникає — зверніться до нашої служби підтримки. Використовуйте %s або відскануйте картку/кільце, щоб отримати доступ до свого гаманця Не вдалося встановити з\'єднання: Цей dApp використовує Wallet Connect версії 1.0, яка не підтримується. Будь ласка, переконайтеся, що dApp підтримує Wallet Connect версії 2.0 для успішного підключення. @@ -1383,6 +1400,7 @@ Відомий ризик безпеки Відкрийте програму Web3 та виберіть опцію WalletConnect Запит від + Підписати все одно Тип підпису Для підключення dApp потрібна принаймні одна мережа Вкажіть вибрані мережі diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index c3d240ace5..1faf5263e0 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -249,6 +249,7 @@ Finish Free Synchronize addresses + Get started Go to provider Go to token Got it @@ -1055,7 +1056,7 @@ Not a valid address Ensure the receiving wallet address is on **the %s network** to avoid losing your tokens send to %s - Ensure you %s network address, as errors may result in lost transfers + Make sure you are sending to an address on the %s network. An error may result in the loss of funds. Send to A Memo/Destination Tag is a unique ID for differentiating transactions sent to the same recipient on the same network. Caution: Omitting a memo may lead to misplaced funds Memo / Destination Tag is a code separating transactions to a shared recipient in a crypto network. @@ -1092,7 +1093,7 @@ Recipient will receive To recipient Amount to receive - Recipient get %s + Recipient gets %s Are you sure you want to cancel the conversion? Your previous data will be cleared. Remove Conversion Send with swap @@ -1168,7 +1169,7 @@ To start staking in TON, first make an outgoing transaction of any amount — this will activate your wallet. Up to 0.2 TON may be required in addition to the network fee to complete the transaction. Any unused amount will be refunded. 0.2 TON is required to proceed with this operation, in addition to the network fee. Please top up your balance. - 0.2 Ton Reserved + TON reserve required This action will close other positions or switch them to withdrawal status, according to network rules. Positions status Unlock your money to withdraw it from staking process. Unlocking takes %s. @@ -1693,7 +1694,7 @@ To avoid paying an increased commission the next time you top up your wallet, reduce the amount by %s XTZ Give Approve Something went wrong with your previous approval, so we need a new one. Choose how you’d like to proceed. - Approve nedeed + Approve needed The fee will be taken out, and your assets will be lent again. To continue earning, approval is required. Confirm approval @@ -1704,16 +1705,12 @@ Current APY My Funds Your %1$s is now deposited in Aave and earning interest. You hold a%2$s token, which represents your balance and grows over time. When you top up, funds go to Aave to earn interest, minus a transaction fee. - Read more Active - Stop earning Earn Total earnings - Automatic Transfers to Aave Text explaining that your savings are located in the protocol Explore Aave - Explore default Your %s is deposited in Aave This is the current supply fee on %s. The live cost will be shown on the Receive Screen. Current fee @@ -1731,28 +1728,28 @@ Aave is trusted by millions worldwide. Total lended value is $10.4B. Decentralized and self-custodial By using service, you agree with provider - Maximize your savings + Earn %s% yearly Aave • Variable Interest Rate Aave Avg %s Last year returns Current interest rate is always variable and automatically computed by AAVE on-chain smart-contract based on real-time supply and demand. + Powered by Interest rate is variable When you top up, your funds will be automatically sent to Aave to start earning interest. A small fee equal to %s will be deducted to cover the transaction. - Start earning + Start earning Your %s will be supplied to Aave and will stay instantly available See fee policy - Network fee Your next deposits will be automatically supplied to Aave. - Start earning + Stop earning Turning off will withdraw your funds from Aave, return them to %s in your wallet, and stop earning rewards. The network fee will be deducted from the amount you withdraw. - Stop earning APY Make your money work — earn interest on your balance. Earning on your balance Processing your deposit - Earn %s% per year + Earn %1$s%% per year + Automatic Deposit some %1$s %2$s to cover the network fee for transactions Unable to cover %s fee diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt index cf54baee5b..7dd1e1a772 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/analytics/OnrampAnalyticsEvent.kt @@ -163,4 +163,35 @@ sealed class OnrampAnalyticsEvent( ERROR_DESCRIPTION to errorDescription, ), ) + + data class FastestBuyMethodClicked( + private val tokenSymbol: String, + private val providerName: String, + private val paymentMethod: String, + ) : OnrampAnalyticsEvent( + event = "Fastest Method Clicked", + params = mapOf( + TOKEN_PARAM to tokenSymbol, + PROVIDER to providerName, + PAYMENT_METHOD to paymentMethod, + ), + ) + + data class BestRateClicked( + private val tokenSymbol: String, + private val providerName: String, + private val paymentMethod: String, + ) : OnrampAnalyticsEvent( + event = "Best Rate Clicked", + params = mapOf( + TOKEN_PARAM to tokenSymbol, + PROVIDER to providerName, + PAYMENT_METHOD to paymentMethod, + ), + ) + + data object AllOffersClicked : OnrampAnalyticsEvent( + event = "Button - All Offers", + params = emptyMap(), + ) } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersIntents.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersIntents.kt index 4d2bbcec90..2f3739e450 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersIntents.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersIntents.kt @@ -1,12 +1,13 @@ package com.tangem.features.onramp.alloffers.entity import com.tangem.domain.onramp.model.OnrampProviderWithQuote +import com.tangem.features.onramp.mainv2.entity.OnrampOfferAdvantagesUM -interface AllOffersIntents { +internal interface AllOffersIntents { fun onPaymentMethodClicked(paymentMethodId: String) - fun onBuyClick(quote: OnrampProviderWithQuote.Data) + fun onBuyClick(quote: OnrampProviderWithQuote.Data, onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM) fun onBackClicked() diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersStateFactory.kt index 67878d0738..351cd1a5aa 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/entity/AllOffersStateFactory.kt @@ -1,10 +1,12 @@ package com.tangem.features.onramp.alloffers.entity import com.tangem.common.ui.notifications.NotificationUM +import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.format.bigdecimal.crypto import com.tangem.core.ui.format.bigdecimal.format import com.tangem.core.ui.format.bigdecimal.percent +import com.tangem.domain.onramp.analytics.OnrampAnalyticsEvent import com.tangem.domain.onramp.model.* import com.tangem.domain.onramp.model.error.OnrampError import com.tangem.features.onramp.mainv2.entity.OnrampOfferAdvantagesUM @@ -16,6 +18,7 @@ import kotlinx.collections.immutable.toPersistentList import java.math.BigDecimal internal class AllOffersStateFactory( + private val analyticsEventHandler: AnalyticsEventHandler, private val currentStateProvider: Provider, private val allOffersIntents: AllOffersIntents, ) { @@ -59,6 +62,7 @@ internal class AllOffersStateFactory( fun getPaymentsState(): AllOffersStateUM { return when (val currentState = currentStateProvider.invoke()) { is AllOffersStateUM.Content -> { + analyticsEventHandler.send(OnrampAnalyticsEvent.PaymentMethodsScreenOpened) currentState.copy(currentMethod = null) } AllOffersStateUM.Loading, @@ -133,12 +137,13 @@ internal class AllOffersStateFactory( }, onBuyClicked = { allOffersIntents.onBuyClick( - OnrampProviderWithQuote.Data( + quote = OnrampProviderWithQuote.Data( provider = quote.provider, paymentMethod = quote.paymentMethod, toAmount = quote.toAmount, fromAmount = quote.fromAmount, ), + onrampOfferAdvantagesUM = mapOfferAdvantagesDTOtoUM(offer.advantages), ) }, ), diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/model/AllOffersModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/model/AllOffersModel.kt index 19e69d6696..bd6674ad34 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/model/AllOffersModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/alloffers/model/AllOffersModel.kt @@ -11,6 +11,7 @@ import com.tangem.features.onramp.alloffers.AllOffersComponent import com.tangem.features.onramp.alloffers.entity.AllOffersIntents import com.tangem.features.onramp.alloffers.entity.AllOffersStateFactory import com.tangem.features.onramp.alloffers.entity.AllOffersStateUM +import com.tangem.features.onramp.mainv2.entity.OnrampOfferAdvantagesUM import com.tangem.utils.Provider import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.Job @@ -30,6 +31,7 @@ internal class AllOffersModel @Inject constructor( private val stateFactory: AllOffersStateFactory by lazy(LazyThreadSafetyMode.NONE) { AllOffersStateFactory( + analyticsEventHandler = analyticsEventHandler, currentStateProvider = Provider { state.value }, allOffersIntents = this, ) @@ -42,6 +44,8 @@ internal class AllOffersModel @Inject constructor( init { subscribeOnAllOffers() + analyticsEventHandler.send(OnrampAnalyticsEvent.PaymentMethodsScreenOpened) + analyticsEventHandler.send(OnrampAnalyticsEvent.AllOffersClicked) } fun dismiss() { @@ -51,10 +55,13 @@ internal class AllOffersModel @Inject constructor( override fun onPaymentMethodClicked(paymentMethodId: String) { val contentState = state.value as? AllOffersStateUM.Content ?: return val method = contentState.methods.firstOrNull { it.methodConfig.method.id == paymentMethodId } ?: return + analyticsEventHandler.send( + event = OnrampAnalyticsEvent.OnPaymentMethodChosen(paymentMethod = method.methodConfig.method.name), + ) _state.update { contentState.copy(currentMethod = method) } } - override fun onBuyClick(quote: OnrampProviderWithQuote.Data) { + override fun onBuyClick(quote: OnrampProviderWithQuote.Data, onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM) { analyticsEventHandler.send( OnrampAnalyticsEvent.OnBuyClick( providerName = quote.provider.info.name, @@ -62,6 +69,11 @@ internal class AllOffersModel @Inject constructor( tokenSymbol = params.cryptoCurrency.symbol, ), ) + onrampOfferAdvantagesUM.toAnalyticsEvent( + cryptoCurrencySymbol = params.cryptoCurrency.symbol, + providerName = quote.provider.info.name, + paymentMethodName = quote.paymentMethod.name, + )?.let { analyticsEventHandler.send(it) } params.openRedirectPage(quote) } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/entity/OnrampIntents.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/entity/OnrampIntents.kt index 6ed094c0cb..5654a17174 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/entity/OnrampIntents.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/entity/OnrampIntents.kt @@ -10,5 +10,4 @@ interface OnrampIntents { fun openProviders() fun onRefresh() fun onLinkClick(link: String) - fun onContinueClick() } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt index f78daf8e79..71399a3ce4 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt @@ -289,8 +289,6 @@ internal class OnrampMainComponentModel @Inject constructor( override fun onLinkClick(link: String) = urlOpener.openUrl(link) - override fun onContinueClick() = Unit - override fun onDestroy() { modelScope.launch { clearOnrampCacheUseCase.invoke() } quotesTaskScheduler.cancelTask() diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampOfferBlockUM.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampOfferBlockUM.kt index 5e41b49346..54ea1f1451 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampOfferBlockUM.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampOfferBlockUM.kt @@ -2,6 +2,7 @@ package com.tangem.features.onramp.mainv2.entity import androidx.compose.runtime.Immutable import com.tangem.core.ui.extensions.TextReference +import com.tangem.domain.onramp.analytics.OnrampAnalyticsEvent import com.tangem.domain.onramp.model.OnrampPaymentMethod import kotlinx.collections.immutable.ImmutableList @@ -43,7 +44,27 @@ internal enum class OnrampOfferCategoryUM { } internal enum class OnrampOfferAdvantagesUM { - Default, BestRate, Fastest + Default, BestRate, Fastest; + + fun toAnalyticsEvent( + cryptoCurrencySymbol: String, + providerName: String, + paymentMethodName: String, + ): OnrampAnalyticsEvent? { + return when (this) { + BestRate -> OnrampAnalyticsEvent.BestRateClicked( + tokenSymbol = cryptoCurrencySymbol, + providerName = providerName, + paymentMethod = paymentMethodName, + ) + Fastest -> OnrampAnalyticsEvent.FastestBuyMethodClicked( + tokenSymbol = cryptoCurrencySymbol, + providerName = providerName, + paymentMethod = paymentMethodName, + ) + Default -> null + } + } } internal data class OnrampAllOffersButtonConfig( diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampV2Intents.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampV2Intents.kt new file mode 100644 index 0000000000..a9f65922cd --- /dev/null +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/OnrampV2Intents.kt @@ -0,0 +1,13 @@ +package com.tangem.features.onramp.mainv2.entity + +import com.tangem.domain.onramp.model.OnrampProviderWithQuote + +internal interface OnrampV2Intents { + fun onAmountValueChanged(value: String) + fun openSettings() + fun openCurrenciesList() + fun onBuyClick(quote: OnrampProviderWithQuote.Data, onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM) + fun openProviders() + fun onRefresh() + fun onContinueClick() +} \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/converter/OnrampV2AmountFieldChangeConverter.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/converter/OnrampV2AmountFieldChangeConverter.kt index e0947e34b5..ec94be047d 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/converter/OnrampV2AmountFieldChangeConverter.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/converter/OnrampV2AmountFieldChangeConverter.kt @@ -8,7 +8,6 @@ import com.tangem.core.ui.format.bigdecimal.crypto import com.tangem.core.ui.format.bigdecimal.format import com.tangem.core.ui.utils.parseBigDecimalOrNull import com.tangem.domain.models.currency.CryptoCurrency -import com.tangem.features.onramp.main.entity.OnrampIntents import com.tangem.features.onramp.mainv2.entity.* import com.tangem.features.onramp.mainv2.entity.factory.OnrampAmountButtonUMStateFactory import com.tangem.utils.Provider @@ -18,7 +17,7 @@ import java.math.BigDecimal internal class OnrampV2AmountFieldChangeConverter( private val currentStateProvider: Provider, private val onrampAmountButtonUMStateFactory: OnrampAmountButtonUMStateFactory, - private val onrampIntents: OnrampIntents, + private val onrampIntents: OnrampV2Intents, private val cryptoCurrency: CryptoCurrency, ) : Converter { diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt index 377c5987d4..966893cab7 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt @@ -7,7 +7,6 @@ import com.tangem.core.ui.format.bigdecimal.format import com.tangem.core.ui.format.bigdecimal.percent import com.tangem.domain.onramp.model.* import com.tangem.features.onramp.impl.R -import com.tangem.features.onramp.main.entity.OnrampIntents import com.tangem.features.onramp.mainv2.entity.* import com.tangem.utils.Provider import com.tangem.utils.StringsSigns.MINUS @@ -15,7 +14,7 @@ import kotlinx.collections.immutable.toPersistentList internal class OnrampOffersStateFactory( private val currentStateProvider: Provider, - private val onrampIntents: OnrampIntents, + private val onrampIntents: OnrampV2Intents, ) { fun getOnShowOffersState(offers: List): OnrampV2MainComponentUM { @@ -65,6 +64,7 @@ internal class OnrampOffersStateFactory( toAmount = currentQuote.toAmount, fromAmount = currentQuote.fromAmount, ), + onrampOfferAdvantagesUM = mapOfferAdvantagesDTOtoUM(offer.advantages), ) }, ), diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt index 3c7a477fd1..0e1dc10b5b 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt @@ -15,7 +15,6 @@ import com.tangem.domain.onramp.model.OnrampQuote import com.tangem.domain.onramp.model.error.OnrampError import com.tangem.domain.tokens.model.AmountType import com.tangem.features.onramp.impl.R -import com.tangem.features.onramp.main.entity.OnrampIntents import com.tangem.features.onramp.mainv2.entity.* import com.tangem.features.onramp.mainv2.entity.converter.OnrampV2AmountFieldChangeConverter import com.tangem.utils.Provider @@ -24,7 +23,7 @@ import java.math.BigDecimal internal class OnrampV2AmountStateFactory( private val currentStateProvider: Provider, private val analyticsEventHandler: AnalyticsEventHandler, - private val onrampIntents: OnrampIntents, + private val onrampIntents: OnrampV2Intents, private val cryptoCurrency: CryptoCurrency, private val onrampAmountButtonUMStateFactory: OnrampAmountButtonUMStateFactory, ) { diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2StateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2StateFactory.kt index 8e37235b44..e39a2078b2 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2StateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2StateFactory.kt @@ -20,7 +20,6 @@ import com.tangem.domain.tokens.model.Amount import com.tangem.domain.tokens.model.AmountType import com.tangem.domain.tokens.model.convertToAmount import com.tangem.features.onramp.impl.R -import com.tangem.features.onramp.main.entity.OnrampIntents import com.tangem.features.onramp.mainv2.entity.* import com.tangem.utils.Provider import java.math.BigDecimal @@ -29,7 +28,7 @@ internal class OnrampV2StateFactory( private val currentStateProvider: Provider, private val onrampAmountButtonUMStateFactory: OnrampAmountButtonUMStateFactory, private val cryptoCurrency: CryptoCurrency, - private val onrampIntents: OnrampIntents, + private val onrampIntents: OnrampV2Intents, ) { fun getInitialState( diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt index abead667d7..57cdbcf6b6 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt @@ -15,7 +15,6 @@ import com.tangem.domain.onramp.model.OnrampProviderWithQuote import com.tangem.domain.onramp.model.OnrampQuote import com.tangem.domain.onramp.model.error.OnrampError import com.tangem.domain.wallets.usecase.GetWalletsUseCase -import com.tangem.features.onramp.main.entity.OnrampIntents import com.tangem.features.onramp.main.entity.OnrampLastUpdate import com.tangem.features.onramp.mainv2.OnrampV2MainComponent import com.tangem.features.onramp.mainv2.entity.* @@ -48,7 +47,7 @@ internal class OnrampV2MainComponentModel @Inject constructor( private val getOnrampOffersUseCase: GetOnrampOffersUseCase, paramsContainer: ParamsContainer, getWalletsUseCase: GetWalletsUseCase, -) : Model(), OnrampIntents { +) : Model(), OnrampV2Intents { val params = paramsContainer.require() @@ -126,7 +125,7 @@ internal class OnrampV2MainComponentModel @Inject constructor( bottomSheetNavigation.activate(OnrampV2MainBottomSheetConfig.CurrenciesList) } - override fun onBuyClick(quote: OnrampProviderWithQuote.Data) { + override fun onBuyClick(quote: OnrampProviderWithQuote.Data, onrampOfferAdvantagesUM: OnrampOfferAdvantagesUM) { val currentContentState = state.value as? OnrampV2MainComponentUM.Content ?: return analyticsEventHandler.send( OnrampAnalyticsEvent.OnBuyClick( @@ -135,6 +134,11 @@ internal class OnrampV2MainComponentModel @Inject constructor( tokenSymbol = params.cryptoCurrency.symbol, ), ) + onrampOfferAdvantagesUM.toAnalyticsEvent( + cryptoCurrencySymbol = params.cryptoCurrency.symbol, + providerName = quote.provider.info.name, + paymentMethodName = quote.paymentMethod.name, + )?.let { analyticsEventHandler.send(it) } params.openRedirectPage(quote) } @@ -159,10 +163,6 @@ internal class OnrampV2MainComponentModel @Inject constructor( } } - override fun onLinkClick(link: String) { - // TODO in [REDACTED_TASK_KEY] will be deleted - } - override fun onContinueClick() { val currentState = _state.value if (currentState is OnrampV2MainComponentUM.Content) {