From 69a77d4f71a4d4c0615b679779aa146638f4d7ac Mon Sep 17 00:00:00 2001 From: Omar Hatem Date: Mon, 16 Oct 2023 16:44:20 +0300 Subject: [PATCH 01/10] New versions 4.10.1 and 1.7.1 (#1127) --- assets/text/Release_Notes.txt | 6 ++---- ios/Podfile.lock | 2 +- scripts/android/app_env.sh | 8 ++++---- scripts/ios/app_config.sh | 0 scripts/ios/app_env.sh | 8 ++++---- scripts/macos/app_env.sh | 4 ++-- tool/configure.dart | 6 ++++-- 7 files changed, 17 insertions(+), 17 deletions(-) mode change 100644 => 100755 scripts/ios/app_config.sh diff --git a/assets/text/Release_Notes.txt b/assets/text/Release_Notes.txt index 50c88833d..795ec3427 100644 --- a/assets/text/Release_Notes.txt +++ b/assets/text/Release_Notes.txt @@ -1,5 +1,3 @@ -Add Nano wallet -Add WalletConnect to connect your ETH wallet with your favorite dApp -Support getting Addresses from ENS and Mastodon +Add BitcoinCash (BCH) Bug fixes -Minor enhancements \ No newline at end of file +Accessibility enhancements \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 6f441c587..acc3b8824 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -272,7 +272,7 @@ SPEC CHECKSUMS: DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 file_picker: ce3938a0df3cc1ef404671531facef740d03f920 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721 + flutter_inappwebview: 3d32228f1304635e7c028b0d4252937730bbc6cf flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83 flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be in_app_review: 318597b3a06c22bb46dc454d56828c85f444f99d diff --git a/scripts/android/app_env.sh b/scripts/android/app_env.sh index 771c1f89a..356cf03cd 100644 --- a/scripts/android/app_env.sh +++ b/scripts/android/app_env.sh @@ -15,15 +15,15 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN) APP_ANDROID_TYPE=$1 MONERO_COM_NAME="Monero.com" -MONERO_COM_VERSION="1.7.0" -MONERO_COM_BUILD_NUMBER=61 +MONERO_COM_VERSION="1.7.1" +MONERO_COM_BUILD_NUMBER=62 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.10.0" -CAKEWALLET_BUILD_NUMBER=175 +CAKEWALLET_VERSION="4.10.1" +CAKEWALLET_BUILD_NUMBER=176 CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet" CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet" CAKEWALLET_SCHEME="cakewallet" diff --git a/scripts/ios/app_config.sh b/scripts/ios/app_config.sh old mode 100644 new mode 100755 diff --git a/scripts/ios/app_env.sh b/scripts/ios/app_env.sh index aa3116418..ae5a90bc3 100644 --- a/scripts/ios/app_env.sh +++ b/scripts/ios/app_env.sh @@ -13,13 +13,13 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN) APP_IOS_TYPE=$1 MONERO_COM_NAME="Monero.com" -MONERO_COM_VERSION="1.7.0" -MONERO_COM_BUILD_NUMBER=59 +MONERO_COM_VERSION="1.7.1" +MONERO_COM_BUILD_NUMBER=60 MONERO_COM_BUNDLE_ID="com.cakewallet.monero" CAKEWALLET_NAME="Cake Wallet" -CAKEWALLET_VERSION="4.10.0" -CAKEWALLET_BUILD_NUMBER=189 +CAKEWALLET_VERSION="4.10.1" +CAKEWALLET_BUILD_NUMBER=190 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" HAVEN_NAME="Haven" diff --git a/scripts/macos/app_env.sh b/scripts/macos/app_env.sh index d649d752d..37c2b3441 100755 --- a/scripts/macos/app_env.sh +++ b/scripts/macos/app_env.sh @@ -15,8 +15,8 @@ if [ -n "$1" ]; then fi CAKEWALLET_NAME="Cake Wallet" -CAKEWALLET_VERSION="1.3.0" -CAKEWALLET_BUILD_NUMBER=36 +CAKEWALLET_VERSION="1.3.1" +CAKEWALLET_BUILD_NUMBER=37 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then diff --git a/tool/configure.dart b/tool/configure.dart index 534aeef57..90e275994 100644 --- a/tool/configure.dart +++ b/tool/configure.dart @@ -51,6 +51,7 @@ Future main(List args) async { Future generateBitcoin(bool hasImplementation) async { final outputFile = File(bitcoinOutputPath); const bitcoinCommonHeaders = """ +import 'package:cw_core/unspent_transaction_output.dart'; import 'package:cw_core/wallet_credentials.dart'; import 'package:cw_core/wallet_info.dart'; import 'package:cw_core/transaction_priority.dart'; @@ -98,7 +99,7 @@ abstract class Bitcoin { int formatterStringDoubleToBitcoinAmount(String amount); String bitcoinTransactionPriorityWithLabel(TransactionPriority priority, int rate); - List getUnspents(Object wallet); + List getUnspents(Object wallet); void updateUnspents(Object wallet); WalletService createBitcoinWalletService(Box walletInfoSource, Box unspentCoinSource); WalletService createLitecoinWalletService(Box walletInfoSource, Box unspentCoinSource); @@ -577,7 +578,7 @@ Future generateBitcoinCash(bool hasImplementation) async { const bitcoinCashCommonHeaders = """ import 'dart:typed_data'; -import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; +import 'package:cw_core/unspent_transaction_output.dart'; import 'package:cw_core/transaction_priority.dart'; import 'package:cw_core/unspent_coins_info.dart'; import 'package:cw_core/wallet_credentials.dart'; @@ -587,6 +588,7 @@ import 'package:hive/hive.dart'; """; const bitcoinCashCWHeaders = """ import 'package:cw_bitcoin_cash/cw_bitcoin_cash.dart'; +import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; """; const bitcoinCashCwPart = "part 'cw_bitcoin_cash.dart';"; const bitcoinCashContent = """ From 98a9edc656b98ea4373a7265c9a973780b903c87 Mon Sep 17 00:00:00 2001 From: Matthew Fosse Date: Tue, 17 Oct 2023 11:59:41 -0400 Subject: [PATCH 02/10] fix nano sending, update restore page wording, and other minor fixes (#1130) * fix nano sending, update restore page wording, and other minor fixes * fix bch address parsing * minor code enhancement [skip ci] * Register the main secure storage as the long lived instance of secure storage throughout the app session --------- Co-authored-by: Serhii Co-authored-by: OmarHatem --- .../lib/nano_wallet_creation_credentials.dart | 13 +++++---- lib/di.dart | 3 +- lib/entities/parse_address_from_domain.dart | 8 ++++- lib/main.dart | 5 ++-- lib/nano/cw_nano.dart | 18 ++++++++++-- .../wallet_restore_from_keys_form.dart | 9 +++++- lib/src/widgets/seed_widget.dart | 3 +- lib/view_model/send/send_view_model.dart | 29 ++++++++----------- res/values/strings_ar.arb | 6 ++-- res/values/strings_bg.arb | 6 ++-- res/values/strings_cs.arb | 6 ++-- res/values/strings_de.arb | 6 ++-- res/values/strings_en.arb | 6 ++-- res/values/strings_es.arb | 6 ++-- res/values/strings_fr.arb | 6 ++-- res/values/strings_ha.arb | 6 ++-- res/values/strings_hi.arb | 6 ++-- res/values/strings_hr.arb | 6 ++-- res/values/strings_id.arb | 6 ++-- res/values/strings_it.arb | 6 ++-- res/values/strings_ja.arb | 6 ++-- res/values/strings_ko.arb | 6 ++-- res/values/strings_my.arb | 6 ++-- res/values/strings_nl.arb | 6 ++-- res/values/strings_pl.arb | 6 ++-- res/values/strings_pt.arb | 6 ++-- res/values/strings_ru.arb | 6 ++-- res/values/strings_th.arb | 6 ++-- res/values/strings_tl.arb | 6 ++-- res/values/strings_tr.arb | 6 ++-- res/values/strings_uk.arb | 6 ++-- res/values/strings_ur.arb | 6 ++-- res/values/strings_yo.arb | 6 ++-- res/values/strings_zh.arb | 6 ++-- 34 files changed, 160 insertions(+), 84 deletions(-) diff --git a/cw_nano/lib/nano_wallet_creation_credentials.dart b/cw_nano/lib/nano_wallet_creation_credentials.dart index 84531e24a..3616fcf44 100644 --- a/cw_nano/lib/nano_wallet_creation_credentials.dart +++ b/cw_nano/lib/nano_wallet_creation_credentials.dart @@ -10,13 +10,11 @@ class NanoRestoreWalletFromSeedCredentials extends WalletCredentials { NanoRestoreWalletFromSeedCredentials({ required String name, required this.mnemonic, - int height = 0, String? password, DerivationType? derivationType, }) : super( name: name, password: password, - height: height, derivationType: derivationType, ); @@ -33,9 +31,12 @@ class NanoRestoreWalletFromKeysCredentials extends WalletCredentials { required String name, required String password, required this.seedKey, - this.derivationType, - }) : super(name: name, password: password); + DerivationType? derivationType, + }) : super( + name: name, + password: password, + derivationType: derivationType, + ); final String seedKey; - final DerivationType? derivationType; -} \ No newline at end of file +} diff --git a/lib/di.dart b/lib/di.dart index 1576c378b..cfe2cfdc5 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -248,6 +248,7 @@ Future setup({ required Box ordersSource, required Box unspentCoinsInfoSource, required Box anonpayInvoiceInfoSource, + required FlutterSecureStorage secureStorage, }) async { _walletInfoSource = walletInfoSource; _nodeSource = nodeSource; @@ -289,7 +290,7 @@ Future setup({ getIt.registerFactory>(() => _nodeSource); getIt.registerFactory>(() => _powNodeSource, instanceName: Node.boxName + "pow"); - getIt.registerSingleton(FlutterSecureStorage()); + getIt.registerSingleton(secureStorage); getIt.registerSingleton(AuthenticationStore()); getIt.registerSingleton(WalletListStore()); getIt.registerSingleton(NodeListStoreBase.instance); diff --git a/lib/entities/parse_address_from_domain.dart b/lib/entities/parse_address_from_domain.dart index 14bfe2f7f..9d274fbcc 100644 --- a/lib/entities/parse_address_from_domain.dart +++ b/lib/entities/parse_address_from_domain.dart @@ -46,7 +46,13 @@ class AddressResolver { } final match = RegExp(addressPattern).firstMatch(raw); - return match?.group(0)?.replaceAll(RegExp('[^0-9a-zA-Z]'), ''); + return match?.group(0)?.replaceAllMapped(RegExp('[^0-9a-zA-Z]|bitcoincash:|nano_'), (Match match) { + String group = match.group(0)!; + if (group.startsWith('bitcoincash:') || group.startsWith('nano_')) { + return group; + } + return ''; + }); } Future resolve(String text, String ticker) async { diff --git a/lib/main.dart b/lib/main.dart index 98ba1e195..d5b0e2f81 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -163,7 +163,7 @@ Future initializeAppConfigs() async { secureStorage: secureStorage, anonpayInvoiceInfo: anonpayInvoiceInfo, initialMigrationVersion: 23); - } +} Future initialSetup( {required SharedPreferences sharedPreferences, @@ -202,7 +202,8 @@ Future initialSetup( transactionDescriptionBox: transactionDescriptions, ordersSource: ordersSource, anonpayInvoiceInfoSource: anonpayInvoiceInfo, - unspentCoinsInfoSource: unspentCoinsInfoSource); + unspentCoinsInfoSource: unspentCoinsInfoSource, + secureStorage: secureStorage); await bootstrap(navigatorKey); monero?.onStartup(); } diff --git a/lib/nano/cw_nano.dart b/lib/nano/cw_nano.dart index cd0f0ca8a..778b2584a 100644 --- a/lib/nano/cw_nano.dart +++ b/lib/nano/cw_nano.dart @@ -406,6 +406,13 @@ class CWNanoUtil extends NanoUtil { late String publicAddress; if (seedKey != null) { + if (seedKey.length == 64) { + try { + mnemonic = nanoUtil!.seedToMnemonic(seedKey); + } catch (e) { + print("not a valid 'nano' seed key"); + } + } if (derivationType == DerivationType.bip39) { publicAddress = await hdSeedToAddress(seedKey, 0); } else if (derivationType == DerivationType.nano) { @@ -429,7 +436,8 @@ class CWNanoUtil extends NanoUtil { AccountInfoResponse? accountInfo = await nanoClient.getAccountInfo(publicAddress); if (accountInfo == null) { - accountInfo = AccountInfoResponse(frontier: "", balance: "0", representative: "", confirmationHeight: 0); + accountInfo = AccountInfoResponse( + frontier: "", balance: "0", representative: "", confirmationHeight: 0); } accountInfo.address = publicAddress; return accountInfo; @@ -449,7 +457,11 @@ class CWNanoUtil extends NanoUtil { if (seedKey?.length == 128) { return [DerivationType.bip39]; } else if (seedKey?.length == 64) { - return [DerivationType.nano]; + try { + mnemonic = nanoUtil!.seedToMnemonic(seedKey!); + } catch (e) { + print("not a valid 'nano' seed key"); + } } late String publicAddressStandard; @@ -503,7 +515,7 @@ class CWNanoUtil extends NanoUtil { // we don't know for sure: return [DerivationType.nano, DerivationType.bip39]; } catch (e) { - return [DerivationType.unknown]; + return [DerivationType.nano, DerivationType.bip39]; } } } diff --git a/lib/src/screens/restore/wallet_restore_from_keys_form.dart b/lib/src/screens/restore/wallet_restore_from_keys_form.dart index e42488183..2c0dfa53f 100644 --- a/lib/src/screens/restore/wallet_restore_from_keys_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_keys_form.dart @@ -124,9 +124,16 @@ class WalletRestoreFromKeysFromState extends State { Widget _restoreFromKeysFormFields() { if (widget.displayPrivateKeyField) { + // the term "private key" isn't actually what we're accepting here, and it's confusing to + // users of the nano community, what this form actually accepts (when importing for nano) is a nano seed in it's hex form, referred to in code as a "seed key" + // so we should change the placeholder text to reflect this + // supporting actual nano private keys is possible, but it's super niche in the nano community / they're not really used + + bool nanoBased = widget.walletRestoreViewModel.type == WalletType.nano || + widget.walletRestoreViewModel.type == WalletType.banano; return AddressTextField( controller: privateKeyController, - placeholder: S.of(context).private_key, + placeholder: nanoBased ? S.of(context).seed_key : S.of(context).private_key, options: [AddressTextFieldOption.paste], buttonColor: Theme.of(context).hintColor, onPushPasteButton: (_) { diff --git a/lib/src/widgets/seed_widget.dart b/lib/src/widgets/seed_widget.dart index 7015e0acf..bf9a85b32 100644 --- a/lib/src/widgets/seed_widget.dart +++ b/lib/src/widgets/seed_widget.dart @@ -1,3 +1,4 @@ +import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/themes/extensions/cake_text_theme.dart'; import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/src/widgets/validable_annotated_editable_text.dart'; @@ -75,7 +76,7 @@ class SeedWidgetState extends State { Positioned( top: 10, left: 0, - child: Text('Enter your seed', + child: Text(S.of(context).enter_seed_phrase, style: TextStyle( fontSize: 16.0, color: Theme.of(context).hintColor))), Padding( diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart index 719298675..be822aff3 100644 --- a/lib/view_model/send/send_view_model.dart +++ b/lib/view_model/send/send_view_model.dart @@ -185,15 +185,15 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor @computed bool get hasCoinControl => wallet.type == WalletType.bitcoin || - wallet.type == WalletType.litecoin || - wallet.type == WalletType.monero || - wallet.type == WalletType.bitcoinCash; + wallet.type == WalletType.litecoin || + wallet.type == WalletType.monero || + wallet.type == WalletType.bitcoinCash; @computed bool get isElectrumWallet => wallet.type == WalletType.bitcoin || - wallet.type == WalletType.litecoin || - wallet.type == WalletType.bitcoinCash; + wallet.type == WalletType.litecoin || + wallet.type == WalletType.bitcoinCash; @computed bool get hasFees => wallet.type != WalletType.nano && wallet.type != WalletType.banano; @@ -281,7 +281,6 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor List conditionsList = []; for (var output in outputs) { - final show = checkThroughChecksToDisplayTOTP(output.extractedAddress); conditionsList.add(show); } @@ -350,31 +349,27 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor Object _credentials() { final priority = _settingsStore.priority[wallet.type]; - if (priority == null) throw Exception('Priority is null for wallet type: ${wallet.type}'); + if (priority == null && wallet.type != WalletType.nano) { + throw Exception('Priority is null for wallet type: ${wallet.type}'); + } switch (wallet.type) { case WalletType.bitcoin: case WalletType.litecoin: case WalletType.bitcoinCash: - return bitcoin!.createBitcoinTransactionCredentials(outputs, priority: priority); + return bitcoin!.createBitcoinTransactionCredentials(outputs, priority: priority!); case WalletType.monero: return monero! - .createMoneroTransactionCreationCredentials(outputs: outputs, priority: priority); + .createMoneroTransactionCreationCredentials(outputs: outputs, priority: priority!); case WalletType.haven: return haven!.createHavenTransactionCreationCredentials( - outputs: outputs, priority: priority, assetType: selectedCryptoCurrency.title); + outputs: outputs, priority: priority!, assetType: selectedCryptoCurrency.title); case WalletType.ethereum: - final priority = _settingsStore.priority[wallet.type]; - - if (priority == null) { - throw Exception('Priority is null for wallet type: ${wallet.type}'); - } - return ethereum!.createEthereumTransactionCredentials(outputs, - priority: priority, currency: selectedCryptoCurrency); + priority: priority!, currency: selectedCryptoCurrency); case WalletType.nano: return nano!.createNanoTransactionCredentials(outputs); default: diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index a730a9dd8..fcb1b090c 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -717,5 +717,7 @@ "message": "ﺔﻟﺎﺳﺭ", "do_not_have_enough_gas_asset": "ليس لديك ما يكفي من ${currency} لإجراء معاملة وفقًا لشروط شبكة blockchain الحالية. أنت بحاجة إلى المزيد من ${currency} لدفع رسوم شبكة blockchain، حتى لو كنت ترسل أصلًا مختلفًا.", "totp_auth_url": "TOTP ﺔﻗﺩﺎﺼﻤﻟ URL ﻥﺍﻮﻨﻋ", - "awaitDAppProcessing": ".ﺔﺠﻟﺎﻌﻤﻟﺍ ﻦﻣ dApp ﻲﻬﺘﻨﻳ ﻰﺘﺣ ﺭﺎﻈﺘﻧﻻﺍ ﻰﺟﺮﻳ" -} + "awaitDAppProcessing": ".ﺔﺠﻟﺎﻌﻤﻟﺍ ﻦﻣ dApp ﻲﻬﺘﻨﻳ ﻰﺘﺣ ﺭﺎﻈﺘﻧﻻﺍ ﻰﺟﺮﻳ", + "seed_key": "مفتاح البذور", + "enter_seed_phrase": "أدخل عبارة البذور الخاصة بك" +} \ No newline at end of file diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index 212f7f2a8..d85b30118 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -713,5 +713,7 @@ "message": "Съобщение", "do_not_have_enough_gas_asset": "Нямате достатъчно ${currency}, за да извършите транзакция с текущите условия на блокчейн мрежата. Имате нужда от повече ${currency}, за да платите таксите за блокчейн мрежа, дори ако изпращате различен актив.", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "Моля, изчакайте dApp да завърши обработката." -} + "awaitDAppProcessing": "Моля, изчакайте dApp да завърши обработката.", + "seed_key": "Ключ за семена", + "enter_seed_phrase": "Въведете вашата фраза за семена" +} \ No newline at end of file diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index 3042cadfe..998f0b915 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -713,5 +713,7 @@ "message": "Zpráva", "do_not_have_enough_gas_asset": "Nemáte dostatek ${currency} k provedení transakce s aktuálními podmínkami blockchainové sítě. K placení poplatků za blockchainovou síť potřebujete více ${currency}, i když posíláte jiné aktivum.", "totp_auth_url": "URL AUTH TOTP", - "awaitDAppProcessing": "Počkejte, až dApp dokončí zpracování." -} + "awaitDAppProcessing": "Počkejte, až dApp dokončí zpracování.", + "seed_key": "Klíč semen", + "enter_seed_phrase": "Zadejte svou frázi semen" +} \ No newline at end of file diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 9971aff0e..82575200f 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -721,5 +721,7 @@ "message": "Nachricht", "do_not_have_enough_gas_asset": "Sie verfügen nicht über genügend ${currency}, um eine Transaktion unter den aktuellen Bedingungen des Blockchain-Netzwerks durchzuführen. Sie benötigen mehr ${currency}, um die Gebühren für das Blockchain-Netzwerk zu bezahlen, auch wenn Sie einen anderen Vermögenswert senden.", "totp_auth_url": "TOTP-Auth-URL", - "awaitDAppProcessing": "Bitte warten Sie, bis die dApp die Verarbeitung abgeschlossen hat." -} + "awaitDAppProcessing": "Bitte warten Sie, bis die dApp die Verarbeitung abgeschlossen hat.", + "seed_key": "Samenschlüssel", + "enter_seed_phrase": "Geben Sie Ihre Samenphrase ein" +} \ No newline at end of file diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index b981c0177..f30d224c0 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -722,5 +722,7 @@ "message": "Message", "do_not_have_enough_gas_asset": "You do not have enough ${currency} to make a transaction with the current blockchain network conditions. You need more ${currency} to pay blockchain network fees, even if you are sending a different asset.", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "Kindly wait for the dApp to finish processing." -} + "awaitDAppProcessing": "Kindly wait for the dApp to finish processing.", + "seed_key": "Seed key", + "enter_seed_phrase": "Enter your seed phrase" +} \ No newline at end of file diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 01bd3207e..049a83e40 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -721,5 +721,7 @@ "message": "Mensaje", "do_not_have_enough_gas_asset": "No tienes suficiente ${currency} para realizar una transacción con las condiciones actuales de la red blockchain. Necesita más ${currency} para pagar las tarifas de la red blockchain, incluso si envía un activo diferente.", "totp_auth_url": "URL de autenticación TOTP", - "awaitDAppProcessing": "Espere a que la dApp termine de procesarse." -} + "awaitDAppProcessing": "Espere a que la dApp termine de procesarse.", + "seed_key": "Llave de semilla", + "enter_seed_phrase": "Ingrese su frase de semillas" +} \ No newline at end of file diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index f171cbb68..e6516fb87 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -721,5 +721,7 @@ "message": "Message", "do_not_have_enough_gas_asset": "Vous n'avez pas assez de ${currency} pour effectuer une transaction avec les conditions actuelles du réseau blockchain. Vous avez besoin de plus de ${currency} pour payer les frais du réseau blockchain, même si vous envoyez un actif différent.", "totp_auth_url": "URL D'AUTORISATION TOTP", - "awaitDAppProcessing": "Veuillez attendre que le dApp termine le traitement." -} + "awaitDAppProcessing": "Veuillez attendre que le dApp termine le traitement.", + "seed_key": "Clé de graines", + "enter_seed_phrase": "Entrez votre phrase de semence" +} \ No newline at end of file diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 917cad8a9..7d8e8969c 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -699,5 +699,7 @@ "message": "Sako", "do_not_have_enough_gas_asset": "Ba ku da isassun ${currency} don yin ma'amala tare da yanayin cibiyar sadarwar blockchain na yanzu. Kuna buƙatar ƙarin ${currency} don biyan kuɗaɗen cibiyar sadarwar blockchain, koda kuwa kuna aika wata kadara daban.", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "Da fatan za a jira dApp ya gama aiki." -} + "awaitDAppProcessing": "Da fatan za a jira dApp ya gama aiki.", + "seed_key": "Maɓallin iri", + "enter_seed_phrase": "Shigar da Sert Sentarku" +} \ No newline at end of file diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 104c871bf..4a9e6b284 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -721,5 +721,7 @@ "message": "संदेश", "do_not_have_enough_gas_asset": "वर्तमान ब्लॉकचेन नेटवर्क स्थितियों में लेनदेन करने के लिए आपके पास पर्याप्त ${currency} नहीं है। ब्लॉकचेन नेटवर्क शुल्क का भुगतान करने के लिए आपको अधिक ${currency} की आवश्यकता है, भले ही आप एक अलग संपत्ति भेज रहे हों।", "totp_auth_url": "TOTP प्रामाणिक यूआरएल", - "awaitDAppProcessing": "कृपया डीएपी की प्रोसेसिंग पूरी होने तक प्रतीक्षा करें।" -} + "awaitDAppProcessing": "कृपया डीएपी की प्रोसेसिंग पूरी होने तक प्रतीक्षा करें।", + "seed_key": "बीज कुंजी", + "enter_seed_phrase": "अपना बीज वाक्यांश दर्ज करें" +} \ No newline at end of file diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 93ab87319..17391a6d7 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -719,5 +719,7 @@ "message": "Poruka", "do_not_have_enough_gas_asset": "Nemate dovoljno ${currency} da izvršite transakciju s trenutačnim uvjetima blockchain mreže. Trebate više ${currency} da platite naknade za blockchain mrežu, čak i ako šaljete drugu imovinu.", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "Molimo pričekajte da dApp završi obradu." -} + "awaitDAppProcessing": "Molimo pričekajte da dApp završi obradu.", + "seed_key": "Sjemenski ključ", + "enter_seed_phrase": "Unesite svoju sjemensku frazu" +} \ No newline at end of file diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index f6b20c213..5330ec96c 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -709,5 +709,7 @@ "message": "Pesan", "do_not_have_enough_gas_asset": "Anda tidak memiliki cukup ${currency} untuk melakukan transaksi dengan kondisi jaringan blockchain saat ini. Anda memerlukan lebih banyak ${currency} untuk membayar biaya jaringan blockchain, meskipun Anda mengirimkan aset yang berbeda.", "totp_auth_url": "URL Otentikasi TOTP", - "awaitDAppProcessing": "Mohon tunggu hingga dApp menyelesaikan pemrosesan." -} + "awaitDAppProcessing": "Mohon tunggu hingga dApp menyelesaikan pemrosesan.", + "seed_key": "Kunci benih", + "enter_seed_phrase": "Masukkan frasa benih Anda" +} \ No newline at end of file diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index 946deb91c..d0c5a1a87 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -721,5 +721,7 @@ "message": "Messaggio", "do_not_have_enough_gas_asset": "Non hai abbastanza ${currency} per effettuare una transazione con le attuali condizioni della rete blockchain. Hai bisogno di più ${currency} per pagare le commissioni della rete blockchain, anche se stai inviando una risorsa diversa.", "totp_auth_url": "URL DI AUT. TOTP", - "awaitDAppProcessing": "Attendi gentilmente che la dApp termini l'elaborazione." -} + "awaitDAppProcessing": "Attendi gentilmente che la dApp termini l'elaborazione.", + "seed_key": "Chiave di semi", + "enter_seed_phrase": "Inserisci la tua frase di semi" +} \ No newline at end of file diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index f74f853d4..1d8012237 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -721,5 +721,7 @@ "message": "メッセージ", "do_not_have_enough_gas_asset": "現在のブロックチェーン ネットワークの状況では、トランザクションを行うのに十分な ${currency} がありません。別のアセットを送信する場合でも、ブロックチェーン ネットワーク料金を支払うにはさらに ${currency} が必要です。", "totp_auth_url": "TOTP認証URL", - "awaitDAppProcessing": "dAppの処理が完了するまでお待ちください。" -} + "awaitDAppProcessing": "dAppの処理が完了するまでお待ちください。", + "seed_key": "シードキー", + "enter_seed_phrase": "シードフレーズを入力してください" +} \ No newline at end of file diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 5762822e1..df5d6f8ea 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -719,5 +719,7 @@ "message": "메시지", "do_not_have_enough_gas_asset": "현재 블록체인 네트워크 조건으로 거래를 하기에는 ${currency}이(가) 충분하지 않습니다. 다른 자산을 보내더라도 블록체인 네트워크 수수료를 지불하려면 ${currency}가 더 필요합니다.", "totp_auth_url": "TOTP 인증 URL", - "awaitDAppProcessing": "dApp이 처리를 마칠 때까지 기다려주세요." -} + "awaitDAppProcessing": "dApp이 처리를 마칠 때까지 기다려주세요.", + "seed_key": "시드 키", + "enter_seed_phrase": "시드 문구를 입력하십시오" +} \ No newline at end of file diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index 33ec70494..e2c4a55f9 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -719,5 +719,7 @@ "message": "မက်ဆေ့ချ်", "do_not_have_enough_gas_asset": "လက်ရှိ blockchain ကွန်ရက်အခြေအနေများနှင့် အရောင်းအဝယ်ပြုလုပ်ရန် သင့်တွင် ${currency} လုံလောက်မှုမရှိပါ။ သင်သည် မတူညီသော ပိုင်ဆိုင်မှုတစ်ခုကို ပေးပို့နေသော်လည်း blockchain ကွန်ရက်အခကြေးငွေကို ပေးဆောင်ရန် သင်သည် နောက်ထပ် ${currency} လိုအပ်ပါသည်။", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "ကျေးဇူးပြု၍ dApp ကို စီမံလုပ်ဆောင်ခြင်း အပြီးသတ်ရန် စောင့်ပါ။" -} + "awaitDAppProcessing": "ကျေးဇူးပြု၍ dApp ကို စီမံလုပ်ဆောင်ခြင်း အပြီးသတ်ရန် စောင့်ပါ။", + "seed_key": "မျိုးစေ့သော့", + "enter_seed_phrase": "သင့်ရဲ့မျိုးစေ့စကားစုကိုရိုက်ထည့်ပါ" +} \ No newline at end of file diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 767959855..fd95f5299 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -721,5 +721,7 @@ "message": "Bericht", "do_not_have_enough_gas_asset": "U heeft niet genoeg ${currency} om een transactie uit te voeren met de huidige blockchain-netwerkomstandigheden. U heeft meer ${currency} nodig om blockchain-netwerkkosten te betalen, zelfs als u een ander item verzendt.", "totp_auth_url": "TOTP AUTH-URL", - "awaitDAppProcessing": "Wacht tot de dApp klaar is met verwerken." -} + "awaitDAppProcessing": "Wacht tot de dApp klaar is met verwerken.", + "seed_key": "Zaadsleutel", + "enter_seed_phrase": "Voer uw zaadzin in" +} \ No newline at end of file diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index f243a2343..561d0a731 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -721,5 +721,7 @@ "message": "Wiadomość", "do_not_have_enough_gas_asset": "Nie masz wystarczającej ilości ${currency}, aby dokonać transakcji przy bieżących warunkach sieci blockchain. Potrzebujesz więcej ${currency}, aby uiścić opłaty za sieć blockchain, nawet jeśli wysyłasz inny zasób.", "totp_auth_url": "Adres URL TOTP AUTH", - "awaitDAppProcessing": "Poczekaj, aż dApp zakończy przetwarzanie." -} + "awaitDAppProcessing": "Poczekaj, aż dApp zakończy przetwarzanie.", + "seed_key": "Klucz nasion", + "enter_seed_phrase": "Wprowadź swoją frazę nasienną" +} \ No newline at end of file diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 49a446f92..21378e9ba 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -720,5 +720,7 @@ "message": "Mensagem", "do_not_have_enough_gas_asset": "Você não tem ${currency} suficiente para fazer uma transação com as condições atuais da rede blockchain. Você precisa de mais ${currency} para pagar as taxas da rede blockchain, mesmo se estiver enviando um ativo diferente.", "totp_auth_url": "URL de autenticação TOTP", - "awaitDAppProcessing": "Aguarde até que o dApp termine o processamento." -} + "awaitDAppProcessing": "Aguarde até que o dApp termine o processamento.", + "seed_key": "Chave de semente", + "enter_seed_phrase": "Digite sua frase de semente" +} \ No newline at end of file diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 305ce68f2..e12b010dd 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -721,5 +721,7 @@ "message": "Сообщение", "do_not_have_enough_gas_asset": "У вас недостаточно ${currency} для совершения транзакции при текущих условиях сети блокчейн. Вам нужно больше ${currency} для оплаты комиссий за сеть блокчейна, даже если вы отправляете другой актив.", "totp_auth_url": "URL-адрес TOTP-АВТОРИЗАЦИИ", - "awaitDAppProcessing": "Пожалуйста, подождите, пока dApp завершит обработку." -} + "awaitDAppProcessing": "Пожалуйста, подождите, пока dApp завершит обработку.", + "seed_key": "Ключ семян", + "enter_seed_phrase": "Введите свою семенную фразу" +} \ No newline at end of file diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index 95ba4ef6f..7ac83fc00 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -719,5 +719,7 @@ "message": "ข้อความ", "do_not_have_enough_gas_asset": "คุณมี ${currency} ไม่เพียงพอที่จะทำธุรกรรมกับเงื่อนไขเครือข่ายบล็อคเชนในปัจจุบัน คุณต้องมี ${currency} เพิ่มขึ้นเพื่อชำระค่าธรรมเนียมเครือข่ายบล็อคเชน แม้ว่าคุณจะส่งสินทรัพย์อื่นก็ตาม", "totp_auth_url": "URL การตรวจสอบสิทธิ์ TOTP", - "awaitDAppProcessing": "โปรดรอให้ dApp ประมวลผลเสร็จสิ้น" -} + "awaitDAppProcessing": "โปรดรอให้ dApp ประมวลผลเสร็จสิ้น", + "seed_key": "คีย์เมล็ดพันธุ์", + "enter_seed_phrase": "ป้อนวลีเมล็ดพันธุ์ของคุณ" +} \ No newline at end of file diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb index 8072eee61..9981469a8 100644 --- a/res/values/strings_tl.arb +++ b/res/values/strings_tl.arb @@ -716,5 +716,7 @@ "message": "Mensahe", "do_not_have_enough_gas_asset": "Wala kang sapat na ${currency} para gumawa ng transaksyon sa kasalukuyang kundisyon ng network ng blockchain. Kailangan mo ng higit pang ${currency} upang magbayad ng mga bayarin sa network ng blockchain, kahit na nagpapadala ka ng ibang asset.", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "Pakihintay na matapos ang pagproseso ng dApp." -} + "awaitDAppProcessing": "Pakihintay na matapos ang pagproseso ng dApp.", + "seed_key": "Seed Key", + "enter_seed_phrase": "Ipasok ang iyong pariralang binhi" +} \ No newline at end of file diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 596b6b000..6c838b036 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -719,5 +719,7 @@ "message": "İleti", "do_not_have_enough_gas_asset": "Mevcut blockchain ağ koşullarıyla işlem yapmak için yeterli ${currency} paranız yok. Farklı bir varlık gönderiyor olsanız bile blockchain ağ ücretlerini ödemek için daha fazla ${currency} miktarına ihtiyacınız var.", "totp_auth_url": "TOTP YETKİ URL'si", - "awaitDAppProcessing": "Lütfen dApp'in işlemeyi bitirmesini bekleyin." -} + "awaitDAppProcessing": "Lütfen dApp'in işlemeyi bitirmesini bekleyin.", + "seed_key": "Tohum", + "enter_seed_phrase": "Tohum ifadenizi girin" +} \ No newline at end of file diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index bdc950faa..b7720fb99 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -721,5 +721,7 @@ "message": "повідомлення", "do_not_have_enough_gas_asset": "У вас недостатньо ${currency}, щоб здійснити трансакцію з поточними умовами мережі блокчейн. Вам потрібно більше ${currency}, щоб сплатити комісію мережі блокчейн, навіть якщо ви надсилаєте інший актив.", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "Зачекайте, доки dApp завершить обробку." -} + "awaitDAppProcessing": "Зачекайте, доки dApp завершить обробку.", + "seed_key": "Насіннєвий ключ", + "enter_seed_phrase": "Введіть свою насіннєву фразу" +} \ No newline at end of file diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index 73c528b69..f7cbdd5e4 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -713,5 +713,7 @@ "message": "ﻡﺎﻐﯿﭘ", "do_not_have_enough_gas_asset": "آپ کے پاس موجودہ بلاکچین نیٹ ورک کی شرائط کے ساتھ لین دین کرنے کے لیے کافی ${currency} نہیں ہے۔ آپ کو بلاکچین نیٹ ورک کی فیس ادا کرنے کے لیے مزید ${currency} کی ضرورت ہے، چاہے آپ کوئی مختلف اثاثہ بھیج رہے ہوں۔", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "۔ﮟﯾﺮﮐ ﺭﺎﻈﺘﻧﺍ ﺎﮐ ﮯﻧﻮﮨ ﻞﻤﮑﻣ ﮓﻨﺴﯿﺳﻭﺮﭘ ﮯﮐ dApp ﻡﺮﮐ ﮦﺍﺮﺑ" -} + "awaitDAppProcessing": "۔ﮟﯾﺮﮐ ﺭﺎﻈﺘﻧﺍ ﺎﮐ ﮯﻧﻮﮨ ﻞﻤﮑﻣ ﮓﻨﺴﯿﺳﻭﺮﭘ ﮯﮐ dApp ﻡﺮﮐ ﮦﺍﺮﺑ", + "seed_key": "بیج کی کلید", + "enter_seed_phrase": "اپنے بیج کا جملہ درج کریں" +} \ No newline at end of file diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index f885c2493..a5e3ca263 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -715,5 +715,7 @@ "message": "Ifiranṣẹ", "do_not_have_enough_gas_asset": "O ko ni to ${currency} lati ṣe idunadura kan pẹlu awọn ipo nẹtiwọki blockchain lọwọlọwọ. O nilo diẹ sii ${currency} lati san awọn owo nẹtiwọọki blockchain, paapaa ti o ba nfi dukia miiran ranṣẹ.", "totp_auth_url": "TOTP AUTH URL", - "awaitDAppProcessing": "Fi inurere duro fun dApp lati pari sisẹ." -} + "awaitDAppProcessing": "Fi inurere duro fun dApp lati pari sisẹ.", + "seed_key": "Bọtini Ose", + "enter_seed_phrase": "Tẹ ọrọ-iru irugbin rẹ" +} \ No newline at end of file diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 91642ec73..a2ea6b73f 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -720,5 +720,7 @@ "message": "信息", "do_not_have_enough_gas_asset": "您没有足够的 ${currency} 来在当前的区块链网络条件下进行交易。即使您发送的是不同的资产,您也需要更多的 ${currency} 来支付区块链网络费用。", "totp_auth_url": "TOTP 授权 URL", - "awaitDAppProcessing": "请等待 dApp 处理完成。" -} + "awaitDAppProcessing": "请等待 dApp 处理完成。", + "seed_key": "种子钥匙", + "enter_seed_phrase": "输入您的种子短语" +} \ No newline at end of file From 29bc234dab9986852c20336c81919bafec248a06 Mon Sep 17 00:00:00 2001 From: Serhii Date: Tue, 17 Oct 2023 21:55:54 +0300 Subject: [PATCH 03/10] fix Twiter APiI (#1132) Co-authored-by: Omar Hatem --- lib/entities/parse_address_from_domain.dart | 13 ++---- lib/twitter/twitter_api.dart | 46 +++++++++++++++------ lib/twitter/twitter_user.dart | 12 ++---- 3 files changed, 42 insertions(+), 29 deletions(-) diff --git a/lib/entities/parse_address_from_domain.dart b/lib/entities/parse_address_from_domain.dart index 9d274fbcc..6e52a93c7 100644 --- a/lib/entities/parse_address_from_domain.dart +++ b/lib/entities/parse_address_from_domain.dart @@ -65,16 +65,11 @@ class AddressResolver { if (addressFromBio != null) { return ParsedAddress.fetchTwitterAddress(address: addressFromBio, name: text); } - final tweets = twitterUser.tweets; - if (tweets != null) { - var subString = StringBuffer(); - tweets.forEach((item) { - subString.writeln(item.text); - }); - final userTweetsText = subString.toString(); - final addressFromPinnedTweet = - extractAddressByType(raw: userTweetsText, type: CryptoCurrency.fromString(ticker)); + final pinnedTweet = twitterUser.pinnedTweet?.text; + if (pinnedTweet != null) { + final addressFromPinnedTweet = + extractAddressByType(raw: pinnedTweet, type: CryptoCurrency.fromString(ticker)); if (addressFromPinnedTweet != null) { return ParsedAddress.fetchTwitterAddress(address: addressFromPinnedTweet, name: text); } diff --git a/lib/twitter/twitter_api.dart b/lib/twitter/twitter_api.dart index 41f5df61d..24121c9c0 100644 --- a/lib/twitter/twitter_api.dart +++ b/lib/twitter/twitter_api.dart @@ -1,7 +1,8 @@ import 'dart:convert'; + +import 'package:cake_wallet/.secrets.g.dart' as secrets; import 'package:cake_wallet/twitter/twitter_user.dart'; import 'package:http/http.dart' as http; -import 'package:cake_wallet/.secrets.g.dart' as secrets; class TwitterApi { static const twitterBearerToken = secrets.twitterBearerToken; @@ -10,28 +11,49 @@ class TwitterApi { static const userPath = '/2/users/by/username/'; static Future lookupUserByName({required String userName}) async { - final queryParams = {'user.fields': 'description', 'expansions': 'pinned_tweet_id'}; - + final queryParams = { + 'user.fields': 'description', + 'expansions': 'pinned_tweet_id', + 'tweet.fields': 'note_tweet' + }; final headers = {'authorization': 'Bearer $twitterBearerToken'}; - final uri = Uri( - scheme: httpsScheme, - host: apiHost, - path: userPath + userName, - queryParameters: queryParams, - ); + scheme: httpsScheme, + host: apiHost, + path: userPath + userName, + queryParameters: queryParams); - var response = await http.get(uri, headers: headers); + final response = await http.get(uri, headers: headers).catchError((error) { + throw Exception('HTTP request failed: $error'); + }); if (response.statusCode != 200) { throw Exception('Unexpected http status: ${response.statusCode}'); } - final responseJSON = json.decode(response.body) as Map; + final Map responseJSON = jsonDecode(response.body) as Map; if (responseJSON['errors'] != null) { throw Exception(responseJSON['errors'][0]['detail']); } - return TwitterUser.fromJson(responseJSON); + return TwitterUser.fromJson(responseJSON, _getPinnedTweet(responseJSON)); + } + + static Tweet? _getPinnedTweet(Map responseJSON) { + final tweetId = responseJSON['data']['pinned_tweet_id'] as String?; + if (tweetId == null || responseJSON['includes'] == null) return null; + + final tweetIncludes = List.from(responseJSON['includes']['tweets'] as List); + final pinnedTweetData = tweetIncludes.firstWhere( + (tweet) => tweet['id'] == tweetId, + orElse: () => null, + ) as Map?; + + if (pinnedTweetData == null) return null; + + final pinnedTweetText = + (pinnedTweetData['note_tweet']?['text'] ?? pinnedTweetData['text']) as String; + + return Tweet(id: tweetId, text: pinnedTweetText); } } diff --git a/lib/twitter/twitter_user.dart b/lib/twitter/twitter_user.dart index ac373fd62..c0eb5431c 100644 --- a/lib/twitter/twitter_user.dart +++ b/lib/twitter/twitter_user.dart @@ -4,25 +4,21 @@ class TwitterUser { required this.username, required this.name, required this.description, - this.tweets}); + this.pinnedTweet}); final String id; final String username; final String name; final String description; - final List? tweets; + final Tweet? pinnedTweet; - factory TwitterUser.fromJson(Map json) { + factory TwitterUser.fromJson(Map json, [Tweet? pinnedTweet]) { return TwitterUser( id: json['data']['id'] as String, username: json['data']['username'] as String, name: json['data']['name'] as String, description: json['data']['description'] as String? ?? '', - tweets: json['includes'] != null - ? List.from(json['includes']['tweets'] as List) - .map((e) => Tweet.fromJson(e as Map)) - .toList() - : null, + pinnedTweet: pinnedTweet, ); } } From 2a3b5644d71ab5d895a1e92643f7fda78e2a2406 Mon Sep 17 00:00:00 2001 From: hundehausen <25672277+hundehausen@users.noreply.github.com> Date: Wed, 18 Oct 2023 23:26:05 +0200 Subject: [PATCH 04/10] use working port for seths node (#1133) * use working port for seths node * use ssl for Seth's node --- assets/node_list.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/node_list.yml b/assets/node_list.yml index 2cbd7f780..bc7a9dc4a 100644 --- a/assets/node_list.yml +++ b/assets/node_list.yml @@ -5,7 +5,8 @@ uri: cakexmrl7bonq7ovjka5kuwuyd3f7qnkz6z6s6dmsy3uckwra7bvggyd.onion:18081 is_default: false - - uri: node.sethforprivacy.com:18089 + uri: node.sethforprivacy.com:443 + useSSL: true is_default: false - uri: nodes.hashvault.pro:18081 From 8889f09509045531c3fb9f4c5aed172c1930f69d Mon Sep 17 00:00:00 2001 From: Serhii Date: Thu, 19 Oct 2023 01:08:29 +0300 Subject: [PATCH 05/10] Accessibility fixes (#1128) --- .../dashboard/widgets/address_page.dart | 29 ++-- .../screens/dashboard/widgets/header_row.dart | 38 +++--- .../present_receive_option_picker.dart | 126 ++++++++---------- .../exchange/widgets/exchange_card.dart | 98 +++++++------- lib/src/widgets/alert_close_button.dart | 19 ++- 5 files changed, 163 insertions(+), 147 deletions(-) diff --git a/lib/src/screens/dashboard/widgets/address_page.dart b/lib/src/screens/dashboard/widgets/address_page.dart index 84100464c..d584ce95b 100644 --- a/lib/src/screens/dashboard/widgets/address_page.dart +++ b/lib/src/screens/dashboard/widgets/address_page.dart @@ -99,19 +99,22 @@ class AddressPage extends BasePage { Widget? trailing(BuildContext context) { return Material( color: Colors.transparent, - child: IconButton( - padding: EdgeInsets.zero, - constraints: BoxConstraints(), - highlightColor: Colors.transparent, - splashColor: Colors.transparent, - iconSize: 25, - onPressed: () { - ShareUtil.share( - text: addressListViewModel.uri.toString(), - context: context, - ); - }, - icon: Icon(Icons.share, size: 20, color: pageIconColor(context)), + child: Semantics( + label: S.of(context).share, + child: IconButton( + padding: EdgeInsets.zero, + constraints: BoxConstraints(), + highlightColor: Colors.transparent, + splashColor: Colors.transparent, + iconSize: 25, + onPressed: () { + ShareUtil.share( + text: addressListViewModel.uri.toString(), + context: context, + ); + }, + icon: Icon(Icons.share, size: 20, color: pageIconColor(context)), + ), ), ); } diff --git a/lib/src/screens/dashboard/widgets/header_row.dart b/lib/src/screens/dashboard/widgets/header_row.dart index 79b7b3fe6..2093a238f 100644 --- a/lib/src/screens/dashboard/widgets/header_row.dart +++ b/lib/src/screens/dashboard/widgets/header_row.dart @@ -31,21 +31,29 @@ class HeaderRow extends StatelessWidget { fontWeight: FontWeight.w500, color: Theme.of(context).extension()!.pageTitleTextColor), ), - GestureDetector( - onTap: () { - showPopUp( - context: context, - builder: (context) => - FilterWidget(dashboardViewModel: dashboardViewModel) - ); - }, - child: Container( - height: 36, - width: 36, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Theme.of(context).extension()!.buttonColor), - child: filterIcon, + Semantics( + container: true, + child: GestureDetector( + onTap: () { + showPopUp( + context: context, + builder: (context) => FilterWidget(dashboardViewModel: dashboardViewModel), + ); + }, + child: Semantics( + label: 'Transaction Filter', + button: true, + enabled: true, + child: Container( + height: 36, + width: 36, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Theme.of(context).extension()!.buttonColor, + ), + child: filterIcon, + ), + ), ), ) ], diff --git a/lib/src/screens/dashboard/widgets/present_receive_option_picker.dart b/lib/src/screens/dashboard/widgets/present_receive_option_picker.dart index aae42049b..33bceeb5c 100644 --- a/lib/src/screens/dashboard/widgets/present_receive_option_picker.dart +++ b/lib/src/screens/dashboard/widgets/present_receive_option_picker.dart @@ -1,5 +1,5 @@ +import 'package:cake_wallet/src/widgets/alert_close_button.dart'; import 'package:cake_wallet/themes/extensions/cake_text_theme.dart'; -import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/src/screens/ionia/widgets/rounded_checkbox.dart'; import 'package:cake_wallet/src/widgets/alert_background.dart'; import 'package:cake_wallet/typography.dart'; @@ -71,77 +71,69 @@ class PresentReceiveOptionPicker extends StatelessWidget { builder: (BuildContext popUpContext) => Scaffold( resizeToAvoidBottomInset: false, backgroundColor: Colors.transparent, - body: AlertBackground( - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Spacer(), - Container( - margin: EdgeInsets.symmetric(horizontal: 24), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(30), - color: Theme.of(context).colorScheme.background, - ), - child: Padding( - padding: const EdgeInsets.only(top: 24, bottom: 24), - child: (ListView.separated( - padding: EdgeInsets.zero, - shrinkWrap: true, - itemCount: receiveOptionViewModel.options.length, - itemBuilder: (_, index) { - final option = receiveOptionViewModel.options[index]; - return InkWell( - onTap: () { - Navigator.pop(popUpContext); + body: Stack( + alignment: AlignmentDirectional.center, + children:[ AlertBackground( + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Spacer(), + Container( + margin: EdgeInsets.symmetric(horizontal: 24), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(30), + color: Theme.of(context).colorScheme.background, + ), + child: Padding( + padding: const EdgeInsets.only(top: 24, bottom: 24), + child: (ListView.separated( + padding: EdgeInsets.zero, + shrinkWrap: true, + itemCount: receiveOptionViewModel.options.length, + itemBuilder: (_, index) { + final option = receiveOptionViewModel.options[index]; + return InkWell( + onTap: () { + Navigator.pop(popUpContext); - receiveOptionViewModel.selectReceiveOption(option); - }, - child: Padding( - padding: const EdgeInsets.only(left: 24, right: 24), - child: Observer(builder: (_) { - final value = receiveOptionViewModel.selectedReceiveOption; + receiveOptionViewModel.selectReceiveOption(option); + }, + child: Padding( + padding: const EdgeInsets.only(left: 24, right: 24), + child: Observer(builder: (_) { + final value = receiveOptionViewModel.selectedReceiveOption; - return Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(option.toString(), - textAlign: TextAlign.left, - style: textSmall( - color: Theme.of(context).extension()!.titleColor, - ).copyWith( - fontWeight: - value == option ? FontWeight.w800 : FontWeight.w500, - )), - RoundedCheckbox( - value: value == option, - ) - ], - ); - }), - ), - ); - }, - separatorBuilder: (_, index) => SizedBox(height: 30), - )), - ), - ), - Spacer(), - Container( - margin: EdgeInsets.only(bottom: 40), - child: InkWell( - onTap: () => Navigator.pop(popUpContext), - child: CircleAvatar( - child: Icon( - Icons.close, - color: Palette.darkBlueCraiola, - ), - backgroundColor: Colors.white, + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(option.toString(), + textAlign: TextAlign.left, + style: textSmall( + color: Theme.of(context).extension()!.titleColor, + ).copyWith( + fontWeight: + value == option ? FontWeight.w800 : FontWeight.w500, + )), + RoundedCheckbox( + value: value == option, + ) + ], + ); + }), + ), + ); + }, + separatorBuilder: (_, index) => SizedBox(height: 30), + )), ), ), - ) - ], + Spacer() + ], + ), ), + AlertCloseButton(onTap: () => Navigator.of(popUpContext).pop(), bottom: 40) + ], ), ), context: context, diff --git a/lib/src/screens/exchange/widgets/exchange_card.dart b/lib/src/screens/exchange/widgets/exchange_card.dart index 9c4707529..b55e96e85 100644 --- a/lib/src/screens/exchange/widgets/exchange_card.dart +++ b/lib/src/screens/exchange/widgets/exchange_card.dart @@ -416,37 +416,40 @@ class ExchangeCardState extends State { width: 34, height: 34, padding: EdgeInsets.only(top: 0), - child: InkWell( - onTap: () async { - final contact = - await Navigator.of(context) - .pushNamed( - Routes.pickerAddressBook, - arguments: widget.initialCurrency, - ); + child: Semantics( + label: S.of(context).address_book, + child: InkWell( + onTap: () async { + final contact = + await Navigator.of(context) + .pushNamed( + Routes.pickerAddressBook, + arguments: widget.initialCurrency, + ); - if (contact is ContactBase && - contact.address != null) { - setState(() => - addressController.text = - contact.address); - widget.onPushAddressBookButton - ?.call(context); - } - }, - child: Container( - padding: EdgeInsets.all(8), - decoration: BoxDecoration( - color: widget - .addressButtonsColor, - borderRadius: - BorderRadius.all( - Radius.circular( - 6))), - child: Image.asset( - 'assets/images/open_book.png', - color: Theme.of(context).extension()!.textFieldButtonIconColor, - )), + if (contact is ContactBase && + contact.address != null) { + setState(() => + addressController.text = + contact.address); + widget.onPushAddressBookButton + ?.call(context); + } + }, + child: Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + color: widget + .addressButtonsColor, + borderRadius: + BorderRadius.all( + Radius.circular( + 6))), + child: Image.asset( + 'assets/images/open_book.png', + color: Theme.of(context).extension()!.textFieldButtonIconColor, + )), + ), )), ), Padding( @@ -455,22 +458,25 @@ class ExchangeCardState extends State { width: 34, height: 34, padding: EdgeInsets.only(top: 0), - child: InkWell( - onTap: () { - Clipboard.setData(ClipboardData( - text: addressController - .text)); - showBar( - context, - S - .of(context) - .copied_to_clipboard); - }, - child: Container( - padding: EdgeInsets.fromLTRB( - 8, 8, 0, 8), - color: Colors.transparent, - child: copyImage), + child: Semantics( + label: S.of(context).copy_address, + child: InkWell( + onTap: () { + Clipboard.setData(ClipboardData( + text: addressController + .text)); + showBar( + context, + S + .of(context) + .copied_to_clipboard); + }, + child: Container( + padding: EdgeInsets.fromLTRB( + 8, 8, 0, 8), + color: Colors.transparent, + child: copyImage), + ), ))) ]))) ])), diff --git a/lib/src/widgets/alert_close_button.dart b/lib/src/widgets/alert_close_button.dart index 925756933..e3ff037a9 100644 --- a/lib/src/widgets/alert_close_button.dart +++ b/lib/src/widgets/alert_close_button.dart @@ -1,8 +1,10 @@ +import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/palette.dart'; import 'package:flutter/material.dart'; class AlertCloseButton extends StatelessWidget { AlertCloseButton({this.image, this.bottom, this.onTap}); + final VoidCallback? onTap; final Image? image; @@ -19,12 +21,17 @@ class AlertCloseButton extends StatelessWidget { bottom: bottom ?? 60, child: GestureDetector( onTap: onTap ?? () => Navigator.of(context).pop(), - child: Container( - height: 42, - width: 42, - decoration: BoxDecoration(color: Colors.white, shape: BoxShape.circle), - child: Center( - child: image ?? closeButton, + child: Semantics( + label: S.of(context).close, + button: true, + enabled: true, + child: Container( + height: 42, + width: 42, + decoration: BoxDecoration(color: Colors.white, shape: BoxShape.circle), + child: Center( + child: image ?? closeButton, + ), ), ), ), From 8ca9fa0a821eecc532cde5a9ae2e3d30b9e1fbf1 Mon Sep 17 00:00:00 2001 From: Matthew Fosse Date: Thu, 19 Oct 2023 08:28:12 -0400 Subject: [PATCH 06/10] fix (#1136) --- model_generator.sh | 0 scripts/macos/build_sodium.sh | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 model_generator.sh diff --git a/model_generator.sh b/model_generator.sh old mode 100644 new mode 100755 diff --git a/scripts/macos/build_sodium.sh b/scripts/macos/build_sodium.sh index b50d3c2ee..19aad3c97 100755 --- a/scripts/macos/build_sodium.sh +++ b/scripts/macos/build_sodium.sh @@ -10,7 +10,7 @@ echo "============================ SODIUM ============================" echo "Cloning SODIUM from - $SODIUM_URL" git clone $SODIUM_URL $SODIUM_PATH --branch stable cd $SODIUM_PATH -./dist-build/osx.sh +./dist-build/macos.sh mv ${SODIUM_PATH}/libsodium-osx/include/* $EXTERNAL_MACOS_INCLUDE_DIR mv ${SODIUM_PATH}/libsodium-osx/lib/* $EXTERNAL_MACOS_LIB_DIR \ No newline at end of file From 374110db5476444a7d50ae598fd7766e8346ee36 Mon Sep 17 00:00:00 2001 From: Adegoke David <64401859+Blazebrain@users.noreply.github.com> Date: Thu, 19 Oct 2023 17:25:44 +0100 Subject: [PATCH 07/10] Cw 497 wallet connect for desktop (#1134) * feat: Implement WalletConnect for Desktop * feat: WalletConnect for Desktop * fix: Properly handle and dispose textEditingController for URI * chore: Move BottomSheetListener to Sidebar for desktop app * Remove unused variable and imports * Update desktop_settings_page.dart --------- Co-authored-by: Omar Hatem --- lib/di.dart | 6 +- lib/router.dart | 2 +- .../dashboard/desktop_dashboard_page.dart | 53 +++---- .../desktop_sidebar_wrapper.dart | 143 +++++++++--------- .../settings/connection_sync_page.dart | 2 +- .../desktop_settings_page.dart | 1 + .../wc_connections_listing_view.dart | 20 ++- .../enter_wallet_connect_uri_widget.dart | 140 +++++++++++++++++ macos/Podfile.lock | 2 +- res/values/strings_ar.arb | 4 +- res/values/strings_bg.arb | 4 +- res/values/strings_cs.arb | 4 +- res/values/strings_de.arb | 4 +- res/values/strings_en.arb | 4 +- res/values/strings_es.arb | 4 +- res/values/strings_fr.arb | 4 +- res/values/strings_ha.arb | 4 +- res/values/strings_hi.arb | 4 +- res/values/strings_hr.arb | 4 +- res/values/strings_id.arb | 4 +- res/values/strings_it.arb | 4 +- res/values/strings_ja.arb | 4 +- res/values/strings_ko.arb | 4 +- res/values/strings_my.arb | 4 +- res/values/strings_nl.arb | 4 +- res/values/strings_pl.arb | 4 +- res/values/strings_pt.arb | 4 +- res/values/strings_ru.arb | 4 +- res/values/strings_th.arb | 4 +- res/values/strings_tl.arb | 4 +- res/values/strings_tr.arb | 4 +- res/values/strings_uk.arb | 4 +- res/values/strings_ur.arb | 4 +- res/values/strings_yo.arb | 4 +- res/values/strings_zh.arb | 4 +- 35 files changed, 344 insertions(+), 129 deletions(-) create mode 100644 lib/src/screens/wallet_connect/widgets/enter_wallet_connect_uri_widget.dart diff --git a/lib/di.dart b/lib/di.dart index cfe2cfdc5..0434f2d2f 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -220,6 +220,7 @@ import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/entities/qr_view_data.dart'; import 'core/totp_request_details.dart'; +import 'src/screens/settings/desktop_settings/desktop_settings_page.dart'; final getIt = GetIt.instance; @@ -488,6 +489,7 @@ Future setup({ getIt.registerFactory(() { final GlobalKey _navigatorKey = GlobalKey(); return DesktopSidebarWrapper( + bottomSheetService: getIt.get(), dashboardViewModel: getIt.get(), desktopSidebarViewModel: getIt.get(), child: getIt.get(param1: _navigatorKey), @@ -496,7 +498,6 @@ Future setup({ }); getIt.registerFactoryParam, void>( (desktopKey, _) => DesktopDashboardPage( - bottomSheetService: getIt.get(), balancePage: getIt.get(), dashboardViewModel: getIt.get(), addressListViewModel: getIt.get(), @@ -515,6 +516,9 @@ Future setup({ getIt.registerFactory( () => Modify2FAPage(setup2FAViewModel: getIt.get())); + getIt.registerFactory( + () => DesktopSettingsPage()); + getIt.registerFactoryParam( (pageOption, _) => ReceiveOptionViewModel(getIt.get().wallet!, pageOption)); diff --git a/lib/router.dart b/lib/router.dart index 126830308..f9a42ffc6 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -544,7 +544,7 @@ Route createRoute(RouteSettings settings) { ); case Routes.desktop_settings_page: - return CupertinoPageRoute(builder: (_) => DesktopSettingsPage()); + return CupertinoPageRoute(builder: (_) => getIt.get()); case Routes.empty_no_route: return MaterialPageRoute(builder: (_) => SizedBox.shrink()); diff --git a/lib/src/screens/dashboard/desktop_dashboard_page.dart b/lib/src/screens/dashboard/desktop_dashboard_page.dart index b22e6e2b9..ed9fa6912 100644 --- a/lib/src/screens/dashboard/desktop_dashboard_page.dart +++ b/lib/src/screens/dashboard/desktop_dashboard_page.dart @@ -1,10 +1,8 @@ import 'dart:async'; -import 'package:cake_wallet/core/wallet_connect/wc_bottom_sheet_service.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/release_notes/release_notes_screen.dart'; -import 'package:cake_wallet/src/screens/wallet_connect/widgets/modals/bottom_sheet_listener.dart'; import 'package:cake_wallet/src/screens/yat_emoji_id.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; @@ -21,14 +19,12 @@ import 'package:shared_preferences/shared_preferences.dart'; class DesktopDashboardPage extends StatelessWidget { DesktopDashboardPage({ required this.balancePage, - required this.bottomSheetService, required this.dashboardViewModel, required this.addressListViewModel, required this.desktopKey, }); final BalancePage balancePage; - final BottomSheetService bottomSheetService; final DashboardViewModel dashboardViewModel; final WalletAddressListViewModel addressListViewModel; final GlobalKey desktopKey; @@ -40,34 +36,31 @@ class DesktopDashboardPage extends StatelessWidget { Widget build(BuildContext context) { _setEffects(context); - return BottomSheetListener( - bottomSheetService: bottomSheetService, - child: Container( - color: Theme.of(context).colorScheme.background, - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: 400, - child: balancePage, - ), - Flexible( - child: ConstrainedBox( - constraints: BoxConstraints(maxWidth: 500), - child: Navigator( - key: desktopKey, - initialRoute: Routes.desktop_actions, - onGenerateRoute: (settings) => Router.createRoute(settings), - onGenerateInitialRoutes: (NavigatorState navigator, String initialRouteName) { - return [ - navigator.widget.onGenerateRoute!(RouteSettings(name: initialRouteName))! - ]; - }, - ), + return Container( + color: Theme.of(context).colorScheme.background, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 400, + child: balancePage, + ), + Flexible( + child: ConstrainedBox( + constraints: BoxConstraints(maxWidth: 500), + child: Navigator( + key: desktopKey, + initialRoute: Routes.desktop_actions, + onGenerateRoute: (settings) => Router.createRoute(settings), + onGenerateInitialRoutes: (NavigatorState navigator, String initialRouteName) { + return [ + navigator.widget.onGenerateRoute!(RouteSettings(name: initialRouteName))! + ]; + }, ), ), - ], - ), + ), + ], ), ); } diff --git a/lib/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart b/lib/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart index c08b80785..f73570048 100644 --- a/lib/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart +++ b/lib/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart @@ -1,3 +1,4 @@ +import 'package:cake_wallet/core/wallet_connect/wc_bottom_sheet_service.dart'; import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/auth/auth_page.dart'; @@ -7,6 +8,7 @@ import 'package:cake_wallet/src/screens/dashboard/desktop_widgets/desktop_sideba import 'package:cake_wallet/src/screens/dashboard/desktop_widgets/desktop_sidebar/side_menu_item.dart'; import 'package:cake_wallet/src/screens/dashboard/desktop_widgets/desktop_wallet_selection_dropdown.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator.dart'; +import 'package:cake_wallet/src/screens/wallet_connect/widgets/modals/bottom_sheet_listener.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; import 'package:cake_wallet/view_model/dashboard/desktop_sidebar_view_model.dart'; import 'package:flutter/cupertino.dart'; @@ -16,6 +18,7 @@ import 'package:cake_wallet/router.dart' as Router; import 'package:mobx/mobx.dart'; class DesktopSidebarWrapper extends BasePage { + final BottomSheetService bottomSheetService; final Widget child; final DesktopSidebarViewModel desktopSidebarViewModel; final DashboardViewModel dashboardViewModel; @@ -23,6 +26,7 @@ class DesktopSidebarWrapper extends BasePage { DesktopSidebarWrapper({ required this.child, + required this.bottomSheetService, required this.desktopSidebarViewModel, required this.dashboardViewModel, required this.desktopNavigatorKey, @@ -67,63 +71,75 @@ class DesktopSidebarWrapper extends BasePage { Widget body(BuildContext context) { _setEffects(); - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Observer(builder: (_) { - return SideMenu( - width: sideMenuWidth, - topItems: [ - SideMenuItem( - imagePath: 'assets/images/wallet_outline.png', - isSelected: desktopSidebarViewModel.currentPage == SidebarItem.dashboard, - onTap: () { - desktopSidebarViewModel.onPageChange(SidebarItem.dashboard); - desktopNavigatorKey.currentState - ?.pushNamedAndRemoveUntil(Routes.desktop_actions, (route) => false); - }, - ), - SideMenuItem( - onTap: () { - if (desktopSidebarViewModel.currentPage == SidebarItem.transactions) { + return BottomSheetListener( + bottomSheetService: bottomSheetService, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Observer(builder: (_) { + return SideMenu( + width: sideMenuWidth, + topItems: [ + SideMenuItem( + imagePath: 'assets/images/wallet_outline.png', + isSelected: desktopSidebarViewModel.currentPage == SidebarItem.dashboard, + onTap: () { + desktopSidebarViewModel.onPageChange(SidebarItem.dashboard); desktopNavigatorKey.currentState ?.pushNamedAndRemoveUntil(Routes.desktop_actions, (route) => false); - desktopSidebarViewModel.resetSidebar(); - } else { - desktopSidebarViewModel.onPageChange(SidebarItem.transactions); - desktopNavigatorKey.currentState?.pushNamed(Routes.transactionsPage); - } - }, - isSelected: desktopSidebarViewModel.currentPage == SidebarItem.transactions, - imagePath: desktopSidebarViewModel.currentPage == SidebarItem.transactions - ? selectedIconPath - : unselectedIconPath, - ), - ], - bottomItems: [ - SideMenuItem( - imagePath: 'assets/images/support_icon.png', - isSelected: desktopSidebarViewModel.currentPage == SidebarItem.support, - onTap: () => desktopSidebarViewModel.onPageChange(SidebarItem.support)), - SideMenuItem( - imagePath: 'assets/images/settings_outline.png', - isSelected: desktopSidebarViewModel.currentPage == SidebarItem.settings, - onTap: () => desktopSidebarViewModel.onPageChange(SidebarItem.settings), - ), - ], - ); - }), - Expanded( - child: PageView( - controller: pageController, - physics: NeverScrollableScrollPhysics(), - children: [ - child, - Container( - color: Theme.of(context).colorScheme.background, - padding: EdgeInsets.all(20), - child: Navigator( - initialRoute: Routes.support, + }, + ), + SideMenuItem( + onTap: () { + if (desktopSidebarViewModel.currentPage == SidebarItem.transactions) { + desktopNavigatorKey.currentState + ?.pushNamedAndRemoveUntil(Routes.desktop_actions, (route) => false); + desktopSidebarViewModel.resetSidebar(); + } else { + desktopSidebarViewModel.onPageChange(SidebarItem.transactions); + desktopNavigatorKey.currentState?.pushNamed(Routes.transactionsPage); + } + }, + isSelected: desktopSidebarViewModel.currentPage == SidebarItem.transactions, + imagePath: desktopSidebarViewModel.currentPage == SidebarItem.transactions + ? selectedIconPath + : unselectedIconPath, + ), + ], + bottomItems: [ + SideMenuItem( + imagePath: 'assets/images/support_icon.png', + isSelected: desktopSidebarViewModel.currentPage == SidebarItem.support, + onTap: () => desktopSidebarViewModel.onPageChange(SidebarItem.support)), + SideMenuItem( + imagePath: 'assets/images/settings_outline.png', + isSelected: desktopSidebarViewModel.currentPage == SidebarItem.settings, + onTap: () => desktopSidebarViewModel.onPageChange(SidebarItem.settings), + ), + ], + ); + }), + Expanded( + child: PageView( + controller: pageController, + physics: NeverScrollableScrollPhysics(), + children: [ + child, + Container( + color: Theme.of(context).colorScheme.background, + padding: EdgeInsets.all(20), + child: Navigator( + initialRoute: Routes.support, + onGenerateRoute: (settings) => Router.createRoute(settings), + onGenerateInitialRoutes: (NavigatorState navigator, String initialRouteName) { + return [ + navigator.widget.onGenerateRoute!(RouteSettings(name: initialRouteName))! + ]; + }, + ), + ), + Navigator( + initialRoute: Routes.desktop_settings_page, onGenerateRoute: (settings) => Router.createRoute(settings), onGenerateInitialRoutes: (NavigatorState navigator, String initialRouteName) { return [ @@ -131,20 +147,11 @@ class DesktopSidebarWrapper extends BasePage { ]; }, ), - ), - Navigator( - initialRoute: Routes.desktop_settings_page, - onGenerateRoute: (settings) => Router.createRoute(settings), - onGenerateInitialRoutes: (NavigatorState navigator, String initialRouteName) { - return [ - navigator.widget.onGenerateRoute!(RouteSettings(name: initialRouteName))! - ]; - }, - ), - ], + ], + ), ), - ), - ], + ], + ), ); } diff --git a/lib/src/screens/settings/connection_sync_page.dart b/lib/src/screens/settings/connection_sync_page.dart index 98ca9342c..573778ed2 100644 --- a/lib/src/screens/settings/connection_sync_page.dart +++ b/lib/src/screens/settings/connection_sync_page.dart @@ -85,7 +85,7 @@ class ConnectionSyncPage extends BasePage { ); }, ), - if (dashboardViewModel.wallet.type == WalletType.ethereum && DeviceInfo.instance.isMobile) ...[ + if (dashboardViewModel.wallet.type == WalletType.ethereum) ...[ WalletConnectTile( onTap: () async { Navigator.of(context).push( diff --git a/lib/src/screens/settings/desktop_settings/desktop_settings_page.dart b/lib/src/screens/settings/desktop_settings/desktop_settings_page.dart index bcdb89aec..1d6168e4a 100644 --- a/lib/src/screens/settings/desktop_settings/desktop_settings_page.dart +++ b/lib/src/screens/settings/desktop_settings/desktop_settings_page.dart @@ -12,6 +12,7 @@ final _settingsNavigatorKey = GlobalKey(); class DesktopSettingsPage extends StatefulWidget { const DesktopSettingsPage({super.key}); + @override State createState() => _DesktopSettingsPageState(); } diff --git a/lib/src/screens/wallet_connect/wc_connections_listing_view.dart b/lib/src/screens/wallet_connect/wc_connections_listing_view.dart index ead50db07..6a3171a78 100644 --- a/lib/src/screens/wallet_connect/wc_connections_listing_view.dart +++ b/lib/src/screens/wallet_connect/wc_connections_listing_view.dart @@ -2,8 +2,10 @@ import 'dart:developer'; import 'package:cake_wallet/core/wallet_connect/web3wallet_service.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; +import 'package:cake_wallet/src/screens/wallet_connect/widgets/enter_wallet_connect_uri_widget.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/themes/extensions/cake_text_theme.dart'; +import 'package:cake_wallet/utils/device_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:walletconnect_flutter_v2/walletconnect_flutter_v2.dart'; @@ -36,7 +38,13 @@ class WCPairingsWidget extends BasePage { String get title => S.current.walletConnect; Future _onScanQrCode(BuildContext context, Web3Wallet web3Wallet) async { - final String? uri = await presentQRScanner(); + final String? uri; + + if (DeviceInfo.instance.isMobile) { + uri = await presentQRScanner(); + } else { + uri = await _showEnterWalletConnectURIPopUp(context); + } if (uri == null) return _invalidUriToast(context, S.current.nullURIError); @@ -51,6 +59,16 @@ class WCPairingsWidget extends BasePage { } } + Future _showEnterWalletConnectURIPopUp(BuildContext context) async { + final walletConnectURI = await showPopUp( + context: context, + builder: (BuildContext context) { + return EnterWalletConnectURIWrapperWidget(); + }, + ); + return walletConnectURI; + } + Future _invalidUriToast(BuildContext context, String message) async { await showPopUp( context: context, diff --git a/lib/src/screens/wallet_connect/widgets/enter_wallet_connect_uri_widget.dart b/lib/src/screens/wallet_connect/widgets/enter_wallet_connect_uri_widget.dart new file mode 100644 index 000000000..927e7fb02 --- /dev/null +++ b/lib/src/screens/wallet_connect/widgets/enter_wallet_connect_uri_widget.dart @@ -0,0 +1,140 @@ +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/src/widgets/base_alert_dialog.dart'; +import 'package:cake_wallet/themes/extensions/send_page_theme.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class EnterWalletConnectURIWrapperWidget extends StatefulWidget { + const EnterWalletConnectURIWrapperWidget({super.key}); + + @override + State createState() => + _EnterWallectConnectURIWrapperWidgetState(); +} + +class _EnterWallectConnectURIWrapperWidgetState extends State { + late final TextEditingController controller; + + @override + void initState() { + super.initState(); + controller = TextEditingController(); + } + + @override + void dispose() { + controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return _EnterWalletConnectURIWidget( + controller: controller, + ); + } +} + +class _EnterWalletConnectURIWidget extends BaseAlertDialog { + _EnterWalletConnectURIWidget({ + required this.controller, + }); + + final TextEditingController controller; + + @override + String get titleText => S.current.enterWalletConnectURI; + + Future _pasteWalletConnectURI() async { + final clipboard = await Clipboard.getData('text/plain'); + final totpURI = clipboard?.text ?? ''; + + if (totpURI.isNotEmpty) { + controller.text = totpURI; + } + } + + @override + Widget content(BuildContext context) { + return Card( + margin: EdgeInsets.zero, + child: Column( + children: [ + SizedBox(height: 8), + Text( + S.current.copyWalletConnectLink, + style: Theme.of(context).textTheme.bodySmall, + ), + SizedBox(height: 16), + TextField( + controller: controller, + style: TextStyle(fontSize: 14, fontWeight: FontWeight.w500, color: Colors.white), + decoration: InputDecoration( + suffixIcon: Container( + width: 24, + height: 24, + padding: EdgeInsets.only(top: 0), + child: Semantics( + label: S.of(context).paste, + child: InkWell( + onTap: () => _pasteWalletConnectURI(), + child: Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(6)), + ), + child: Image.asset( + 'assets/images/paste_ios.png', + color: + Theme.of(context).extension()!.textFieldButtonIconColor, + ), + ), + ), + ), + ), + hintText: S.current.enterWalletConnectURI, + border: OutlineInputBorder( + borderSide: BorderSide( + color: Theme.of(context).extension()!.textFieldBorderColor, + ), + ), + hintStyle: TextStyle( + color: Theme.of(context).extension()!.textFieldHintColor, + fontWeight: FontWeight.w500, + fontSize: 14, + ), + ), + ), + ], + ), + ); + } + + @override + Widget actionButtons(BuildContext context) { + return Container( + width: 300, + height: 52, + padding: EdgeInsets.only(left: 12, right: 12), + color: Theme.of(context).dialogBackgroundColor, + child: ButtonTheme( + minWidth: double.infinity, + child: TextButton( + onPressed: () { + Navigator.pop(context, controller.text); + }, + child: Text( + S.current.confirm, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 15, + fontWeight: FontWeight.w600, + color: Theme.of(context).primaryColor, + decoration: TextDecoration.none, + ), + ), + ), + ), + ); + } +} diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 664a5231b..421dc204c 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -103,7 +103,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: connectivity_plus_macos: f6e86fd000e971d361e54b5afcadc8c8fa773308 - cw_monero: ec03de55a19c4a2b174ea687e0f4202edc716fa4 + cw_monero: f8b7f104508efba2591548e76b5c058d05cba3f0 device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225 flutter_secure_storage_macos: d56e2d218c1130b262bef8b4a7d64f88d7f9c9ea diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index fcb1b090c..ac3a7d821 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -718,6 +718,8 @@ "do_not_have_enough_gas_asset": "ليس لديك ما يكفي من ${currency} لإجراء معاملة وفقًا لشروط شبكة blockchain الحالية. أنت بحاجة إلى المزيد من ${currency} لدفع رسوم شبكة blockchain، حتى لو كنت ترسل أصلًا مختلفًا.", "totp_auth_url": "TOTP ﺔﻗﺩﺎﺼﻤﻟ URL ﻥﺍﻮﻨﻋ", "awaitDAppProcessing": ".ﺔﺠﻟﺎﻌﻤﻟﺍ ﻦﻣ dApp ﻲﻬﺘﻨﻳ ﻰﺘﺣ ﺭﺎﻈﺘﻧﻻﺍ ﻰﺟﺮﻳ", + "copyWalletConnectLink": "ﺎﻨﻫ ﻪﻘﺼﻟﺍﻭ dApp ﻦﻣ WalletConnect ﻂﺑﺍﺭ ﺦﺴﻧﺍ", + "enterWalletConnectURI": "WalletConnect ـﻟ URI ﻞﺧﺩﺃ", "seed_key": "مفتاح البذور", "enter_seed_phrase": "أدخل عبارة البذور الخاصة بك" -} \ No newline at end of file +} diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index d85b30118..efe823cbf 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -714,6 +714,8 @@ "do_not_have_enough_gas_asset": "Нямате достатъчно ${currency}, за да извършите транзакция с текущите условия на блокчейн мрежата. Имате нужда от повече ${currency}, за да платите таксите за блокчейн мрежа, дори ако изпращате различен актив.", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "Моля, изчакайте dApp да завърши обработката.", + "copyWalletConnectLink": "Копирайте връзката WalletConnect от dApp и я поставете тук", + "enterWalletConnectURI": "Въведете URI на WalletConnect", "seed_key": "Ключ за семена", "enter_seed_phrase": "Въведете вашата фраза за семена" -} \ No newline at end of file +} diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index 998f0b915..8e7697103 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -714,6 +714,8 @@ "do_not_have_enough_gas_asset": "Nemáte dostatek ${currency} k provedení transakce s aktuálními podmínkami blockchainové sítě. K placení poplatků za blockchainovou síť potřebujete více ${currency}, i když posíláte jiné aktivum.", "totp_auth_url": "URL AUTH TOTP", "awaitDAppProcessing": "Počkejte, až dApp dokončí zpracování.", + "copyWalletConnectLink": "Zkopírujte odkaz WalletConnect z dApp a vložte jej sem", + "enterWalletConnectURI": "Zadejte identifikátor URI WalletConnect", "seed_key": "Klíč semen", "enter_seed_phrase": "Zadejte svou frázi semen" -} \ No newline at end of file +} diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 82575200f..baea36b28 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "Sie verfügen nicht über genügend ${currency}, um eine Transaktion unter den aktuellen Bedingungen des Blockchain-Netzwerks durchzuführen. Sie benötigen mehr ${currency}, um die Gebühren für das Blockchain-Netzwerk zu bezahlen, auch wenn Sie einen anderen Vermögenswert senden.", "totp_auth_url": "TOTP-Auth-URL", "awaitDAppProcessing": "Bitte warten Sie, bis die dApp die Verarbeitung abgeschlossen hat.", + "copyWalletConnectLink": "Kopieren Sie den WalletConnect-Link von dApp und fügen Sie ihn hier ein", + "enterWalletConnectURI": "Geben Sie den WalletConnect-URI ein", "seed_key": "Samenschlüssel", "enter_seed_phrase": "Geben Sie Ihre Samenphrase ein" -} \ No newline at end of file +} diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index f30d224c0..5c93c7030 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -723,6 +723,8 @@ "do_not_have_enough_gas_asset": "You do not have enough ${currency} to make a transaction with the current blockchain network conditions. You need more ${currency} to pay blockchain network fees, even if you are sending a different asset.", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "Kindly wait for the dApp to finish processing.", + "copyWalletConnectLink": "Copy the WalletConnect link from dApp and paste here", + "enterWalletConnectURI": "Enter WalletConnect URI", "seed_key": "Seed key", "enter_seed_phrase": "Enter your seed phrase" -} \ No newline at end of file +} diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 049a83e40..20393c775 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "No tienes suficiente ${currency} para realizar una transacción con las condiciones actuales de la red blockchain. Necesita más ${currency} para pagar las tarifas de la red blockchain, incluso si envía un activo diferente.", "totp_auth_url": "URL de autenticación TOTP", "awaitDAppProcessing": "Espere a que la dApp termine de procesarse.", + "copyWalletConnectLink": "Copie el enlace de WalletConnect de dApp y péguelo aquí", + "enterWalletConnectURI": "Ingrese el URI de WalletConnect", "seed_key": "Llave de semilla", "enter_seed_phrase": "Ingrese su frase de semillas" -} \ No newline at end of file +} diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index e6516fb87..c4418c289 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "Vous n'avez pas assez de ${currency} pour effectuer une transaction avec les conditions actuelles du réseau blockchain. Vous avez besoin de plus de ${currency} pour payer les frais du réseau blockchain, même si vous envoyez un actif différent.", "totp_auth_url": "URL D'AUTORISATION TOTP", "awaitDAppProcessing": "Veuillez attendre que le dApp termine le traitement.", + "copyWalletConnectLink": "Copiez le lien WalletConnect depuis dApp et collez-le ici", + "enterWalletConnectURI": "Saisissez l'URI de WalletConnect.", "seed_key": "Clé de graines", "enter_seed_phrase": "Entrez votre phrase de semence" -} \ No newline at end of file +} diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 7d8e8969c..1c0037bff 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -700,6 +700,8 @@ "do_not_have_enough_gas_asset": "Ba ku da isassun ${currency} don yin ma'amala tare da yanayin cibiyar sadarwar blockchain na yanzu. Kuna buƙatar ƙarin ${currency} don biyan kuɗaɗen cibiyar sadarwar blockchain, koda kuwa kuna aika wata kadara daban.", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "Da fatan za a jira dApp ya gama aiki.", + "copyWalletConnectLink": "Kwafi hanyar haɗin WalletConnect daga dApp kuma liƙa a nan", + "enterWalletConnectURI": "Shigar da WalletConnect URI", "seed_key": "Maɓallin iri", "enter_seed_phrase": "Shigar da Sert Sentarku" -} \ No newline at end of file +} diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 4a9e6b284..94e7b425e 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "वर्तमान ब्लॉकचेन नेटवर्क स्थितियों में लेनदेन करने के लिए आपके पास पर्याप्त ${currency} नहीं है। ब्लॉकचेन नेटवर्क शुल्क का भुगतान करने के लिए आपको अधिक ${currency} की आवश्यकता है, भले ही आप एक अलग संपत्ति भेज रहे हों।", "totp_auth_url": "TOTP प्रामाणिक यूआरएल", "awaitDAppProcessing": "कृपया डीएपी की प्रोसेसिंग पूरी होने तक प्रतीक्षा करें।", + "copyWalletConnectLink": "dApp से वॉलेटकनेक्ट लिंक को कॉपी करें और यहां पेस्ट करें", + "enterWalletConnectURI": "वॉलेटकनेक्ट यूआरआई दर्ज करें", "seed_key": "बीज कुंजी", "enter_seed_phrase": "अपना बीज वाक्यांश दर्ज करें" -} \ No newline at end of file +} diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 17391a6d7..50eba6555 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -720,6 +720,8 @@ "do_not_have_enough_gas_asset": "Nemate dovoljno ${currency} da izvršite transakciju s trenutačnim uvjetima blockchain mreže. Trebate više ${currency} da platite naknade za blockchain mrežu, čak i ako šaljete drugu imovinu.", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "Molimo pričekajte da dApp završi obradu.", + "copyWalletConnectLink": "Kopirajte vezu WalletConnect iz dApp-a i zalijepite je ovdje", + "enterWalletConnectURI": "Unesite WalletConnect URI", "seed_key": "Sjemenski ključ", "enter_seed_phrase": "Unesite svoju sjemensku frazu" -} \ No newline at end of file +} diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index 5330ec96c..ea54897d4 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -710,6 +710,8 @@ "do_not_have_enough_gas_asset": "Anda tidak memiliki cukup ${currency} untuk melakukan transaksi dengan kondisi jaringan blockchain saat ini. Anda memerlukan lebih banyak ${currency} untuk membayar biaya jaringan blockchain, meskipun Anda mengirimkan aset yang berbeda.", "totp_auth_url": "URL Otentikasi TOTP", "awaitDAppProcessing": "Mohon tunggu hingga dApp menyelesaikan pemrosesan.", + "copyWalletConnectLink": "Salin tautan WalletConnect dari dApp dan tempel di sini", + "enterWalletConnectURI": "Masukkan URI WalletConnect", "seed_key": "Kunci benih", "enter_seed_phrase": "Masukkan frasa benih Anda" -} \ No newline at end of file +} diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index d0c5a1a87..affd673a3 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "Non hai abbastanza ${currency} per effettuare una transazione con le attuali condizioni della rete blockchain. Hai bisogno di più ${currency} per pagare le commissioni della rete blockchain, anche se stai inviando una risorsa diversa.", "totp_auth_url": "URL DI AUT. TOTP", "awaitDAppProcessing": "Attendi gentilmente che la dApp termini l'elaborazione.", + "copyWalletConnectLink": "Copia il collegamento WalletConnect dalla dApp e incollalo qui", + "enterWalletConnectURI": "Inserisci l'URI di WalletConnect", "seed_key": "Chiave di semi", "enter_seed_phrase": "Inserisci la tua frase di semi" -} \ No newline at end of file +} diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 1d8012237..dbbb91f55 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "現在のブロックチェーン ネットワークの状況では、トランザクションを行うのに十分な ${currency} がありません。別のアセットを送信する場合でも、ブロックチェーン ネットワーク料金を支払うにはさらに ${currency} が必要です。", "totp_auth_url": "TOTP認証URL", "awaitDAppProcessing": "dAppの処理が完了するまでお待ちください。", + "copyWalletConnectLink": "dApp から WalletConnect リンクをコピーし、ここに貼り付けます", + "enterWalletConnectURI": "WalletConnect URI を入力してください", "seed_key": "シードキー", "enter_seed_phrase": "シードフレーズを入力してください" -} \ No newline at end of file +} diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index df5d6f8ea..c4c1a337a 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -720,6 +720,8 @@ "do_not_have_enough_gas_asset": "현재 블록체인 네트워크 조건으로 거래를 하기에는 ${currency}이(가) 충분하지 않습니다. 다른 자산을 보내더라도 블록체인 네트워크 수수료를 지불하려면 ${currency}가 더 필요합니다.", "totp_auth_url": "TOTP 인증 URL", "awaitDAppProcessing": "dApp이 처리를 마칠 때까지 기다려주세요.", + "copyWalletConnectLink": "dApp에서 WalletConnect 링크를 복사하여 여기에 붙여넣으세요.", + "enterWalletConnectURI": "WalletConnect URI를 입력하세요.", "seed_key": "시드 키", "enter_seed_phrase": "시드 문구를 입력하십시오" -} \ No newline at end of file +} diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index e2c4a55f9..929740c93 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -720,6 +720,8 @@ "do_not_have_enough_gas_asset": "လက်ရှိ blockchain ကွန်ရက်အခြေအနေများနှင့် အရောင်းအဝယ်ပြုလုပ်ရန် သင့်တွင် ${currency} လုံလောက်မှုမရှိပါ။ သင်သည် မတူညီသော ပိုင်ဆိုင်မှုတစ်ခုကို ပေးပို့နေသော်လည်း blockchain ကွန်ရက်အခကြေးငွေကို ပေးဆောင်ရန် သင်သည် နောက်ထပ် ${currency} လိုအပ်ပါသည်။", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "ကျေးဇူးပြု၍ dApp ကို စီမံလုပ်ဆောင်ခြင်း အပြီးသတ်ရန် စောင့်ပါ။", + "copyWalletConnectLink": "dApp မှ WalletConnect လင့်ခ်ကို ကူးယူပြီး ဤနေရာတွင် ကူးထည့်ပါ။", + "enterWalletConnectURI": "WalletConnect URI ကိုရိုက်ထည့်ပါ။", "seed_key": "မျိုးစေ့သော့", "enter_seed_phrase": "သင့်ရဲ့မျိုးစေ့စကားစုကိုရိုက်ထည့်ပါ" -} \ No newline at end of file +} diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index fd95f5299..fab3fd6d0 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "U heeft niet genoeg ${currency} om een transactie uit te voeren met de huidige blockchain-netwerkomstandigheden. U heeft meer ${currency} nodig om blockchain-netwerkkosten te betalen, zelfs als u een ander item verzendt.", "totp_auth_url": "TOTP AUTH-URL", "awaitDAppProcessing": "Wacht tot de dApp klaar is met verwerken.", + "copyWalletConnectLink": "Kopieer de WalletConnect-link van dApp en plak deze hier", + "enterWalletConnectURI": "Voer WalletConnect-URI in", "seed_key": "Zaadsleutel", "enter_seed_phrase": "Voer uw zaadzin in" -} \ No newline at end of file +} diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 561d0a731..54f760c05 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "Nie masz wystarczającej ilości ${currency}, aby dokonać transakcji przy bieżących warunkach sieci blockchain. Potrzebujesz więcej ${currency}, aby uiścić opłaty za sieć blockchain, nawet jeśli wysyłasz inny zasób.", "totp_auth_url": "Adres URL TOTP AUTH", "awaitDAppProcessing": "Poczekaj, aż dApp zakończy przetwarzanie.", + "copyWalletConnectLink": "Skopiuj link do WalletConnect z dApp i wklej tutaj", + "enterWalletConnectURI": "Wprowadź identyfikator URI WalletConnect", "seed_key": "Klucz nasion", "enter_seed_phrase": "Wprowadź swoją frazę nasienną" -} \ No newline at end of file +} diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 21378e9ba..5ac12896b 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -721,6 +721,8 @@ "do_not_have_enough_gas_asset": "Você não tem ${currency} suficiente para fazer uma transação com as condições atuais da rede blockchain. Você precisa de mais ${currency} para pagar as taxas da rede blockchain, mesmo se estiver enviando um ativo diferente.", "totp_auth_url": "URL de autenticação TOTP", "awaitDAppProcessing": "Aguarde até que o dApp termine o processamento.", + "copyWalletConnectLink": "Copie o link WalletConnect do dApp e cole aqui", + "enterWalletConnectURI": "Insira o URI do WalletConnect", "seed_key": "Chave de semente", "enter_seed_phrase": "Digite sua frase de semente" -} \ No newline at end of file +} diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index e12b010dd..ef3e11fb4 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "У вас недостаточно ${currency} для совершения транзакции при текущих условиях сети блокчейн. Вам нужно больше ${currency} для оплаты комиссий за сеть блокчейна, даже если вы отправляете другой актив.", "totp_auth_url": "URL-адрес TOTP-АВТОРИЗАЦИИ", "awaitDAppProcessing": "Пожалуйста, подождите, пока dApp завершит обработку.", + "copyWalletConnectLink": "Скопируйте ссылку WalletConnect из dApp и вставьте сюда.", + "enterWalletConnectURI": "Введите URI WalletConnect", "seed_key": "Ключ семян", "enter_seed_phrase": "Введите свою семенную фразу" -} \ No newline at end of file +} diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index 7ac83fc00..f49133249 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -720,6 +720,8 @@ "do_not_have_enough_gas_asset": "คุณมี ${currency} ไม่เพียงพอที่จะทำธุรกรรมกับเงื่อนไขเครือข่ายบล็อคเชนในปัจจุบัน คุณต้องมี ${currency} เพิ่มขึ้นเพื่อชำระค่าธรรมเนียมเครือข่ายบล็อคเชน แม้ว่าคุณจะส่งสินทรัพย์อื่นก็ตาม", "totp_auth_url": "URL การตรวจสอบสิทธิ์ TOTP", "awaitDAppProcessing": "โปรดรอให้ dApp ประมวลผลเสร็จสิ้น", + "copyWalletConnectLink": "คัดลอกลิงก์ WalletConnect จาก dApp แล้ววางที่นี่", + "enterWalletConnectURI": "เข้าสู่ WalletConnect URI", "seed_key": "คีย์เมล็ดพันธุ์", "enter_seed_phrase": "ป้อนวลีเมล็ดพันธุ์ของคุณ" -} \ No newline at end of file +} diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb index 9981469a8..893d0ff4b 100644 --- a/res/values/strings_tl.arb +++ b/res/values/strings_tl.arb @@ -717,6 +717,8 @@ "do_not_have_enough_gas_asset": "Wala kang sapat na ${currency} para gumawa ng transaksyon sa kasalukuyang kundisyon ng network ng blockchain. Kailangan mo ng higit pang ${currency} upang magbayad ng mga bayarin sa network ng blockchain, kahit na nagpapadala ka ng ibang asset.", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "Pakihintay na matapos ang pagproseso ng dApp.", + "copyWalletConnectLink": "Kopyahin ang link ng WalletConnect mula sa dApp at i-paste dito", + "enterWalletConnectURI": "Ilagay ang WalletConnect URI", "seed_key": "Seed Key", "enter_seed_phrase": "Ipasok ang iyong pariralang binhi" -} \ No newline at end of file +} diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 6c838b036..44f2aad44 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -720,6 +720,8 @@ "do_not_have_enough_gas_asset": "Mevcut blockchain ağ koşullarıyla işlem yapmak için yeterli ${currency} paranız yok. Farklı bir varlık gönderiyor olsanız bile blockchain ağ ücretlerini ödemek için daha fazla ${currency} miktarına ihtiyacınız var.", "totp_auth_url": "TOTP YETKİ URL'si", "awaitDAppProcessing": "Lütfen dApp'in işlemeyi bitirmesini bekleyin.", + "copyWalletConnectLink": "WalletConnect bağlantısını dApp'ten kopyalayıp buraya yapıştırın", + "enterWalletConnectURI": "WalletConnect URI'sini girin", "seed_key": "Tohum", "enter_seed_phrase": "Tohum ifadenizi girin" -} \ No newline at end of file +} diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index b7720fb99..dc20fd1b0 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -722,6 +722,8 @@ "do_not_have_enough_gas_asset": "У вас недостатньо ${currency}, щоб здійснити трансакцію з поточними умовами мережі блокчейн. Вам потрібно більше ${currency}, щоб сплатити комісію мережі блокчейн, навіть якщо ви надсилаєте інший актив.", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "Зачекайте, доки dApp завершить обробку.", + "copyWalletConnectLink": "Скопіюйте посилання WalletConnect із dApp і вставте сюди", + "enterWalletConnectURI": "Введіть URI WalletConnect", "seed_key": "Насіннєвий ключ", "enter_seed_phrase": "Введіть свою насіннєву фразу" -} \ No newline at end of file +} diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index f7cbdd5e4..c4be0af9e 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -714,6 +714,8 @@ "do_not_have_enough_gas_asset": "آپ کے پاس موجودہ بلاکچین نیٹ ورک کی شرائط کے ساتھ لین دین کرنے کے لیے کافی ${currency} نہیں ہے۔ آپ کو بلاکچین نیٹ ورک کی فیس ادا کرنے کے لیے مزید ${currency} کی ضرورت ہے، چاہے آپ کوئی مختلف اثاثہ بھیج رہے ہوں۔", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "۔ﮟﯾﺮﮐ ﺭﺎﻈﺘﻧﺍ ﺎﮐ ﮯﻧﻮﮨ ﻞﻤﮑﻣ ﮓﻨﺴﯿﺳﻭﺮﭘ ﮯﮐ dApp ﻡﺮﮐ ﮦﺍﺮﺑ", + "copyWalletConnectLink": "dApp ﮯﺳ WalletConnect ۔ﮟﯾﺮﮐ ﭧﺴﯿﭘ ﮞﺎﮩﯾ ﺭﻭﺍ ﮟﯾﺮﮐ ﯽﭘﺎﮐ ﻮﮐ ﮏﻨﻟ", + "enterWalletConnectURI": "WalletConnect URI ۔ﮟﯾﺮﮐ ﺝﺭﺩ", "seed_key": "بیج کی کلید", "enter_seed_phrase": "اپنے بیج کا جملہ درج کریں" -} \ No newline at end of file +} diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index a5e3ca263..14cc4f086 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -716,6 +716,8 @@ "do_not_have_enough_gas_asset": "O ko ni to ${currency} lati ṣe idunadura kan pẹlu awọn ipo nẹtiwọki blockchain lọwọlọwọ. O nilo diẹ sii ${currency} lati san awọn owo nẹtiwọọki blockchain, paapaa ti o ba nfi dukia miiran ranṣẹ.", "totp_auth_url": "TOTP AUTH URL", "awaitDAppProcessing": "Fi inurere duro fun dApp lati pari sisẹ.", + "copyWalletConnectLink": "Daakọ ọna asopọ WalletConnect lati dApp ki o si lẹẹmọ nibi", + "enterWalletConnectURI": "Tẹ WalletConnect URI sii", "seed_key": "Bọtini Ose", "enter_seed_phrase": "Tẹ ọrọ-iru irugbin rẹ" -} \ No newline at end of file +} diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index a2ea6b73f..75b16b0f7 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -721,6 +721,8 @@ "do_not_have_enough_gas_asset": "您没有足够的 ${currency} 来在当前的区块链网络条件下进行交易。即使您发送的是不同的资产,您也需要更多的 ${currency} 来支付区块链网络费用。", "totp_auth_url": "TOTP 授权 URL", "awaitDAppProcessing": "请等待 dApp 处理完成。", + "copyWalletConnectLink": "从 dApp 复制 WalletConnect 链接并粘贴到此处", + "enterWalletConnectURI": "输入 WalletConnect URI", "seed_key": "种子钥匙", "enter_seed_phrase": "输入您的种子短语" -} \ No newline at end of file +} From 759b7a5a04bbd1eda486be15d89f946dd51992ac Mon Sep 17 00:00:00 2001 From: Matthew Fosse Date: Thu, 19 Oct 2023 21:24:54 -0400 Subject: [PATCH 08/10] disable bio auth for macos (#1138) * disable bio auth for macos * Disable for Linux as well --------- Co-authored-by: fossephate Co-authored-by: Omar Hatem --- lib/core/backup_service.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core/backup_service.dart b/lib/core/backup_service.dart index ad4fe9623..d439969f5 100644 --- a/lib/core/backup_service.dart +++ b/lib/core/backup_service.dart @@ -285,7 +285,7 @@ class BackupService { await _sharedPreferences.setInt( PreferencesKey.currentTransactionPriorityKeyLegacy, currentTransactionPriorityKeyLegacy); - if (allowBiometricalAuthentication != null) + if (allowBiometricalAuthentication != null && !Platform.isMacOS && !Platform.isLinux) await _sharedPreferences.setBool( PreferencesKey.allowBiometricalAuthenticationKey, allowBiometricalAuthentication); From 39d907358d9c618e95d5ed1d672d777b8a1d3f89 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Fri, 20 Oct 2023 14:52:26 +0300 Subject: [PATCH 09/10] new versions update add semantics for adding new contact --- assets/text/Monerocom_Release_Notes.txt | 7 ++- assets/text/Release_Notes.txt | 5 +- .../screens/contact/contact_list_page.dart | 62 ++++++++++--------- res/values/strings_ar.arb | 3 +- res/values/strings_bg.arb | 3 +- res/values/strings_cs.arb | 3 +- res/values/strings_de.arb | 3 +- res/values/strings_en.arb | 3 +- res/values/strings_es.arb | 3 +- res/values/strings_fr.arb | 3 +- res/values/strings_ha.arb | 3 +- res/values/strings_hi.arb | 3 +- res/values/strings_hr.arb | 3 +- res/values/strings_id.arb | 3 +- res/values/strings_it.arb | 3 +- res/values/strings_ja.arb | 3 +- res/values/strings_ko.arb | 3 +- res/values/strings_my.arb | 3 +- res/values/strings_nl.arb | 3 +- res/values/strings_pl.arb | 3 +- res/values/strings_pt.arb | 3 +- res/values/strings_ru.arb | 3 +- res/values/strings_th.arb | 3 +- res/values/strings_tl.arb | 3 +- res/values/strings_tr.arb | 3 +- res/values/strings_uk.arb | 3 +- res/values/strings_ur.arb | 3 +- res/values/strings_yo.arb | 3 +- res/values/strings_zh.arb | 3 +- scripts/android/app_env.sh | 8 +-- scripts/ios/app_env.sh | 8 +-- scripts/macos/app_env.sh | 4 +- 32 files changed, 102 insertions(+), 70 deletions(-) diff --git a/assets/text/Monerocom_Release_Notes.txt b/assets/text/Monerocom_Release_Notes.txt index 46a62494b..fb2cd98fe 100644 --- a/assets/text/Monerocom_Release_Notes.txt +++ b/assets/text/Monerocom_Release_Notes.txt @@ -1,3 +1,4 @@ -Support getting Addresses from ENS and Mastodon -Bug fixes -Minor enhancements \ No newline at end of file +BirdPay enhancements +Nano fixes and improvements +Minor bug fixes +Accessibility enhancements \ No newline at end of file diff --git a/assets/text/Release_Notes.txt b/assets/text/Release_Notes.txt index 795ec3427..fb2cd98fe 100644 --- a/assets/text/Release_Notes.txt +++ b/assets/text/Release_Notes.txt @@ -1,3 +1,4 @@ -Add BitcoinCash (BCH) -Bug fixes +BirdPay enhancements +Nano fixes and improvements +Minor bug fixes Accessibility enhancements \ No newline at end of file diff --git a/lib/src/screens/contact/contact_list_page.dart b/lib/src/screens/contact/contact_list_page.dart index b551875f9..d9e3c0c85 100644 --- a/lib/src/screens/contact/contact_list_page.dart +++ b/lib/src/screens/contact/contact_list_page.dart @@ -35,35 +35,39 @@ class ContactListPage extends BasePage { decoration: BoxDecoration( shape: BoxShape.circle, color: Theme.of(context).extension()!.buttonBackgroundColor), - child: Stack( - alignment: Alignment.center, - children: [ - Icon( - Icons.add, - color: Theme.of(context).appBarTheme.titleTextStyle!.color, - size: 22.0, - ), - ButtonTheme( - minWidth: 32.0, - height: 32.0, - child: TextButton( - // FIX-ME: Style - //shape: CircleBorder(), - onPressed: () async { - if (contactListViewModel.shouldRequireTOTP2FAForAddingContacts) { - authService.authenticateAction( - context, - route: Routes.addressBookAddContact, - conditionToDetermineIfToUse2FA: - contactListViewModel.shouldRequireTOTP2FAForAddingContacts, - ); - } else { - await Navigator.of(context).pushNamed(Routes.addressBookAddContact); - } - }, - child: Offstage()), - ) - ], + child: Semantics( + label: S.of(context).add_contact, + button: true, + child: Stack( + alignment: Alignment.center, + children: [ + Icon( + Icons.add, + color: Theme.of(context).appBarTheme.titleTextStyle!.color, + size: 22.0, + ), + ButtonTheme( + minWidth: 32.0, + height: 32.0, + child: TextButton( + // FIX-ME: Style + //shape: CircleBorder(), + onPressed: () async { + if (contactListViewModel.shouldRequireTOTP2FAForAddingContacts) { + authService.authenticateAction( + context, + route: Routes.addressBookAddContact, + conditionToDetermineIfToUse2FA: + contactListViewModel.shouldRequireTOTP2FAForAddingContacts, + ); + } else { + await Navigator.of(context).pushNamed(Routes.addressBookAddContact); + } + }, + child: Offstage()), + ) + ], + ), ), ), ); diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index ac3a7d821..8076405cb 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -721,5 +721,6 @@ "copyWalletConnectLink": "ﺎﻨﻫ ﻪﻘﺼﻟﺍﻭ dApp ﻦﻣ WalletConnect ﻂﺑﺍﺭ ﺦﺴﻧﺍ", "enterWalletConnectURI": "WalletConnect ـﻟ URI ﻞﺧﺩﺃ", "seed_key": "مفتاح البذور", - "enter_seed_phrase": "أدخل عبارة البذور الخاصة بك" + "enter_seed_phrase": "أدخل عبارة البذور الخاصة بك", + "add_contact": " ﻝﺎﺼﺗﺍ ﺔﻬﺟ ﺔﻓﺎﺿﺇ" } diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index efe823cbf..419b800ba 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -717,5 +717,6 @@ "copyWalletConnectLink": "Копирайте връзката WalletConnect от dApp и я поставете тук", "enterWalletConnectURI": "Въведете URI на WalletConnect", "seed_key": "Ключ за семена", - "enter_seed_phrase": "Въведете вашата фраза за семена" + "enter_seed_phrase": "Въведете вашата фраза за семена", + "add_contact": "Добави контакт" } diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index 8e7697103..9b0d94cda 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -717,5 +717,6 @@ "copyWalletConnectLink": "Zkopírujte odkaz WalletConnect z dApp a vložte jej sem", "enterWalletConnectURI": "Zadejte identifikátor URI WalletConnect", "seed_key": "Klíč semen", - "enter_seed_phrase": "Zadejte svou frázi semen" + "enter_seed_phrase": "Zadejte svou frázi semen", + "add_contact": "Přidat kontakt" } diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index baea36b28..bb0fc0541 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "Kopieren Sie den WalletConnect-Link von dApp und fügen Sie ihn hier ein", "enterWalletConnectURI": "Geben Sie den WalletConnect-URI ein", "seed_key": "Samenschlüssel", - "enter_seed_phrase": "Geben Sie Ihre Samenphrase ein" + "enter_seed_phrase": "Geben Sie Ihre Samenphrase ein", + "add_contact": "Kontakt hinzufügen" } diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 5c93c7030..bd821fa2b 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -726,5 +726,6 @@ "copyWalletConnectLink": "Copy the WalletConnect link from dApp and paste here", "enterWalletConnectURI": "Enter WalletConnect URI", "seed_key": "Seed key", - "enter_seed_phrase": "Enter your seed phrase" + "enter_seed_phrase": "Enter your seed phrase", + "add_contact": "Add contact" } diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 20393c775..3810331eb 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "Copie el enlace de WalletConnect de dApp y péguelo aquí", "enterWalletConnectURI": "Ingrese el URI de WalletConnect", "seed_key": "Llave de semilla", - "enter_seed_phrase": "Ingrese su frase de semillas" + "enter_seed_phrase": "Ingrese su frase de semillas", + "add_contact": "Agregar contacto" } diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index c4418c289..f7b30158c 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "Copiez le lien WalletConnect depuis dApp et collez-le ici", "enterWalletConnectURI": "Saisissez l'URI de WalletConnect.", "seed_key": "Clé de graines", - "enter_seed_phrase": "Entrez votre phrase de semence" + "enter_seed_phrase": "Entrez votre phrase de semence", + "add_contact": "Ajouter le contact" } diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 1c0037bff..eeeaa0e2c 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -703,5 +703,6 @@ "copyWalletConnectLink": "Kwafi hanyar haɗin WalletConnect daga dApp kuma liƙa a nan", "enterWalletConnectURI": "Shigar da WalletConnect URI", "seed_key": "Maɓallin iri", - "enter_seed_phrase": "Shigar da Sert Sentarku" + "enter_seed_phrase": "Shigar da Sert Sentarku", + "add_contact": "Ƙara lamba" } diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 94e7b425e..1d87df54a 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "dApp से वॉलेटकनेक्ट लिंक को कॉपी करें और यहां पेस्ट करें", "enterWalletConnectURI": "वॉलेटकनेक्ट यूआरआई दर्ज करें", "seed_key": "बीज कुंजी", - "enter_seed_phrase": "अपना बीज वाक्यांश दर्ज करें" + "enter_seed_phrase": "अपना बीज वाक्यांश दर्ज करें", + "add_contact": "संपर्क जोड़ें" } diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 50eba6555..cadf79772 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -723,5 +723,6 @@ "copyWalletConnectLink": "Kopirajte vezu WalletConnect iz dApp-a i zalijepite je ovdje", "enterWalletConnectURI": "Unesite WalletConnect URI", "seed_key": "Sjemenski ključ", - "enter_seed_phrase": "Unesite svoju sjemensku frazu" + "enter_seed_phrase": "Unesite svoju sjemensku frazu", + "add_contact": "Dodaj kontakt" } diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index ea54897d4..903199b42 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -713,5 +713,6 @@ "copyWalletConnectLink": "Salin tautan WalletConnect dari dApp dan tempel di sini", "enterWalletConnectURI": "Masukkan URI WalletConnect", "seed_key": "Kunci benih", - "enter_seed_phrase": "Masukkan frasa benih Anda" + "enter_seed_phrase": "Masukkan frasa benih Anda", + "add_contact": "Tambah kontak" } diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index affd673a3..e12eba3cb 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "Copia il collegamento WalletConnect dalla dApp e incollalo qui", "enterWalletConnectURI": "Inserisci l'URI di WalletConnect", "seed_key": "Chiave di semi", - "enter_seed_phrase": "Inserisci la tua frase di semi" + "enter_seed_phrase": "Inserisci la tua frase di semi", + "add_contact": "Aggiungi contatto" } diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index dbbb91f55..6df16d142 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "dApp から WalletConnect リンクをコピーし、ここに貼り付けます", "enterWalletConnectURI": "WalletConnect URI を入力してください", "seed_key": "シードキー", - "enter_seed_phrase": "シードフレーズを入力してください" + "enter_seed_phrase": "シードフレーズを入力してください", + "add_contact": "連絡先を追加" } diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index c4c1a337a..6386abfde 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -723,5 +723,6 @@ "copyWalletConnectLink": "dApp에서 WalletConnect 링크를 복사하여 여기에 붙여넣으세요.", "enterWalletConnectURI": "WalletConnect URI를 입력하세요.", "seed_key": "시드 키", - "enter_seed_phrase": "시드 문구를 입력하십시오" + "enter_seed_phrase": "시드 문구를 입력하십시오", + "add_contact": "주소록에 추가" } diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index 929740c93..d2f584b22 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -723,5 +723,6 @@ "copyWalletConnectLink": "dApp မှ WalletConnect လင့်ခ်ကို ကူးယူပြီး ဤနေရာတွင် ကူးထည့်ပါ။", "enterWalletConnectURI": "WalletConnect URI ကိုရိုက်ထည့်ပါ။", "seed_key": "မျိုးစေ့သော့", - "enter_seed_phrase": "သင့်ရဲ့မျိုးစေ့စကားစုကိုရိုက်ထည့်ပါ" + "enter_seed_phrase": "သင့်ရဲ့မျိုးစေ့စကားစုကိုရိုက်ထည့်ပါ", + "add_contact": "အဆက်အသွယ်ထည့်ပါ။" } diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index fab3fd6d0..c05ec8fba 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "Kopieer de WalletConnect-link van dApp en plak deze hier", "enterWalletConnectURI": "Voer WalletConnect-URI in", "seed_key": "Zaadsleutel", - "enter_seed_phrase": "Voer uw zaadzin in" + "enter_seed_phrase": "Voer uw zaadzin in", + "add_contact": "Contactpersoon toevoegen" } diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 54f760c05..2137ce464 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "Skopiuj link do WalletConnect z dApp i wklej tutaj", "enterWalletConnectURI": "Wprowadź identyfikator URI WalletConnect", "seed_key": "Klucz nasion", - "enter_seed_phrase": "Wprowadź swoją frazę nasienną" + "enter_seed_phrase": "Wprowadź swoją frazę nasienną", + "add_contact": "Dodaj kontakt" } diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 5ac12896b..96bb7f355 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -724,5 +724,6 @@ "copyWalletConnectLink": "Copie o link WalletConnect do dApp e cole aqui", "enterWalletConnectURI": "Insira o URI do WalletConnect", "seed_key": "Chave de semente", - "enter_seed_phrase": "Digite sua frase de semente" + "enter_seed_phrase": "Digite sua frase de semente", + "add_contact": "Adicionar contato" } diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index ef3e11fb4..503a7898b 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "Скопируйте ссылку WalletConnect из dApp и вставьте сюда.", "enterWalletConnectURI": "Введите URI WalletConnect", "seed_key": "Ключ семян", - "enter_seed_phrase": "Введите свою семенную фразу" + "enter_seed_phrase": "Введите свою семенную фразу", + "add_contact": "Добавить контакт" } diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index f49133249..6fc6a40ff 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -723,5 +723,6 @@ "copyWalletConnectLink": "คัดลอกลิงก์ WalletConnect จาก dApp แล้ววางที่นี่", "enterWalletConnectURI": "เข้าสู่ WalletConnect URI", "seed_key": "คีย์เมล็ดพันธุ์", - "enter_seed_phrase": "ป้อนวลีเมล็ดพันธุ์ของคุณ" + "enter_seed_phrase": "ป้อนวลีเมล็ดพันธุ์ของคุณ", + "add_contact": "เพิ่มผู้ติดต่อ" } diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb index 893d0ff4b..9087d2f7c 100644 --- a/res/values/strings_tl.arb +++ b/res/values/strings_tl.arb @@ -720,5 +720,6 @@ "copyWalletConnectLink": "Kopyahin ang link ng WalletConnect mula sa dApp at i-paste dito", "enterWalletConnectURI": "Ilagay ang WalletConnect URI", "seed_key": "Seed Key", - "enter_seed_phrase": "Ipasok ang iyong pariralang binhi" + "enter_seed_phrase": "Ipasok ang iyong pariralang binhi", + "add_contact": "Magdagdag ng contact" } diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 44f2aad44..353ef0184 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -723,5 +723,6 @@ "copyWalletConnectLink": "WalletConnect bağlantısını dApp'ten kopyalayıp buraya yapıştırın", "enterWalletConnectURI": "WalletConnect URI'sini girin", "seed_key": "Tohum", - "enter_seed_phrase": "Tohum ifadenizi girin" + "enter_seed_phrase": "Tohum ifadenizi girin", + "add_contact": "Kişi ekle" } diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index dc20fd1b0..9c67c532a 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -725,5 +725,6 @@ "copyWalletConnectLink": "Скопіюйте посилання WalletConnect із dApp і вставте сюди", "enterWalletConnectURI": "Введіть URI WalletConnect", "seed_key": "Насіннєвий ключ", - "enter_seed_phrase": "Введіть свою насіннєву фразу" + "enter_seed_phrase": "Введіть свою насіннєву фразу", + "add_contact": "Додати контакт" } diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index c4be0af9e..503be3366 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -717,5 +717,6 @@ "copyWalletConnectLink": "dApp ﮯﺳ WalletConnect ۔ﮟﯾﺮﮐ ﭧﺴﯿﭘ ﮞﺎﮩﯾ ﺭﻭﺍ ﮟﯾﺮﮐ ﯽﭘﺎﮐ ﻮﮐ ﮏﻨﻟ", "enterWalletConnectURI": "WalletConnect URI ۔ﮟﯾﺮﮐ ﺝﺭﺩ", "seed_key": "بیج کی کلید", - "enter_seed_phrase": "اپنے بیج کا جملہ درج کریں" + "enter_seed_phrase": "اپنے بیج کا جملہ درج کریں", + "add_contact": " ۔ﮟﯾﺮﮐ ﻞﻣﺎﺷ ﮧﻄﺑﺍﺭ" } diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index 14cc4f086..a2b3e7979 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -719,5 +719,6 @@ "copyWalletConnectLink": "Daakọ ọna asopọ WalletConnect lati dApp ki o si lẹẹmọ nibi", "enterWalletConnectURI": "Tẹ WalletConnect URI sii", "seed_key": "Bọtini Ose", - "enter_seed_phrase": "Tẹ ọrọ-iru irugbin rẹ" + "enter_seed_phrase": "Tẹ ọrọ-iru irugbin rẹ", + "add_contact": "Fi olubasọrọ kun" } diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 75b16b0f7..1c47ca2ba 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -724,5 +724,6 @@ "copyWalletConnectLink": "从 dApp 复制 WalletConnect 链接并粘贴到此处", "enterWalletConnectURI": "输入 WalletConnect URI", "seed_key": "种子钥匙", - "enter_seed_phrase": "输入您的种子短语" + "enter_seed_phrase": "输入您的种子短语", + "add_contact": "增加联系人" } diff --git a/scripts/android/app_env.sh b/scripts/android/app_env.sh index 356cf03cd..5705fbe51 100644 --- a/scripts/android/app_env.sh +++ b/scripts/android/app_env.sh @@ -15,15 +15,15 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN) APP_ANDROID_TYPE=$1 MONERO_COM_NAME="Monero.com" -MONERO_COM_VERSION="1.7.1" -MONERO_COM_BUILD_NUMBER=62 +MONERO_COM_VERSION="1.7.2" +MONERO_COM_BUILD_NUMBER=63 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.10.1" -CAKEWALLET_BUILD_NUMBER=176 +CAKEWALLET_VERSION="4.10.2" +CAKEWALLET_BUILD_NUMBER=177 CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet" CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet" CAKEWALLET_SCHEME="cakewallet" diff --git a/scripts/ios/app_env.sh b/scripts/ios/app_env.sh index ae5a90bc3..7c9852243 100644 --- a/scripts/ios/app_env.sh +++ b/scripts/ios/app_env.sh @@ -13,13 +13,13 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN) APP_IOS_TYPE=$1 MONERO_COM_NAME="Monero.com" -MONERO_COM_VERSION="1.7.1" -MONERO_COM_BUILD_NUMBER=60 +MONERO_COM_VERSION="1.7.2" +MONERO_COM_BUILD_NUMBER=61 MONERO_COM_BUNDLE_ID="com.cakewallet.monero" CAKEWALLET_NAME="Cake Wallet" -CAKEWALLET_VERSION="4.10.1" -CAKEWALLET_BUILD_NUMBER=190 +CAKEWALLET_VERSION="4.10.2" +CAKEWALLET_BUILD_NUMBER=191 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" HAVEN_NAME="Haven" diff --git a/scripts/macos/app_env.sh b/scripts/macos/app_env.sh index 37c2b3441..687913227 100755 --- a/scripts/macos/app_env.sh +++ b/scripts/macos/app_env.sh @@ -15,8 +15,8 @@ if [ -n "$1" ]; then fi CAKEWALLET_NAME="Cake Wallet" -CAKEWALLET_VERSION="1.3.1" -CAKEWALLET_BUILD_NUMBER=37 +CAKEWALLET_VERSION="1.3.2" +CAKEWALLET_BUILD_NUMBER=38 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then From 5420e0ce9a911e73d323c2c3a8c531e5b2f1c405 Mon Sep 17 00:00:00 2001 From: OmarHatem Date: Mon, 23 Oct 2023 16:45:49 +0300 Subject: [PATCH 10/10] update macos build number --- scripts/macos/app_env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/macos/app_env.sh b/scripts/macos/app_env.sh index 687913227..88f1c9774 100755 --- a/scripts/macos/app_env.sh +++ b/scripts/macos/app_env.sh @@ -16,7 +16,7 @@ fi CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_VERSION="1.3.2" -CAKEWALLET_BUILD_NUMBER=38 +CAKEWALLET_BUILD_NUMBER=39 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then