Merge remote-tracking branch 'origin/main' into electrum-sp-refactors

This commit is contained in:
Rafael Saes 2024-12-09 10:57:28 -03:00
commit a97b5525be
20 changed files with 111 additions and 96 deletions

View file

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

View file

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

View file

@ -99,6 +99,17 @@ Cake Wallet includes support for several cryptocurrencies, including:
* F-Droid: https://fdroid.cakelabs.com
* APK: https://github.com/cake-tech/cake_wallet/releases
### APK Verification
APK releases on GitHub, Accrescent, and F-Droid use the same key. They can easily be verified using [apksigner](https://developer.android.com/tools/apksigner#options-verify) or [AppVerifier](https://github.com/soupslurpr/AppVerifier).
See below for Cake Wallet's SHA-256 signing certificate hash:
```
com.cakewallet.cake_wallet
C5:40:53:AB:0F:10:D9:54:17:62:A3:DA:76:65:AE:3D:BA:5E:7C:74:3A:B4:F1:08:A5:34:9D:62:AC:10:6E:F5
```
# Support
We have 24/7 free support. Please contact support@cakewallet.com

View file

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

View file

@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cakewallet.cake_wallet">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Flutter needs it to communicate with the running application
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"
package="com.cakewallet.cake_wallet">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Flutter needs it to communicate with the running application
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 {
MoneroBalance({required this.fullBalance, required this.unlockedBalance, this.frozenBalance = 0})
: formattedFullBalance = moneroAmountToString(amount: fullBalance),
formattedUnlockedBalance = moneroAmountToString(amount: unlockedBalance - frozenBalance),
: formattedFullBalance = moneroAmountToString(amount: frozenBalance + fullBalance),
formattedUnlockedBalance = moneroAmountToString(amount: unlockedBalance),
formattedLockedBalance =
moneroAmountToString(amount: frozenBalance + fullBalance - unlockedBalance),
super(unlockedBalance, fullBalance);

View file

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

View file

@ -134,7 +134,7 @@ class AddressValidator extends TextValidator {
case CryptoCurrency.btcln:
pattern = '(lnbc|LNBC)([0-9]{1,}[a-zA-Z0-9]+)';
default:
pattern = '[0-9a-zA-Z]+';
return '';
}
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;
if (amountToGet == 0.0) return 0.0;
return isFixedRateMode ? amount / amountToGet : amountToGet / amount;
} catch (e) {
log(e.toString());

View file

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

View file

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

View file

@ -1,6 +1,5 @@
import 'dart:io';
import 'package:cake_wallet/core/secure_storage.dart';
import 'package:cake_wallet/entities/preferences_key.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/main.dart';
@ -21,7 +20,8 @@ class ExceptionHandler {
static const _coolDownDurationInDays = 7;
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();
if (_file == null) {
@ -103,7 +103,8 @@ class ExceptionHandler {
return;
}
if (_ignoreError(errorDetails.exception.toString())) {
if (_ignoreError(errorDetails.exception.toString()) ||
_ignoreError(errorDetails.stack.toString())) {
return;
}
@ -199,6 +200,13 @@ class ExceptionHandler {
"input stream error",
"invalid signature",
"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 {

View file

@ -534,16 +534,6 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
throw Exception('Priority is null for wallet type: ${wallet.type}');
}
if (hasCoinControl) {
bool isCoinSelected = false;
for (var coin in unspentCoinsListViewModel.items) {
isCoinSelected = isCoinSelected || (coin.isSending && !coin.isFrozen);
}
if (!isCoinSelected) {
throw Exception("No coin selected in coin control, you need to select a coin in order to spend");
}
}
switch (wallet.type) {
case WalletType.bitcoin:
case WalletType.litecoin:

View file

@ -39,8 +39,8 @@
"alert_notice": "Avis",
"all": "TOUT",
"all_coins": "Toutes les pièces",
"all_trades": "Tous échanges",
"all_transactions": "Toutes transactions",
"all_trades": "Tous les échanges",
"all_transactions": "Toutes les transactions",
"alphabetical": "Alphabétique",
"already_have_account": "Vous avez déjà un compte ?",
"always": "toujours",
@ -55,7 +55,7 @@
"arrive_in_this_address": "${currency} ${tag}arrivera à cette adresse",
"ascending": "Ascendant",
"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_minutes": " minutes",
"auth_store_incorrect_password": "Mauvais code PIN",
@ -85,7 +85,7 @@
"Blocks_remaining": "Blocs Restants : ${status}",
"bluetooth": "Bluetooth",
"bright_theme": "Vif",
"bump_fee": "Frais de bosse",
"bump_fee": "Augmenter les frais",
"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_bitcoin": "Acheter du Bitcoin",
@ -94,7 +94,7 @@
"buy_with": "Acheter avec",
"by_cake_pay": "par Cake Pay",
"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_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:",
@ -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_permission_is_required": "L'autorisation de la caméra est requise.\nVeuillez l'activer à partir des paramètres de l'application.",
"cancel": "Annuler",
"card_address": "Adresse :",
"card_address": "Adresse:",
"cardholder_agreement": "Contrat de titulaire de carte",
"cards": "Cartes",
"chains": "Chaînes",
@ -128,13 +128,13 @@
"choose_a_payment_method": "Choisissez un mode de paiement",
"choose_a_provider": "Choisissez un fournisseur",
"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_derivation": "Choisissez le chemin de dérivation du portefeuille",
"choose_from_available_options": "Choisissez parmi les options disponibles :",
"choose_derivation": "Choisir la dérivation du portefeuille",
"choose_from_available_options": "Choisissez parmi les options disponibles:",
"choose_one": "Choisissez-en un",
"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",
"clear": "Effacer",
"clearnet_link": "Lien Clearnet",
@ -145,12 +145,12 @@
"commit_transaction_amount_fee": "Valider la transaction\nMontant : ${amount}\nFrais : ${fee}",
"confirm": "Confirmer",
"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_content": "Acceptez-vous de déduire les frais de la production?",
"confirm_passphrase": "Confirmer la phrase passante",
"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",
"confirmed": "Solde confirmé",
"confirmed_tx": "Confirmé",
@ -178,7 +178,7 @@
"copy_id": "Copier l'ID",
"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.",
"countries": "Des pays",
"countries": "Pays",
"create_account": "Créer un compte",
"create_backup": "Créer une sauvegarde",
"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_error": "Erreur : ${description}",
"creation_date": "Date de création",
"custom": "personnalisé",
"custom_drag": "Custom (maintenir et traîner)",
"custom": "Personnalisé",
"custom_drag": "Personnalisé (Maintenir et Glisser)",
"custom_redeem_amount": "Montant d'échange personnalisé",
"custom_value": "Valeur personnalisée",
"dark_theme": "Sombre",
@ -245,7 +245,7 @@
"enable": "Activer",
"enable_mempool_api": "API Mempool pour les frais et dates précis",
"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é",
"enter_amount": "Entrez le montant",
"enter_backup_password": "Entrez le mot de passe de sauvegarde ici",
@ -289,7 +289,7 @@
"event": "Événement",
"events": "Événements",
"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_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.",
@ -370,11 +370,11 @@
"is_percentage": "est",
"last_30_days": "30 derniers jours",
"learn_more": "En savoir plus",
"ledger_connection_error": "Impossible de se connecter à votre grand livre. Veuillez réessayer.",
"ledger_error_device_locked": "Le grand livre est verrouillé",
"ledger_connection_error": "Impossible de se connecter à votre Ledger. Veuillez réessayer.",
"ledger_error_device_locked": "La Ledger est verrouillé",
"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_please_enable_bluetooth": "Veuillez activer Bluetooth pour détecter votre grand livre",
"ledger_error_wrong_app": "Veuillez vous assurer d'ouvrir la bonne application sur votre Ledger",
"ledger_please_enable_bluetooth": "Veuillez activer le Bluetooth pour détecter votre Ledger",
"light_theme": "Clair",
"litecoin_enable_mweb_sync": "Activer la numérisation 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_logs": "Journaux MWEB",
"litecoin_mweb_node": "Node MWEB",
"litecoin_mweb_pegin": "Entraver",
"litecoin_mweb_pegout": "Crever",
"litecoin_mweb_pegin": "Dépôt Peg",
"litecoin_mweb_pegout": "Retrait Peg",
"litecoin_mweb_scanning": "Scann 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",
@ -395,9 +395,9 @@
"live_fee_rates": "Taux de frais en direct via l'API",
"load_more": "Charger plus",
"loading_your_wallet": "Chargement de votre portefeuille (wallet)",
"login": "Utilisateur",
"login": "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.",
"manage_nodes": "Gérer les nœuds",
"manage_pow_nodes": "Gérer les nœuds PoW",
@ -428,9 +428,9 @@
"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_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.",
"narrow": "Étroit",
"new_first_wallet_text": "Garder votre crypto en sécurité est un morceau de gâteau",
"nanogpt_subtitle": "Tous les modèles les plus récents (GPT-4, Claude).\nPas d'abonnement, payez avec vos crypto-monnaies.",
"narrow": "Rédruit",
"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_subaddress_create": "Créer",
"new_subaddress_label_name": "Nom",
@ -459,7 +459,7 @@
"note_optional": "Note (optionnelle)",
"note_tap_to_change": "Note (appuyez pour changer)",
"nullURIError": "L'URI est nul",
"offer_expires_in": "L'Offre expire dans : ",
"offer_expires_in": "L'Offre expire dans: ",
"offline": "Hors ligne",
"ok": "OK",
"old_fee": "Anciens",
@ -517,7 +517,7 @@
"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_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",
"provider_error": "Erreur de ${provider}",
"public_key": "Clef publique",
@ -535,8 +535,8 @@
"reconnect": "Reconnecter",
"reconnect_alert_text": "Êtes vous certain de vouloir vous reconnecter ?",
"reconnection": "Reconnexion",
"red_dark_theme": "Thème rouge noir",
"red_light_theme": "Thème de la lumière rouge",
"red_dark_theme": "Thème rouge sombre",
"red_light_theme": "Thème rouge clair",
"redeemed": "Converties",
"refund_address": "Adresse de Remboursement",
"reject": "Rejeter",
@ -567,9 +567,9 @@
"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_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_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_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",
@ -637,10 +637,10 @@
"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_title": "Phrase secrète (seed)",
"seedtype": "Type de type graine",
"seedtype_alert_content": "Le partage de graines avec d'autres portefeuilles n'est possible qu'avec Bip39 SeedType.",
"seedtype_alert_title": "Alerte de type SeedType",
"seedtype_legacy": "Héritage (25 mots)",
"seedtype": "Type de graine",
"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 Type de Graine",
"seedtype_legacy": "Legacy (25 words)",
"seedtype_polyseed": "Polyseed (16 mots)",
"seedtype_wownero": "WOWNERO (14 mots)",
"select_backup_file": "Sélectionnez le fichier de sauvegarde",
@ -653,13 +653,13 @@
"sell_monero_com_alert_content": "La vente de Monero n'est pas encore prise en charge",
"send": "Envoyer",
"send_address": "adresse ${cryptoCurrency}",
"send_amount": "Montant :",
"send_amount": "Montant:",
"send_change_to_you": "Changer, pour vous:",
"send_creating_transaction": "Création de la transaction",
"send_error_currency": "La monnaie ne peut contenir que des nombres",
"send_error_minimum_value": "La valeur minimale du montant est 0.01",
"send_estimated_fee": "Estimation des frais :",
"send_fee": "Frais :",
"send_fee": "Frais:",
"send_name": "Nom",
"send_new": "Nouveau",
"send_payment_id": "ID de paiement (optionnel)",
@ -673,9 +673,9 @@
"send_your_wallet": "Votre portefeuille (wallet)",
"sending": "Envoi",
"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é",
"set_a_pin": "Régler une goupille",
"set_a_pin": "Définir un code PIN",
"settings": "Paramètres",
"settings_all": "TOUT",
"settings_allow_biometrical_authentication": "Autoriser l'authentification biométrique",
@ -705,7 +705,7 @@
"setup_pin": "Configurer le code PIN",
"setup_successful": "Votre code PIN a été configuré avec succès !",
"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",
"share": "Partager",
"share_address": "Partager l'adresse",
@ -733,15 +733,15 @@
"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_height": "Scan à partir de la hauteur du bloc",
"silent_payments_scanned_tip": "Scanné à la pointe! (${tip})",
"silent_payments_scanning": "Payments silencieux SCANNING",
"silent_payments_scanned_tip": "SCANNEZ POUR DONNER ! (${tip})",
"silent_payments_scanning": "Scan des paiements silencieux",
"silent_payments_settings": "Paramètres de paiement silencieux",
"single_seed_wallets_group": "Portefeuilles de semences simples",
"slidable": "Glissable",
"sort_by": "Trier par",
"spend_key_private": "Clef de dépense (spend key) (privée)",
"spend_key_public": "Clef de dépense (spend key) (publique)",
"status": "Statut : ",
"status": "Statut: ",
"string_default": "Défaut",
"subaddress_title": "Liste des sous-adresses",
"subaddresses": "Sous-adresses",
@ -754,7 +754,7 @@
"support_title_live_chat": "Support en direct",
"support_title_other_links": "Autres liens d'assistance",
"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",
"switchToEVMCompatibleWallet": "Veuillez passer à un portefeuille compatible EVM et réessayer (Ethereum, Polygon)",
"symbol": "Symbole",
@ -781,7 +781,7 @@
"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.",
"time": "${minutes}m ${seconds}s",
"tip": "Pourboire :",
"tip": "Pourboire:",
"today": "Aujourd'hui",
"token_contract_address": "Adresse du contrat de token",
"token_decimal": "Décimales de token",
@ -930,8 +930,8 @@
"wallets": "Portefeuilles",
"warning": "Avertissement",
"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_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_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 importer dans Cake, choisissez simplement Restaurer un portefeuille existant et nous vous guiderons à travers le processus.",
"welcome_to_cakepay": "Bienvenue sur Cake Pay !",
"what_is_silent_payments": "Qu'est-ce que les paiements silencieux?",
"widgets_address": "Adresse",

View file

@ -429,7 +429,7 @@
"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_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",
"new_first_wallet_text": "Manter sua cripto segura é um pedaço de bolo",
"new_node_testing": "Teste de novo nó",
@ -965,4 +965,4 @@
"you_will_get": "Converter para",
"you_will_send": "Converter de",
"yy": "aa"
}
}

View file

@ -15,15 +15,15 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
APP_ANDROID_TYPE=$1
MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.18.1"
MONERO_COM_BUILD_NUMBER=106
MONERO_COM_VERSION="1.18.2"
MONERO_COM_BUILD_NUMBER=108
MONERO_COM_BUNDLE_ID="com.monero.app"
MONERO_COM_PACKAGE="com.monero.app"
MONERO_COM_SCHEME="monero.com"
CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.21.1"
CAKEWALLET_BUILD_NUMBER=237
CAKEWALLET_VERSION="4.21.2"
CAKEWALLET_BUILD_NUMBER=239
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
CAKEWALLET_SCHEME="cakewallet"

View file

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

View file

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

View file

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