Merge branch 'cake-tech:main' into chainflip

This commit is contained in:
David Cumps 2024-12-09 14:47:27 +01:00 committed by GitHub
commit 8282ffd92d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 98 additions and 85 deletions

View file

@ -38,7 +38,7 @@ jobs:
- name: Flutter action - name: Flutter action
uses: subosito/flutter-action@v1 uses: subosito/flutter-action@v1
with: with:
flutter-version: "3.24.4" flutter-version: "3.24.0"
channel: stable channel: stable
- name: Install package dependencies - name: Install package dependencies

View file

@ -44,7 +44,7 @@ android {
disable 'InvalidPackage' disable 'InvalidPackage'
} }
namespace appProperties['id'] namespace "com.cakewallet.cake_wallet"
defaultConfig { defaultConfig {
applicationId appProperties['id'] applicationId appProperties['id']

View file

@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android">
package="com.cakewallet.cake_wallet">
<!-- Flutter needs it to communicate with the running application <!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->

View file

@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android">
package="__APP_PACKAGE__">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" /> <uses-permission android:name="android.permission.USE_FINGERPRINT" />

View file

@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android">
package="com.cakewallet.cake_wallet">
<!-- Flutter needs it to communicate with the running application <!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->

View file

@ -3,8 +3,8 @@ import 'package:cw_core/monero_amount_format.dart';
class MoneroBalance extends Balance { class MoneroBalance extends Balance {
MoneroBalance({required this.fullBalance, required this.unlockedBalance, this.frozenBalance = 0}) MoneroBalance({required this.fullBalance, required this.unlockedBalance, this.frozenBalance = 0})
: formattedFullBalance = moneroAmountToString(amount: fullBalance), : formattedFullBalance = moneroAmountToString(amount: frozenBalance + fullBalance),
formattedUnlockedBalance = moneroAmountToString(amount: unlockedBalance - frozenBalance), formattedUnlockedBalance = moneroAmountToString(amount: unlockedBalance),
formattedLockedBalance = formattedLockedBalance =
moneroAmountToString(amount: frozenBalance + fullBalance - unlockedBalance), moneroAmountToString(amount: frozenBalance + fullBalance - unlockedBalance),
super(unlockedBalance, fullBalance); super(unlockedBalance, fullBalance);

View file

@ -725,8 +725,9 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
void _askForUpdateBalance() { void _askForUpdateBalance() {
final unlockedBalance = _getUnlockedBalance(); final unlockedBalance = _getUnlockedBalance();
final fullBalance = _getUnlockedBalance() + _getFrozenBalance(); final fullBalance = monero_wallet.getFullBalance(
final frozenBalance = 0; // this is calculated on the monero side now accountIndex: walletAddresses.account!.id);
final frozenBalance = _getFrozenBalance();
if (balance[currency]!.fullBalance != fullBalance || if (balance[currency]!.fullBalance != fullBalance ||
balance[currency]!.unlockedBalance != unlockedBalance || balance[currency]!.unlockedBalance != unlockedBalance ||
balance[currency]!.frozenBalance != frozenBalance) { balance[currency]!.frozenBalance != frozenBalance) {

View file

@ -134,7 +134,7 @@ class AddressValidator extends TextValidator {
case CryptoCurrency.btcln: case CryptoCurrency.btcln:
pattern = '(lnbc|LNBC)([0-9]{1,}[a-zA-Z0-9]+)'; pattern = '(lnbc|LNBC)([0-9]{1,}[a-zA-Z0-9]+)';
default: default:
pattern = '[0-9a-zA-Z]+'; return '';
} }
return '$BEFORE_REGEX($pattern)$AFTER_REGEX'; return '$BEFORE_REGEX($pattern)$AFTER_REGEX';

View file

@ -97,6 +97,8 @@ class LetsExchangeExchangeProvider extends ExchangeProvider {
final amountToGet = double.tryParse(responseJSON['amount'] as String) ?? 0.0; final amountToGet = double.tryParse(responseJSON['amount'] as String) ?? 0.0;
if (amountToGet == 0.0) return 0.0;
return isFixedRateMode ? amount / amountToGet : amountToGet / amount; return isFixedRateMode ? amount / amountToGet : amountToGet / amount;
} catch (e) { } catch (e) {
log(e.toString()); log(e.toString());

View file

@ -248,14 +248,11 @@ class CakePayBuyCardPage extends BasePage {
} }
bool isWordInCardsName(CakePayCard card, String word) { bool isWordInCardsName(CakePayCard card, String word) {
// word must be followed by a space or beginning of the string return card.name.toLowerCase().contains(word.toLowerCase());
final regex = RegExp(r'(^|\s)' + word + r'(\s|$)', caseSensitive: false);
return regex.hasMatch(card.name.toLowerCase());
} }
bool isIOSUnavailable(CakePayCard card) { bool isIOSUnavailable(CakePayCard card) {
if (!Platform.isIOS) { if (!Platform.isIOS && !Platform.isMacOS) {
return false; return false;
} }

View file

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
@ -40,7 +42,13 @@ class CakeFeaturesPage extends StatelessWidget {
children: <Widget>[ children: <Widget>[
SizedBox(height: 20), SizedBox(height: 20),
DashBoardRoundedCardWidget( DashBoardRoundedCardWidget(
onTap: () => _navigatorToGiftCardsPage(context), onTap: () {
if (Platform.isMacOS) {
_launchUrl("buy.cakepay.com");
} else {
_navigatorToGiftCardsPage(context);
}
},
title: 'Cake Pay', title: 'Cake Pay',
subTitle: S.of(context).cake_pay_subtitle, subTitle: S.of(context).cake_pay_subtitle,
image: Image.asset( image: Image.asset(
@ -75,7 +83,7 @@ class CakeFeaturesPage extends StatelessWidget {
icon: Icon( icon: Icon(
Icons.speaker_notes_rounded, Icons.speaker_notes_rounded,
color: color:
Theme.of(context).extension<DashboardPageTheme>()!.pageTitleTextColor, Theme.of(context).extension<DashboardPageTheme>()!.pageTitleTextColor,
size: 75, size: 75,
), ),
); );

View file

@ -1,6 +1,5 @@
import 'dart:io'; import 'dart:io';
import 'package:cake_wallet/core/secure_storage.dart';
import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/entities/preferences_key.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/main.dart'; import 'package:cake_wallet/main.dart';
@ -21,7 +20,8 @@ class ExceptionHandler {
static const _coolDownDurationInDays = 7; static const _coolDownDurationInDays = 7;
static File? _file; static File? _file;
static Future<void> _saveException(String? error, StackTrace? stackTrace, {String? library}) async { static Future<void> _saveException(String? error, StackTrace? stackTrace,
{String? library}) async {
final appDocDir = await getAppDir(); final appDocDir = await getAppDir();
if (_file == null) { if (_file == null) {
@ -103,7 +103,8 @@ class ExceptionHandler {
return; return;
} }
if (_ignoreError(errorDetails.exception.toString())) { if (_ignoreError(errorDetails.exception.toString()) ||
_ignoreError(errorDetails.stack.toString())) {
return; return;
} }
@ -199,6 +200,13 @@ class ExceptionHandler {
"input stream error", "input stream error",
"invalid signature", "invalid signature",
"invalid password", "invalid password",
// Temporary ignored, More context: Flutter secure storage reads the values as null some times
// probably when the device was locked and then opened on Cake
// this is solved by a restart of the app
// just ignoring until we find a solution to this issue or migrate from flutter secure storage
"core/auth_service.dart:63",
"core/key_service.dart:14",
"core/wallet_loading_service.dart:132",
]; ];
static Future<void> _addDeviceInfo(File file) async { static Future<void> _addDeviceInfo(File file) async {

View file

@ -39,8 +39,8 @@
"alert_notice": "Avis", "alert_notice": "Avis",
"all": "TOUT", "all": "TOUT",
"all_coins": "Toutes les pièces", "all_coins": "Toutes les pièces",
"all_trades": "Tous échanges", "all_trades": "Tous les échanges",
"all_transactions": "Toutes transactions", "all_transactions": "Toutes les transactions",
"alphabetical": "Alphabétique", "alphabetical": "Alphabétique",
"already_have_account": "Vous avez déjà un compte ?", "already_have_account": "Vous avez déjà un compte ?",
"always": "toujours", "always": "toujours",
@ -55,7 +55,7 @@
"arrive_in_this_address": "${currency} ${tag}arrivera à cette adresse", "arrive_in_this_address": "${currency} ${tag}arrivera à cette adresse",
"ascending": "Ascendant", "ascending": "Ascendant",
"ask_each_time": "Demander à chaque fois", "ask_each_time": "Demander à chaque fois",
"auth_store_ban_timeout": "délai de bannisement", "auth_store_ban_timeout": "expulsion_temporaire",
"auth_store_banned_for": "Banni pour ", "auth_store_banned_for": "Banni pour ",
"auth_store_banned_minutes": " minutes", "auth_store_banned_minutes": " minutes",
"auth_store_incorrect_password": "Mauvais code PIN", "auth_store_incorrect_password": "Mauvais code PIN",
@ -85,7 +85,7 @@
"Blocks_remaining": "Blocs Restants : ${status}", "Blocks_remaining": "Blocs Restants : ${status}",
"bluetooth": "Bluetooth", "bluetooth": "Bluetooth",
"bright_theme": "Vif", "bright_theme": "Vif",
"bump_fee": "Frais de bosse", "bump_fee": "Augmenter les frais",
"buy": "Acheter", "buy": "Acheter",
"buy_alert_content": "Actuellement, nous ne prenons en charge que l'achat de Bitcoin, Ethereum, Litecoin et Monero. Veuillez créer ou basculer vers votre portefeuille Bitcoin, Ethereum, Litecoin ou Monero.", "buy_alert_content": "Actuellement, nous ne prenons en charge que l'achat de Bitcoin, Ethereum, Litecoin et Monero. Veuillez créer ou basculer vers votre portefeuille Bitcoin, Ethereum, Litecoin ou Monero.",
"buy_bitcoin": "Acheter du Bitcoin", "buy_bitcoin": "Acheter du Bitcoin",
@ -94,7 +94,7 @@
"buy_with": "Acheter avec", "buy_with": "Acheter avec",
"by_cake_pay": "par Cake Pay", "by_cake_pay": "par Cake Pay",
"cake_2fa_preset": "Cake 2FA prédéfini", "cake_2fa_preset": "Cake 2FA prédéfini",
"cake_dark_theme": "Thème sombre du gâteau", "cake_dark_theme": "Thème sombre Cake",
"cake_pay_account_note": "Inscrivez-vous avec juste une adresse e-mail pour voir et acheter des cartes. Certaines sont même disponibles à prix réduit !", "cake_pay_account_note": "Inscrivez-vous avec juste une adresse e-mail pour voir et acheter des cartes. Certaines sont même disponibles à prix réduit !",
"cake_pay_learn_more": "Achetez et utilisez instantanément des cartes-cadeaux dans l'application !\nBalayer de gauche à droite pour en savoir plus.", "cake_pay_learn_more": "Achetez et utilisez instantanément des cartes-cadeaux dans l'application !\nBalayer de gauche à droite pour en savoir plus.",
"cake_pay_save_order": "La carte doit être envoyée à votre e-mail dans un jour ouvrable \n Enregistrez votre identifiant de commande:", "cake_pay_save_order": "La carte doit être envoyée à votre e-mail dans un jour ouvrable \n Enregistrez votre identifiant de commande:",
@ -107,7 +107,7 @@
"camera_consent": "Votre appareil photo sera utilisé pour capturer une image à des fins d'identification par ${provider}. Veuillez consulter leur politique de confidentialité pour plus de détails.", "camera_consent": "Votre appareil photo sera utilisé pour capturer une image à des fins d'identification par ${provider}. Veuillez consulter leur politique de confidentialité pour plus de détails.",
"camera_permission_is_required": "L'autorisation de la caméra est requise.\nVeuillez l'activer à partir des paramètres de l'application.", "camera_permission_is_required": "L'autorisation de la caméra est requise.\nVeuillez l'activer à partir des paramètres de l'application.",
"cancel": "Annuler", "cancel": "Annuler",
"card_address": "Adresse :", "card_address": "Adresse:",
"cardholder_agreement": "Contrat de titulaire de carte", "cardholder_agreement": "Contrat de titulaire de carte",
"cards": "Cartes", "cards": "Cartes",
"chains": "Chaînes", "chains": "Chaînes",
@ -128,13 +128,13 @@
"choose_a_payment_method": "Choisissez un mode de paiement", "choose_a_payment_method": "Choisissez un mode de paiement",
"choose_a_provider": "Choisissez un fournisseur", "choose_a_provider": "Choisissez un fournisseur",
"choose_account": "Choisir le compte", "choose_account": "Choisir le compte",
"choose_address": "\n\nMerci de choisir l'adresse :", "choose_address": "\n\nMerci de choisir l'adresse:",
"choose_card_value": "Choisissez une valeur de carte", "choose_card_value": "Choisissez une valeur de carte",
"choose_derivation": "Choisissez le chemin de dérivation du portefeuille", "choose_derivation": "Choisir la dérivation du portefeuille",
"choose_from_available_options": "Choisissez parmi les options disponibles :", "choose_from_available_options": "Choisissez parmi les options disponibles:",
"choose_one": "Choisissez-en un", "choose_one": "Choisissez-en un",
"choose_relay": "Veuillez choisir un relais à utiliser", "choose_relay": "Veuillez choisir un relais à utiliser",
"choose_wallet_currency": "Merci de choisir la devise du portefeuille (wallet) :", "choose_wallet_currency": "Merci de choisir la devise du portefeuille (wallet):",
"choose_wallet_group": "Choisissez un groupe de portefeuille", "choose_wallet_group": "Choisissez un groupe de portefeuille",
"clear": "Effacer", "clear": "Effacer",
"clearnet_link": "Lien Clearnet", "clearnet_link": "Lien Clearnet",
@ -145,12 +145,12 @@
"commit_transaction_amount_fee": "Valider la transaction\nMontant : ${amount}\nFrais : ${fee}", "commit_transaction_amount_fee": "Valider la transaction\nMontant : ${amount}\nFrais : ${fee}",
"confirm": "Confirmer", "confirm": "Confirmer",
"confirm_delete_template": "Cette action va supprimer ce modèle. Souhaitez-vous continuer ?", "confirm_delete_template": "Cette action va supprimer ce modèle. Souhaitez-vous continuer ?",
"confirm_delete_wallet": "Cette action va supprimer ce portefeuille (wallet). Souhaitez-vous contnuer ?", "confirm_delete_wallet": "Cette action va supprimer ce portefeuille (wallet). Souhaitez-vous continuer ?",
"confirm_fee_deduction": "Confirmer la déduction des frais", "confirm_fee_deduction": "Confirmer la déduction des frais",
"confirm_fee_deduction_content": "Acceptez-vous de déduire les frais de la production?", "confirm_fee_deduction_content": "Acceptez-vous de déduire les frais de la production?",
"confirm_passphrase": "Confirmer la phrase passante", "confirm_passphrase": "Confirmer la phrase passante",
"confirm_sending": "Confirmer l'envoi", "confirm_sending": "Confirmer l'envoi",
"confirm_silent_payments_switch_node": "Votre nœud actuel ne prend pas en charge les paiements silencieux \\ ncake qui passera à un nœud compatible, juste pour la numérisation", "confirm_silent_payments_switch_node": "Votre nœud actuel ne prend pas en charge les paiements silencieux.\n\nCake Wallet passera à un nœud compatible pendant l'analyse.",
"confirmations": "Confirmations", "confirmations": "Confirmations",
"confirmed": "Solde confirmé", "confirmed": "Solde confirmé",
"confirmed_tx": "Confirmé", "confirmed_tx": "Confirmé",
@ -178,7 +178,7 @@
"copy_id": "Copier l'ID", "copy_id": "Copier l'ID",
"copyWalletConnectLink": "Copiez le lien WalletConnect depuis l'application décentralisée (dApp) et collez-le ici", "copyWalletConnectLink": "Copiez le lien WalletConnect depuis l'application décentralisée (dApp) et collez-le ici",
"corrupted_seed_notice": "Les fichiers de ce portefeuille sont corrompus et ne peuvent pas être ouverts. Veuillez consulter la phrase de graines, sauver et restaurer le portefeuille.\n\nSi la valeur est vide, la graine n'a pas pu être correctement récupérée.", "corrupted_seed_notice": "Les fichiers de ce portefeuille sont corrompus et ne peuvent pas être ouverts. Veuillez consulter la phrase de graines, sauver et restaurer le portefeuille.\n\nSi la valeur est vide, la graine n'a pas pu être correctement récupérée.",
"countries": "Des pays", "countries": "Pays",
"create_account": "Créer un compte", "create_account": "Créer un compte",
"create_backup": "Créer une sauvegarde", "create_backup": "Créer une sauvegarde",
"create_donation_link": "Créer un lien de don", "create_donation_link": "Créer un lien de don",
@ -189,8 +189,8 @@
"creating_new_wallet": "Création d'un nouveau portefeuille (wallet)", "creating_new_wallet": "Création d'un nouveau portefeuille (wallet)",
"creating_new_wallet_error": "Erreur : ${description}", "creating_new_wallet_error": "Erreur : ${description}",
"creation_date": "Date de création", "creation_date": "Date de création",
"custom": "personnalisé", "custom": "Personnalisé",
"custom_drag": "Custom (maintenir et traîner)", "custom_drag": "Personnalisé (Maintenir et Glisser)",
"custom_redeem_amount": "Montant d'échange personnalisé", "custom_redeem_amount": "Montant d'échange personnalisé",
"custom_value": "Valeur personnalisée", "custom_value": "Valeur personnalisée",
"dark_theme": "Sombre", "dark_theme": "Sombre",
@ -245,7 +245,7 @@
"enable": "Activer", "enable": "Activer",
"enable_mempool_api": "API Mempool pour les frais et dates précis", "enable_mempool_api": "API Mempool pour les frais et dates précis",
"enable_replace_by_fee": "Activer Remplace-by-Fee", "enable_replace_by_fee": "Activer Remplace-by-Fee",
"enable_silent_payments_scanning": "Commencez à scanner les paiements silencieux, jusqu'à ce que la pointe soit atteinte", "enable_silent_payments_scanning": "Commencez à analyser les transactions envoyées à votre adresse de paiement silencieux.",
"enabled": "Activé", "enabled": "Activé",
"enter_amount": "Entrez le montant", "enter_amount": "Entrez le montant",
"enter_backup_password": "Entrez le mot de passe de sauvegarde ici", "enter_backup_password": "Entrez le mot de passe de sauvegarde ici",
@ -289,7 +289,7 @@
"event": "Événement", "event": "Événement",
"events": "Événements", "events": "Événements",
"exchange": "Échanger", "exchange": "Échanger",
"exchange_incorrect_current_wallet_for_xmr": "Si vous souhaitez échanger XMR à partir de votre balance monero portefeuille de gâteau, veuillez d'abord passer à votre portefeuille Monero.", "exchange_incorrect_current_wallet_for_xmr": "Si vous souhaitez échanger des XMR depuis le solde Monero de votre Cake Wallet, veuillez d'abord passer à votre portefeuille Monero.",
"exchange_new_template": "Nouveau modèle d'échange", "exchange_new_template": "Nouveau modèle d'échange",
"exchange_provider_unsupported": "${providerName} n'est plus pris en charge !", "exchange_provider_unsupported": "${providerName} n'est plus pris en charge !",
"exchange_result_confirm": "En pressant confirmer, vous enverrez ${fetchingLabel} ${from} depuis votre portefeuille (wallet) nommé ${walletName} vers l'adresse ci-dessous. Vous pouvez aussi envoyer depuis votre portefeuille externe vers l'adresse/QR code ci-dessous.\n\nMerci d'appuyer sur confirmer pour continuer ou retournez en arrière pour modifier les montants.", "exchange_result_confirm": "En pressant confirmer, vous enverrez ${fetchingLabel} ${from} depuis votre portefeuille (wallet) nommé ${walletName} vers l'adresse ci-dessous. Vous pouvez aussi envoyer depuis votre portefeuille externe vers l'adresse/QR code ci-dessous.\n\nMerci d'appuyer sur confirmer pour continuer ou retournez en arrière pour modifier les montants.",
@ -370,11 +370,11 @@
"is_percentage": "est", "is_percentage": "est",
"last_30_days": "30 derniers jours", "last_30_days": "30 derniers jours",
"learn_more": "En savoir plus", "learn_more": "En savoir plus",
"ledger_connection_error": "Impossible de se connecter à votre grand livre. Veuillez réessayer.", "ledger_connection_error": "Impossible de se connecter à votre Ledger. Veuillez réessayer.",
"ledger_error_device_locked": "Le grand livre est verrouillé", "ledger_error_device_locked": "La Ledger est verrouillé",
"ledger_error_tx_rejected_by_user": "Transaction rejetée sur l'appareil", "ledger_error_tx_rejected_by_user": "Transaction rejetée sur l'appareil",
"ledger_error_wrong_app": "Veuillez vous assurer d'ouvrir la bonne application sur votre grand livre", "ledger_error_wrong_app": "Veuillez vous assurer d'ouvrir la bonne application sur votre Ledger",
"ledger_please_enable_bluetooth": "Veuillez activer Bluetooth pour détecter votre grand livre", "ledger_please_enable_bluetooth": "Veuillez activer le Bluetooth pour détecter votre Ledger",
"light_theme": "Clair", "light_theme": "Clair",
"litecoin_enable_mweb_sync": "Activer la numérisation MWEB", "litecoin_enable_mweb_sync": "Activer la numérisation MWEB",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
@ -386,8 +386,8 @@
"litecoin_mweb_enable_later": "Vous pouvez choisir d'activer à nouveau MWEB sous Paramètres d'affichage.", "litecoin_mweb_enable_later": "Vous pouvez choisir d'activer à nouveau MWEB sous Paramètres d'affichage.",
"litecoin_mweb_logs": "Journaux MWEB", "litecoin_mweb_logs": "Journaux MWEB",
"litecoin_mweb_node": "Node MWEB", "litecoin_mweb_node": "Node MWEB",
"litecoin_mweb_pegin": "Entraver", "litecoin_mweb_pegin": "Dépôt Peg",
"litecoin_mweb_pegout": "Crever", "litecoin_mweb_pegout": "Retrait Peg",
"litecoin_mweb_scanning": "Scann mweb", "litecoin_mweb_scanning": "Scann mweb",
"litecoin_mweb_settings": "Paramètres MWEB", "litecoin_mweb_settings": "Paramètres MWEB",
"litecoin_mweb_warning": "L'utilisation de MWEB téléchargera initialement ~ 600 Mo de données et peut prendre jusqu'à 30 minutes en fonction de la vitesse du réseau. Ces données initiales ne téléchargeront qu'une seule fois et seront disponibles pour tous les portefeuilles litecoin", "litecoin_mweb_warning": "L'utilisation de MWEB téléchargera initialement ~ 600 Mo de données et peut prendre jusqu'à 30 minutes en fonction de la vitesse du réseau. Ces données initiales ne téléchargeront qu'une seule fois et seront disponibles pour tous les portefeuilles litecoin",
@ -395,9 +395,9 @@
"live_fee_rates": "Taux de frais en direct via l'API", "live_fee_rates": "Taux de frais en direct via l'API",
"load_more": "Charger plus", "load_more": "Charger plus",
"loading_your_wallet": "Chargement de votre portefeuille (wallet)", "loading_your_wallet": "Chargement de votre portefeuille (wallet)",
"login": "Utilisateur", "login": "Connexion",
"logout": "Déconnexion", "logout": "Déconnexion",
"low_fee": "Frais modiques", "low_fee": "Frais faibles",
"low_fee_alert": "Vous utilisez actuellement une priorité de frais de réseau peu élevés. Cela pourrait entraîner de longues attentes, des taux différents ou des transactions annulées. Nous vous recommandons de fixer des frais plus élevés pour une meilleure expérience.", "low_fee_alert": "Vous utilisez actuellement une priorité de frais de réseau peu élevés. Cela pourrait entraîner de longues attentes, des taux différents ou des transactions annulées. Nous vous recommandons de fixer des frais plus élevés pour une meilleure expérience.",
"manage_nodes": "Gérer les nœuds", "manage_nodes": "Gérer les nœuds",
"manage_pow_nodes": "Gérer les nœuds PoW", "manage_pow_nodes": "Gérer les nœuds PoW",
@ -428,9 +428,9 @@
"nano_current_rep": "Représentant actuel", "nano_current_rep": "Représentant actuel",
"nano_gpt_thanks_message": "Merci d'avoir utilisé Nanogpt! N'oubliez pas de retourner au navigateur une fois votre transaction terminée!", "nano_gpt_thanks_message": "Merci d'avoir utilisé Nanogpt! N'oubliez pas de retourner au navigateur une fois votre transaction terminée!",
"nano_pick_new_rep": "Choisissez un nouveau représentant", "nano_pick_new_rep": "Choisissez un nouveau représentant",
"nanogpt_subtitle": "Tous les modèles les plus récents (GPT-4, Claude). \\ NNO abonnement, payez avec crypto.", "nanogpt_subtitle": "Tous les modèles les plus récents (GPT-4, Claude).\nPas d'abonnement, payez avec vos crypto-monnaies.",
"narrow": "Étroit", "narrow": "Rédruit",
"new_first_wallet_text": "Garder votre crypto en sécurité est un morceau de gâteau", "new_first_wallet_text": "Garder vos crypto-monnaies en sécurité est un jeu d'enfant.",
"new_node_testing": "Test du nouveau nœud", "new_node_testing": "Test du nouveau nœud",
"new_subaddress_create": "Créer", "new_subaddress_create": "Créer",
"new_subaddress_label_name": "Nom", "new_subaddress_label_name": "Nom",
@ -459,7 +459,7 @@
"note_optional": "Note (optionnelle)", "note_optional": "Note (optionnelle)",
"note_tap_to_change": "Note (appuyez pour changer)", "note_tap_to_change": "Note (appuyez pour changer)",
"nullURIError": "L'URI est nul", "nullURIError": "L'URI est nul",
"offer_expires_in": "L'Offre expire dans : ", "offer_expires_in": "L'Offre expire dans: ",
"offline": "Hors ligne", "offline": "Hors ligne",
"ok": "OK", "ok": "OK",
"old_fee": "Anciens", "old_fee": "Anciens",
@ -517,7 +517,7 @@
"private_key": "Clef privée", "private_key": "Clef privée",
"proceed_after_one_minute": "Si l'écran ne s'affiche pas après 1 minute, vérifiez vos e-mails.", "proceed_after_one_minute": "Si l'écran ne s'affiche pas après 1 minute, vérifiez vos e-mails.",
"proceed_on_device": "Continuez sur votre appareil", "proceed_on_device": "Continuez sur votre appareil",
"proceed_on_device_description": "Veuillez suivre les instructions invitées sur votre portefeuille matériel", "proceed_on_device_description": "Veuillez suivre les instructions affichées sur votre portefeuille physique.",
"profile": "Profil", "profile": "Profil",
"provider_error": "Erreur de ${provider}", "provider_error": "Erreur de ${provider}",
"public_key": "Clef publique", "public_key": "Clef publique",
@ -535,8 +535,8 @@
"reconnect": "Reconnecter", "reconnect": "Reconnecter",
"reconnect_alert_text": "Êtes vous certain de vouloir vous reconnecter ?", "reconnect_alert_text": "Êtes vous certain de vouloir vous reconnecter ?",
"reconnection": "Reconnexion", "reconnection": "Reconnexion",
"red_dark_theme": "Thème rouge noir", "red_dark_theme": "Thème rouge sombre",
"red_light_theme": "Thème de la lumière rouge", "red_light_theme": "Thème rouge clair",
"redeemed": "Converties", "redeemed": "Converties",
"refund_address": "Adresse de Remboursement", "refund_address": "Adresse de Remboursement",
"reject": "Rejeter", "reject": "Rejeter",
@ -567,9 +567,9 @@
"restore_address": "Adresse", "restore_address": "Adresse",
"restore_bitcoin_description_from_keys": "Restaurer votre portefeuille (wallet) d'après la chaîne WIF générée d'après vos clefs privées", "restore_bitcoin_description_from_keys": "Restaurer votre portefeuille (wallet) d'après la chaîne WIF générée d'après vos clefs privées",
"restore_bitcoin_description_from_seed": "Restaurer votre portefeuille (wallet) à l'aide d'une phrase secrète (seed) de 24 mots", "restore_bitcoin_description_from_seed": "Restaurer votre portefeuille (wallet) à l'aide d'une phrase secrète (seed) de 24 mots",
"restore_bitcoin_title_from_keys": "Restaurer depuis la chaîne WIF", "restore_bitcoin_title_from_keys": "Restaurer à partir de WIF",
"restore_description_from_backup": "Vous pouvez restaurer l'intégralité de l'application Cake Wallet depuis un fichier de sauvegarde", "restore_description_from_backup": "Vous pouvez restaurer l'intégralité de l'application Cake Wallet depuis un fichier de sauvegarde",
"restore_description_from_hardware_wallet": "Restaurer à partir d'un portefeuille matériel de grand livre", "restore_description_from_hardware_wallet": "Restaurer depuis un portefeuille matériel Ledger",
"restore_description_from_keys": "Restaurer votre portefeuille (wallet) d'après les séquences de touches générées d'après vos clefs privées", "restore_description_from_keys": "Restaurer votre portefeuille (wallet) d'après les séquences de touches générées d'après vos clefs privées",
"restore_description_from_seed": "Restaurer votre portefeuille (wallet) depuis une phrase secrète (seed) de 25 ou 13 mots", "restore_description_from_seed": "Restaurer votre portefeuille (wallet) depuis une phrase secrète (seed) de 25 ou 13 mots",
"restore_description_from_seed_keys": "Restaurez votre portefeuille (wallet) depuis une phrase secrète (seed) ou des clefs que vous avez stockées en lieu sûr", "restore_description_from_seed_keys": "Restaurez votre portefeuille (wallet) depuis une phrase secrète (seed) ou des clefs que vous avez stockées en lieu sûr",
@ -636,10 +636,10 @@
"seed_reminder": "Merci d'écrire votre phrase secrète (seed) au cas où vous perdriez ou effaceriez votre téléphone", "seed_reminder": "Merci d'écrire votre phrase secrète (seed) au cas où vous perdriez ou effaceriez votre téléphone",
"seed_share": "Partager la phrase secrète (seed)", "seed_share": "Partager la phrase secrète (seed)",
"seed_title": "Phrase secrète (seed)", "seed_title": "Phrase secrète (seed)",
"seedtype": "Type de type graine", "seedtype": "Type de graine",
"seedtype_alert_content": "Le partage de graines avec d'autres portefeuilles n'est possible qu'avec Bip39 SeedType.", "seedtype_alert_content": "Le partage de graines avec d'autres portefeuilles n'est possible qu'avec le type de graine BIP39.",
"seedtype_alert_title": "Alerte de type SeedType", "seedtype_alert_title": "Alerte Type de Graine",
"seedtype_legacy": "Héritage (25 mots)", "seedtype_legacy": "Legacy (25 words)",
"seedtype_polyseed": "Polyseed (16 mots)", "seedtype_polyseed": "Polyseed (16 mots)",
"seedtype_wownero": "WOWNERO (14 mots)", "seedtype_wownero": "WOWNERO (14 mots)",
"select_backup_file": "Sélectionnez le fichier de sauvegarde", "select_backup_file": "Sélectionnez le fichier de sauvegarde",
@ -652,13 +652,13 @@
"sell_monero_com_alert_content": "La vente de Monero n'est pas encore prise en charge", "sell_monero_com_alert_content": "La vente de Monero n'est pas encore prise en charge",
"send": "Envoyer", "send": "Envoyer",
"send_address": "adresse ${cryptoCurrency}", "send_address": "adresse ${cryptoCurrency}",
"send_amount": "Montant :", "send_amount": "Montant:",
"send_change_to_you": "Changer, pour vous:", "send_change_to_you": "Changer, pour vous:",
"send_creating_transaction": "Création de la transaction", "send_creating_transaction": "Création de la transaction",
"send_error_currency": "La monnaie ne peut contenir que des nombres", "send_error_currency": "La monnaie ne peut contenir que des nombres",
"send_error_minimum_value": "La valeur minimale du montant est 0.01", "send_error_minimum_value": "La valeur minimale du montant est 0.01",
"send_estimated_fee": "Estimation des frais :", "send_estimated_fee": "Estimation des frais :",
"send_fee": "Frais :", "send_fee": "Frais:",
"send_name": "Nom", "send_name": "Nom",
"send_new": "Nouveau", "send_new": "Nouveau",
"send_payment_id": "ID de paiement (optionnel)", "send_payment_id": "ID de paiement (optionnel)",
@ -672,9 +672,9 @@
"send_your_wallet": "Votre portefeuille (wallet)", "send_your_wallet": "Votre portefeuille (wallet)",
"sending": "Envoi", "sending": "Envoi",
"sent": "Envoyés", "sent": "Envoyés",
"service_health_disabled": "Le bulletin de santé du service est handicapé", "service_health_disabled": "Le bulletin de santé du service est désactivé.",
"service_health_disabled_message": "Ceci est la page du Bulletin de santé du service, vous pouvez activer cette page sous Paramètres -> Confidentialité", "service_health_disabled_message": "Ceci est la page du Bulletin de santé du service, vous pouvez activer cette page sous Paramètres -> Confidentialité",
"set_a_pin": "Régler une goupille", "set_a_pin": "Définir un code PIN",
"settings": "Paramètres", "settings": "Paramètres",
"settings_all": "TOUT", "settings_all": "TOUT",
"settings_allow_biometrical_authentication": "Autoriser l'authentification biométrique", "settings_allow_biometrical_authentication": "Autoriser l'authentification biométrique",
@ -704,7 +704,7 @@
"setup_pin": "Configurer le code PIN", "setup_pin": "Configurer le code PIN",
"setup_successful": "Votre code PIN a été configuré avec succès !", "setup_successful": "Votre code PIN a été configuré avec succès !",
"setup_totp_recommended": "Configurer TOTP", "setup_totp_recommended": "Configurer TOTP",
"setup_warning_2fa_text": "Vous devrez restaurer votre portefeuille à partir de la graine mnémonique.\n\nLe support Cake ne pourra pas vous aider si vous perdez l'accès à vos graines 2FA ou mnémoniques.\nCake 2FA est une seconde authentification pour certaines actions dans le portefeuille. Avant d'utiliser Cake 2FA, nous vous recommandons de lire le guide.Ce nest PAS aussi sécurisé que lentreposage frigorifique.\n\nSi vous perdez l'accès à votre application 2FA ou à vos clés TOTP, vous perdrez l'accès à ce portefeuille. ", "setup_warning_2fa_text": "Vous devrez restaurer votre portefeuille à partir de la graine mnémotechnique.\n\nLe support Cake ne pourra pas vous aider si vous perdez l'accès à vos graines 2FA ou mnémotechniques.\nCake 2FA est une seconde authentification pour certaines actions dans le portefeuille. Avant d'utiliser Cake 2FA, nous vous recommandons de lire le guide.Ce nest PAS aussi sécurisé que lentreposage frigorifique.\n\nSi vous perdez l'accès à votre application 2FA ou à vos clés TOTP, vous perdrez l'accès à ce portefeuille. ",
"setup_your_debit_card": "Configurer votre carte de débit", "setup_your_debit_card": "Configurer votre carte de débit",
"share": "Partager", "share": "Partager",
"share_address": "Partager l'adresse", "share_address": "Partager l'adresse",
@ -731,15 +731,15 @@
"silent_payments_scan_from_date": "Analyser à partir de la date", "silent_payments_scan_from_date": "Analyser à partir de la date",
"silent_payments_scan_from_date_or_blockheight": "Veuillez saisir la hauteur du bloc que vous souhaitez commencer à scanner pour les paiements silencieux entrants, ou utilisez la date à la place. Vous pouvez choisir si le portefeuille continue de numériser chaque bloc ou ne vérifie que la hauteur spécifiée.", "silent_payments_scan_from_date_or_blockheight": "Veuillez saisir la hauteur du bloc que vous souhaitez commencer à scanner pour les paiements silencieux entrants, ou utilisez la date à la place. Vous pouvez choisir si le portefeuille continue de numériser chaque bloc ou ne vérifie que la hauteur spécifiée.",
"silent_payments_scan_from_height": "Scan à partir de la hauteur du bloc", "silent_payments_scan_from_height": "Scan à partir de la hauteur du bloc",
"silent_payments_scanned_tip": "Scanné à la pointe! (${tip})", "silent_payments_scanned_tip": "SCANNEZ POUR DONNER ! (${tip})",
"silent_payments_scanning": "Payments silencieux SCANNING", "silent_payments_scanning": "Scan des paiements silencieux",
"silent_payments_settings": "Paramètres de paiement silencieux", "silent_payments_settings": "Paramètres de paiement silencieux",
"single_seed_wallets_group": "Portefeuilles de semences simples", "single_seed_wallets_group": "Portefeuilles de semences simples",
"slidable": "Glissable", "slidable": "Glissable",
"sort_by": "Trier par", "sort_by": "Trier par",
"spend_key_private": "Clef de dépense (spend key) (privée)", "spend_key_private": "Clef de dépense (spend key) (privée)",
"spend_key_public": "Clef de dépense (spend key) (publique)", "spend_key_public": "Clef de dépense (spend key) (publique)",
"status": "Statut : ", "status": "Statut: ",
"string_default": "Défaut", "string_default": "Défaut",
"subaddress_title": "Liste des sous-adresses", "subaddress_title": "Liste des sous-adresses",
"subaddresses": "Sous-adresses", "subaddresses": "Sous-adresses",
@ -752,7 +752,7 @@
"support_title_live_chat": "Support en direct", "support_title_live_chat": "Support en direct",
"support_title_other_links": "Autres liens d'assistance", "support_title_other_links": "Autres liens d'assistance",
"sweeping_wallet": "Portefeuille (wallet) de consolidation", "sweeping_wallet": "Portefeuille (wallet) de consolidation",
"sweeping_wallet_alert": "Cette opération ne devrait pas prendre longtemps. NE QUITTEZ PAS CET ÉCRAN OU LES FONDS CONSOLIDÉS POURRAIENT ÊTRE PERDUS", "sweeping_wallet_alert": "Cela ne devrait pas prendre longtemps. NE QUITTEZ PAS CET ÉCRAN OU LES FONDS TRANSFÉRÉS POURRAIENT ÊTRE PERDUS.",
"switchToETHWallet": "Veuillez passer à un portefeuille (wallet) Ethereum et réessayer", "switchToETHWallet": "Veuillez passer à un portefeuille (wallet) Ethereum et réessayer",
"switchToEVMCompatibleWallet": "Veuillez passer à un portefeuille compatible EVM et réessayer (Ethereum, Polygon)", "switchToEVMCompatibleWallet": "Veuillez passer à un portefeuille compatible EVM et réessayer (Ethereum, Polygon)",
"symbol": "Symbole", "symbol": "Symbole",
@ -779,7 +779,7 @@
"thorchain_contract_address_not_supported": "Thorchain ne prend pas en charge l'envoi à une adresse de contrat", "thorchain_contract_address_not_supported": "Thorchain ne prend pas en charge l'envoi à une adresse de contrat",
"thorchain_taproot_address_not_supported": "Le fournisseur de Thorchain ne prend pas en charge les adresses de tapoot. Veuillez modifier l'adresse ou sélectionner un autre fournisseur.", "thorchain_taproot_address_not_supported": "Le fournisseur de Thorchain ne prend pas en charge les adresses de tapoot. Veuillez modifier l'adresse ou sélectionner un autre fournisseur.",
"time": "${minutes}m ${seconds}s", "time": "${minutes}m ${seconds}s",
"tip": "Pourboire :", "tip": "Pourboire:",
"today": "Aujourd'hui", "today": "Aujourd'hui",
"token_contract_address": "Adresse du contrat de token", "token_contract_address": "Adresse du contrat de token",
"token_decimal": "Décimales de token", "token_decimal": "Décimales de token",
@ -928,8 +928,8 @@
"wallets": "Portefeuilles", "wallets": "Portefeuilles",
"warning": "Avertissement", "warning": "Avertissement",
"welcome": "Bienvenue sur", "welcome": "Bienvenue sur",
"welcome_subtitle_new_wallet": "Si vous souhaitez recommencer à créer un nouveau portefeuille ci-dessous et vous serez parti pour les courses.", "welcome_subtitle_new_wallet": "Si vous souhaitez repartir de zéro, appuyez sur Créer un nouveau portefeuille ci-dessous et vous serez prêt à commencer.",
"welcome_subtitle_restore_wallet": "Si vous avez un portefeuille existant que vous souhaitez apporter dans le gâteau, choisissez simplement restaurer le portefeuille existant et nous vous guiderons tout au long du processus.", "welcome_subtitle_restore_wallet": "Si vous avez un portefeuille existant que vous souhaitez importer dans Cake, choisissez simplement Restaurer un portefeuille existant et nous vous guiderons à travers le processus.",
"welcome_to_cakepay": "Bienvenue sur Cake Pay !", "welcome_to_cakepay": "Bienvenue sur Cake Pay !",
"what_is_silent_payments": "Qu'est-ce que les paiements silencieux?", "what_is_silent_payments": "Qu'est-ce que les paiements silencieux?",
"widgets_address": "Adresse", "widgets_address": "Adresse",

View file

@ -429,7 +429,7 @@
"nano_current_rep": "Representante atual", "nano_current_rep": "Representante atual",
"nano_gpt_thanks_message": "Obrigado por usar o Nanogpt! Lembre -se de voltar para o navegador após a conclusão da transação!", "nano_gpt_thanks_message": "Obrigado por usar o Nanogpt! Lembre -se de voltar para o navegador após a conclusão da transação!",
"nano_pick_new_rep": "Escolha um novo representante", "nano_pick_new_rep": "Escolha um novo representante",
"nanogpt_subtitle": "Todos os modelos mais recentes (GPT-4, Claude). \\ Nno assinatura, pagam com criptografia.", "nanogpt_subtitle": "Todos os modelos mais recentes (GPT-4, Claude). \\nSem assinatura, pague com criptomoeda.",
"narrow": "Estreito", "narrow": "Estreito",
"new_first_wallet_text": "Manter sua cripto segura é um pedaço de bolo", "new_first_wallet_text": "Manter sua cripto segura é um pedaço de bolo",
"new_node_testing": "Teste de novo nó", "new_node_testing": "Teste de novo nó",
@ -963,4 +963,4 @@
"you_will_get": "Converter para", "you_will_get": "Converter para",
"you_will_send": "Converter de", "you_will_send": "Converter de",
"yy": "aa" "yy": "aa"
} }

View file

@ -16,14 +16,14 @@ APP_ANDROID_TYPE=$1
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.18.2" MONERO_COM_VERSION="1.18.2"
MONERO_COM_BUILD_NUMBER=107 MONERO_COM_BUILD_NUMBER=108
MONERO_COM_BUNDLE_ID="com.monero.app" MONERO_COM_BUNDLE_ID="com.monero.app"
MONERO_COM_PACKAGE="com.monero.app" MONERO_COM_PACKAGE="com.monero.app"
MONERO_COM_SCHEME="monero.com" MONERO_COM_SCHEME="monero.com"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.21.2" CAKEWALLET_VERSION="4.21.2"
CAKEWALLET_BUILD_NUMBER=238 CAKEWALLET_BUILD_NUMBER=239
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet" CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet" CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
CAKEWALLET_SCHEME="cakewallet" CAKEWALLET_SCHEME="cakewallet"

View file

@ -13,13 +13,13 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
APP_IOS_TYPE=$1 APP_IOS_TYPE=$1
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.18.1" MONERO_COM_VERSION="1.18.2"
MONERO_COM_BUILD_NUMBER=104 MONERO_COM_BUILD_NUMBER=105
MONERO_COM_BUNDLE_ID="com.cakewallet.monero" MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.21.1" CAKEWALLET_VERSION="4.21.2"
CAKEWALLET_BUILD_NUMBER=283 CAKEWALLET_BUILD_NUMBER=284
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
HAVEN_NAME="Haven" HAVEN_NAME="Haven"

View file

@ -14,8 +14,8 @@ if [ -n "$1" ]; then
fi fi
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="1.11.1" CAKEWALLET_VERSION="1.11.2"
CAKEWALLET_BUILD_NUMBER=39 CAKEWALLET_BUILD_NUMBER=40
if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then
echo "Wrong app type." echo "Wrong app type."

View file

@ -21,8 +21,8 @@ MONERO_COM_BUILD_NUMBER=37
MONERO_COM_BUNDLE_ID="com.cakewallet.monero" MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="1.14.1" CAKEWALLET_VERSION="1.14.2"
CAKEWALLET_BUILD_NUMBER=96 CAKEWALLET_BUILD_NUMBER=98
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then