From 78a003917c3b19bd6e8d85bfb031b54d5084aa98 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 9 Feb 2021 21:21:59 +0000 Subject: [PATCH 1/4] Translate /loc/en.json in fa_IR review completed for the source file '/loc/en.json' on the 'fa_IR' language. --- loc/fa.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/loc/fa.json b/loc/fa.json index 15401b368..64d7e4f53 100644 --- a/loc/fa.json +++ b/loc/fa.json @@ -35,12 +35,12 @@ "undo": "بازگشت به حالت قبل" }, "errors": { - "broadcast": "انتشار ناموفق بود", + "broadcast": "انتشار ناموفق بود.", "error": "خطا", "network": "خطای شبکه" }, "hodl": { - "are_you_sure_you_want_to_logout": "آیا مطمئن هستید که می‌خواهید از HodlHodl خارج شوید؟", + "are_you_sure_you_want_to_logout": "آیا مطمئن هستید که می‌خواهید از Hodl Hodl خارج شوید؟", "cont_address_escrow": "اسکرو", "cont_address_to": "به", "cont_buying": "خرید", @@ -81,7 +81,7 @@ "logout": "خروج", "mycont": "قراردادهای من", "offer_accept": "قبول پیشنهاد", - "offer_account_finish": "به‌نظر می‌رسد شما ثبت‌نام را در HodlHodl تکمیل نکرده‌اید. آیا می‌خواهید اکنون ساخت حساب را به‌پایان برسانید؟", + "offer_account_finish": "به‌نظر می‌رسد شما ثبت‌نام را در Hodl Hodl تکمیل نکرده‌اید. آیا می‌خواهید اکنون ساخت حساب را به‌پایان برسانید؟", "offer_choosemethod": "انتخاب روش پرداخت", "offer_confirmations": "تأییدها", "offer_minmax": "حداقل/حداکثر", @@ -112,11 +112,11 @@ "additional_info": "اطلاعات بیشتر", "for": "برای: ", "lightning_invoice": "صورت‌حساب لایتنینگ", - "has_been_paid": "این صورت‌حساب پرداخت شده است", + "has_been_paid": "این صورت‌حساب پرداخت شده است.", "open_direct_channel": "کانال مستقیمی با این گره باز کن:", "please_pay": "لطفاً", "preimage": "پیش‌نگاره", - "sats": "ساتوشی بپردازید", + "sats": "ساتوشی بپردازید.", "wasnt_paid_and_expired": "این صورت‌حساب پرداخت نشده و منقضی شده است." }, "plausibledeniability": { @@ -171,17 +171,17 @@ "details_add_rec_add": "افزودن گیرنده", "details_add_rec_rem": "حذف گیرنده", "details_address": "آدرس", - "details_address_field_is_not_valid": "آدرس معتبر نیست", + "details_address_field_is_not_valid": "آدرس معتبر نیست.", "details_adv_fee_bump": "امکان افزایش کارمزد", "details_adv_full": "از کل موجودی استفاده کن", "details_adv_full_remove": "گیرنده‌های دیگر شما از این تراکنش حذف خواهند شد.", "details_adv_full_sure": "آیا مطمئن هستید که می‌خواهید از کل موجودی کیف پولتان برای این تراکنش استفاده کنید؟", "details_adv_import": "واردکردن تراکنش", - "details_amount_field_is_not_valid": "مقدار معتبر نیست", + "details_amount_field_is_not_valid": "مقدار معتبر نیست.", "details_amount_field_is_less_than_minimum_amount_sat": "مقدار تعیین‌شده بسیار کم است. لطفاً مقداری بیشتر از ۵۰۰ ساتوشی را وارد کنید.", "details_create": "ایجاد صورت‌حساب", "details_error_decode": "خطا: ناموفق در رمزگشایی آدرس بیت‌کوین", - "details_fee_field_is_not_valid": "کارمزد معتبر نیست", + "details_fee_field_is_not_valid": "کارمزد معتبر نیست.", "details_next": "بعدی", "details_no_maximum": "کیف پول انتخاب‌شده از محاسبهٔ خودکار حداکثر موجودی پشتیبانی نمی‌کند. آیا مطمئن هستید که می‌خواهید این کیف پول را انتخاب کنید؟", "details_no_multiple": "کیف پول انتخاب‌شده از ارسال بیت‌کوین به چند گیرنده پشتیبانی نمی‌کند. آیا مطمئن هستید که می‌خواهید این کیف پول را انتخاب کنید؟", @@ -264,7 +264,7 @@ "set_electrum_server_as_default": "آیا {server} به‌عنوان سرور پیش‌فرض الکترام تعیین شود؟", "set_lndhub_as_default": "آیا {url} به‌عنوان سرور پیش‌فرض LNDHub تعیین شود؟", "electrum_settings": "تنظیمات الکترام", - "electrum_settings_explain": "برای استفاده از تنظیمات پیش‌فرض خالی بگذارید", + "electrum_settings_explain": "برای استفاده از تنظیمات پیش‌فرض خالی بگذارید.", "electrum_status": "وضعیت", "electrum_clear_alert_title": "تاریخچه پاک شود؟", "electrum_clear_alert_message": "آیا می‌خواهید تاریخچهٔ سرورهای الکترام را پاک کنید؟", @@ -302,8 +302,8 @@ "notifications": "اعلانات", "open_link_in_explorer" : "بازکردن پیوند در مرورگر", "password": "گذرواژه", - "password_explain": "گذرواژه‌ای را که برای رمزگشایی فضای ذخیره‌سازی استفاده خواهید کرد ایجاد کنید", - "passwords_do_not_match": "گذرواژه‌ها مطابقت ندارند", + "password_explain": "گذرواژه‌ای را که برای رمزگشایی فضای ذخیره‌سازی استفاده خواهید کرد ایجاد کنید.", + "passwords_do_not_match": "گذرواژه‌ها مطابقت ندارند.", "plausible_deniability": "انکار موجه", "privacy": "حریم خصوصی", "privacy_read_clipboard": "خواندن کلیپ‌بورد", @@ -333,7 +333,7 @@ "confirmations_lowercase": "{confirmations} تأیید", "cpfp_create": "ایجاد", "cpfp_exp": "ما تراکنش دیگری را ایجاد خواهیم کرد که تراکنش تأییدنشدهٔ شما را خرج می‌کند. کارمزد کل بالاتر از کارمزد تراکنش اصلی خواهد بود، بنابراین سریع‌تر استخراج می‌شود. این کار Child Pays for Parent (به‌اختصار CPFP) نام دارد—فرزند به‌جای والدین می‌پردازد.", - "cpfp_no_bump": "این تراکنش قابلیت افزایش کارمزد را ندارد.", + "cpfp_no_bump": "این تراکنش قابلیت افزایش کارمزد ندارد.", "cpfp_title": "افزایش کارمزد (CPFP)", "details_balance_hide": "پنهان‌کردن موجودی", "details_balance_show": "نمایش موجودی", @@ -419,8 +419,8 @@ "import_title": "واردکردن", "list_create_a_button": "هم‌اکنون اضافه کن", "list_create_a_wallet": "افزودن کیف پول", - "list_create_a_wallet_text": "مجانی است و می‌توانید هر تعداد\nکه دوست داشتید بسازید.", - "list_empty_txs1": "تراکنش‌های شما در اینجا نمایش داده خواهند شد", + "list_create_a_wallet_text": "مجانی است، و می‌توانید هر تعداد\nکه دوست داشتید بسازید.", + "list_empty_txs1": "تراکنش‌های شما در اینجا نمایش داده خواهند شد.", "list_empty_txs1_lightning": "برای تراکنش‌های روزمره بهتر است از کیف پول لایتنینگ استفاده شود. کارمزدها به‌طرز غیرمنصفانه‌ای ارزان و سرعت فوق‌العاده بالاست.", "list_empty_txs2": "با کیف پول خود شروع کنید", "list_empty_txs2_lightning": "\nبرای شروع استفاده، روی «مدیریت دارایی» بزنید و موجودی خود را شارژ کنید.", @@ -439,7 +439,7 @@ "no_ln_wallet_error": "قبل از پرداخت یک صورت‌حساب لایتنینگ، ابتدا باید یک کیف پول لایتنینگ اضافه کنید.", "looks_like_bip38": "این به کلید خصوصی محافظت‌شده با گذرواژه (BIP38) شباهت دارد.", "reorder_title": "بازچینی کیف پول‌ها", - "please_continue_scanning": "لطفاً به اسکن‌کردن ادامه دهید", + "please_continue_scanning": "لطفاً به اسکن‌کردن ادامه دهید.", "scan_error": "خطا در اسکن", "select_no_bitcoin": "هیچ کیف پول بیت‌کوینی درحال‌حاضر دردسترس نیست.", "select_no_bitcoin_exp": "یک کیف پول بیت‌کوین برای پرکردن کیف پول‌های لایتنینگ نیاز است. لطفاً یکی بسازید یا وارد کنید.", @@ -494,15 +494,15 @@ "view_key": "نمایش", "invalid_mnemonics": "به‌نظر نمی‌رسد این عبارت یادیار (mnemonic phrase) معتبر باشد.", "invalid_cosigner": "دادهٔ امضاکنندهٔ مشترک معتبر نیست", - "not_a_multisignature_xpub": "این XPUB از یک کیف پول چندامضایی نیست.", - "invalid_cosigner_format": "امضاکنندهٔ مشترک نادرست: این یک امضاکنندهٔ مشترک برای قالب {format} نیست", + "not_a_multisignature_xpub": "این XPUB از یک کیف پول چندامضایی نیست!", + "invalid_cosigner_format": "امضاکنندهٔ مشترک نادرست: این یک امضاکنندهٔ مشترک برای قالب {format} نیست.", "create_new_key": "جدید بسازید", "scan_or_open_file": "اسکن یا بازکردن فایل", - "i_have_mnemonics": "من سید این کلید را دارم", + "i_have_mnemonics": "من سید این کلید را دارم.", "please_write_down_mnemonics": "لطفاً این عبارت یادیار (mnemonic phrase) را روی کاغذ بنویسید. نگران نباشید، می‌توانید بعداً آن را یادداشت کنید.", "i_wrote_it_down": "خب، آن را نوشتم.", - "type_your_mnemonics": "سید را بنویسید تا کلید گاوصندوق فعلی خود را وارد کنید", - "this_is_cosigners_xpub": "این XPUB امضاکنندهٔ مشترک است—آماده برای واردشدن درون یک کیف پول دیگر. به‌اشتراک‌گذاری آن بی‌خطر است.", + "type_your_mnemonics": "سید را بنویسید تا کلید گاوصندوق فعلی خود را وارد کنید.", + "this_is_cosigners_xpub": "این XPUB امضاکنندهٔ مشترک است—آماده برای واردشدن درون یک کیف پول دیگر. به‌اشتراک‌گذاری آن مانعی ندارد.", "wallet_key_created": "کلید گاوصندوق شما ایجاد شد. لحظه‌ای درنگ کرده تا با خیال راحت از سید خود نسخهٔ پشتیبان تهیه کنید.", "are_you_sure_seed_will_be_lost": "مطمئن هستید؟ درصورتی‌که نسخهٔ پشتیبان نداشته باشید، سید شما ازبین خواهد رفت.", "forget_this_seed": "این سید را فراموش و به‌جای آن از XPUB استفاده کن.", @@ -517,7 +517,7 @@ "ms_help": "راهنما", "ms_help_title": "نحوهٔ کارکرد گاوصندوق‌های چندامضایی: نکات و ترفندها", "ms_help_text": "یک کیف پول با چندین کلید، جهت امنیت بالاتر یا داشتن حساب مشترک", - "ms_help_title1": "استفاده از چند دستگاه توصیه می‌شود", + "ms_help_title1": "استفاده از چند دستگاه توصیه می‌شود.", "ms_help_1": "گاوصندوق با سایر برنامه‌های BlueWallet و کیف پول‌های سازگار با PSBT مانند الکترام (Electrum)، اسپکتر (Specter)، کلدکارد (Coldcard)، کوبو والت (Cobo Vault)، و غیره کار می‌کند.", "ms_help_title2": "ویرایش کلیدها", "ms_help_2": "شما می‌توانید تمام کلیدهای گاوصندوق را در این دستگاه ایجاد کرده و بعداً آن‌ها را ویرایش یا حذف کنید. نگهداری تمام کلیدها روی یک دستگاه امنیت مشابه یک کیف پول بیت‌کوین معمولی را داراست.", @@ -525,7 +525,7 @@ "ms_help_3": "در تنظیمات کیف پول، نسخهٔ پشتیبان گاوصندوق و نیز watch-only خود را خواهید یافت. این نسخهٔ پشتیبان مانند نقشهٔ راهی برای رسیدن به کیف پول شماست. درصورت ازدست‌دادن یکی از سیدهایتان، داشتن نسخهٔ پشتیبان جهت بازیابی کیف پول ضروری است.", "ms_help_title4": "واردکردن گاوصندوق‌ها", "ms_help_4": "برای واردکردن کیف پول چندامضایی، از فایل نسخهٔ پشتیبان و قابلیت واردکردن استفاده کنید. اگر فقط کلیدهای امتدادیافته (XPUB)‌ و سیدها را دارید، می‌توانید هرکدام را جداگانه در روند افزودن کلیدهای گاوصندوق وارد کنید.", - "ms_help_title5": "گزینه‌های پیشرفته", + "ms_help_title5": "حالت پیشرفته", "ms_help_5": "به‌صورت پیش‌فرض، BlueWallet گاوصندوق ۲ از ۳ امضایی تولید می‌کند. برای ایجاد حد نصاب متفاوت یا تغییر نوع آدرس، گزینه‌های پیشرفته را در تنظیمات فعال کنید." }, "is_it_my_address": { From d42798022e06ad485ab7a6a2e907c9105d66616f Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Wed, 10 Feb 2021 03:52:15 +0000 Subject: [PATCH 2/4] fix: upgrade @react-navigation/drawer from 5.11.2 to 5.11.5 Snyk has created this PR to upgrade @react-navigation/drawer from 5.11.2 to 5.11.5. See this package in npm: https://www.npmjs.com/package/@react-navigation/drawer See this project in Snyk: https://app.snyk.io/org/bluewallet/project/4d0df22a-0152-410a-8584-6df0d0a596d4?utm_source=github&utm_medium=upgrade-pr --- package-lock.json | 10 +++------- package.json | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 27a3394ad..364962a58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6419,9 +6419,9 @@ } }, "@react-navigation/drawer": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/@react-navigation/drawer/-/drawer-5.11.2.tgz", - "integrity": "sha512-xCD/Q9Yne5CYsvKr+eMMNx4riQJMy5ghi5dEnvntsdJFx2Lq+UETyvFeTH7iXVXo2JOOxNddMvZJrds0B7+nCg==", + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@react-navigation/drawer/-/drawer-5.11.5.tgz", + "integrity": "sha512-amDnbVIjkp/ZxNcZ2LyICNiRddUYgFFkgKsHgTYDgZHoL7EqH+qmMPtjHvwIFhU0CHn6y6mI0cRQNLHxqsEjQQ==", "requires": { "color": "^3.1.3", "react-native-iphone-x-helper": "^1.3.0" @@ -20180,10 +20180,6 @@ "object-assign": "^4.1.1" } }, - "scryptsy": { - "version": "file:https:/registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", - "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" - }, "secp256k1": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", diff --git a/package.json b/package.json index 64e1e77c7..fc0a1dea6 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "@react-native-community/masked-view": "0.1.10", "@react-native-community/push-notification-ios": "1.8.0", "@react-native-community/slider": "3.0.3", - "@react-navigation/drawer": "5.11.2", + "@react-navigation/drawer": "5.11.5", "@react-navigation/native": "5.8.9", "@react-navigation/stack": "5.13.0", "@remobile/react-native-qrcode-local-image": "git+https://github.com/BlueWallet/react-native-qrcode-local-image.git", From 724425696708fc48b7c6ff7b6b770f3bb54b6e27 Mon Sep 17 00:00:00 2001 From: Overtorment Date: Wed, 10 Feb 2021 15:54:53 +0000 Subject: [PATCH 3/4] REL: ver bump & release notes --- android/app/build.gradle | 2 +- ios/BlueWallet.xcodeproj/project.pbxproj | 36 ++++++------ ios/fastlane/metadata/en-US/release_notes.txt | 58 ++++++++++--------- package-lock.json | 2 +- package.json | 2 +- 5 files changed, 53 insertions(+), 47 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 54fb035df..9e912e160 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -136,7 +136,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 - versionName "6.0.4" + versionName "6.0.5" multiDexEnabled true missingDimensionStrategy 'react-native-camera', 'general' testBuildType System.getProperty('testBuildType', 'debug') // This will later be used to control the test apk build type diff --git a/ios/BlueWallet.xcodeproj/project.pbxproj b/ios/BlueWallet.xcodeproj/project.pbxproj index e335878f9..08cbcdd14 100644 --- a/ios/BlueWallet.xcodeproj/project.pbxproj +++ b/ios/BlueWallet.xcodeproj/project.pbxproj @@ -1636,7 +1636,7 @@ "$(inherited)", "$(PROJECT_DIR)", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -1679,7 +1679,7 @@ "$(inherited)", "$(PROJECT_DIR)", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -1720,7 +1720,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.TodayExtension; @@ -1759,7 +1759,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.TodayExtension; PRODUCT_NAME = "BlueWallet - Bitcoin Price"; @@ -1791,7 +1791,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Stickers/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.Stickers; @@ -1822,7 +1822,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Stickers/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.Stickers; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1858,7 +1858,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.PriceWidget; @@ -1900,7 +1900,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.PriceWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1940,7 +1940,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.MarketWidget; @@ -1983,7 +1983,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.MarketWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2024,7 +2024,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.WalletInformationAndMarketWidget; @@ -2068,7 +2068,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.WalletInformationAndMarketWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2109,7 +2109,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.WalletInformationWidget; @@ -2152,7 +2152,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.WalletInformationWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2294,7 +2294,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.watch.extension; @@ -2334,7 +2334,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.watch.extension; PRODUCT_NAME = "${TARGET_NAME}"; @@ -2368,7 +2368,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; IBSC_MODULE = BlueWalletWatch_Extension; INFOPLIST_FILE = BlueWalletWatch/Info.plist; - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.watch; @@ -2404,7 +2404,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; IBSC_MODULE = BlueWalletWatch_Extension; INFOPLIST_FILE = BlueWalletWatch/Info.plist; - MARKETING_VERSION = 6.0.4; + MARKETING_VERSION = 6.0.5; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.watch; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/fastlane/metadata/en-US/release_notes.txt b/ios/fastlane/metadata/en-US/release_notes.txt index ddac7139b..8173c9b8a 100644 --- a/ios/fastlane/metadata/en-US/release_notes.txt +++ b/ios/fastlane/metadata/en-US/release_notes.txt @@ -1,3 +1,35 @@ +v6.0.4 +====== + +* ADD: Toggle balance visibility on watch app +* ADD: Standard wallet type Electrum JSON import +* ADD: Wallet balance hide/show on Watch app +* ADD: multisig manage keys - show alert if unsaved changes are found +* ADD: AEZEED mnemonics support (from LND; only primary native-segwit chain atm) +* ADD: Wallet txs update indicator +* ADD: Do not show notification settings if device does not support it +* ADD: Show alert if amount is less or equal 500 sats during onchain send +* OPS: Update Realm (fixes crash on iOS beta) +* FIX: locales en, fa_IR, cs_CZ, fr_FR, de_DE, nl_NL, de_DE, fi_FI +* FIX: multisig 'cant finalize input' error when sending +* FIX: Scroll on multi sig creation +* FIX: MS loading creation +* FIX: During long menmonics import, wallet panels are not scrolled to the last temporary gray wallet card +* FIX: TransactionDetails screen - displaying correct transaction data +* FIX: set fee to lower value if balance is not enough +* FIX: better fee estimation based on mempool (onchain send, not widget, yet) +* FIX: Widget now shows Pending if latest tx is unconfirmed +* FIX: Scaning invalid BC-UR qr code throws multiple alerts +* FIX: cached wallet address wouldnt change on wallet change +* FIX: 'Few seconds ago' -> 'pending' +* FIX: legacy wallet can now derive UTXO from transactions in case if fetching listUnspent from network is impossible +* FIX: Conf number reflects correct number +* FIX: Multisig import seed hangs forever +* FIX: Instructions were clipped on larger text +* FIX: Biometrics in PSBT +* REF: better support of coldcard's incorrect 'p2sh-p2wsh' +* DEL: LocalTrader (HodlHodl) starts with Global offers by default + v6.0.3 ====== @@ -61,29 +93,3 @@ v6.0.1 * FIX: Handle opening links if the default browser isnt Safari * FIX: contradiction in Vaul introduction text * FIX: localizations for CA, DE, ES, fa_IR, sl_SI, cs_CZ, pt_BR - -v6.0.0 -====== -* ADD: Multisig -* FIX: scan multisig cosigner in formats: plain Zpub, wallet descriptor -* FIX: txs disappear and re-fetch if opened wallet too fast -* ADD: Help section and tips to Vaults -* FIX: DE language files -* ADD: Persian language, sync cs_cz, es, it and ru -* FIX: Transaction details not shown when 'display in wallets list' not set (closes #1966) -* FIX: LNURL wallet not found - - -v5.6.9 -====== - -* ADD: warning text on backup screen -* ADD: CoinControl displays balances with user's preferred unit -* ADD: LBP Currency -* ADD: Verify if an address belongs to one of your wallets. -* FIX: fetch wallet transaction after broadcast -* FIX: crash on refresh button -* FIX: Don't display amount if none is passed -* REF: PSBT Multisig provide signature flow -* ADD: refresh wallet transactions for freshly imported wallets -* FIX: locales sl_SI, fi_FI diff --git a/package-lock.json b/package-lock.json index 27a3394ad..d8ea1f698 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "bluewallet", - "version": "6.0.4", + "version": "6.0.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 64e1e77c7..a28a1af0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bluewallet", - "version": "6.0.4", + "version": "6.0.5", "license": "MIT", "devDependencies": { "@babel/core": "^7.10.4", From bbd791afd5d2355189dd899b8bf95afd3a3838b1 Mon Sep 17 00:00:00 2001 From: marcosrdz Date: Wed, 10 Feb 2021 12:41:51 -0500 Subject: [PATCH 4/4] =?UTF-8?q?Revert=20"REF:=20TransactionDetails=20scree?= =?UTF-8?q?n:=20pass=20walletID=20so=20it=20won=E2=80=99t=20always=20have?= =?UTF-8?q?=20to=20find=20its=20wallet"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 92f999f44f06a333b9a3961ec2b169d964803691. --- BlueComponents.js | 68 +++++++++++++----------- class/app-storage.js | 1 - screen/transactions/transactionStatus.js | 65 ++++++++++++++-------- screen/wallets/list.js | 2 +- screen/wallets/transactions.js | 4 +- 5 files changed, 83 insertions(+), 57 deletions(-) diff --git a/BlueComponents.js b/BlueComponents.js index 2db281d98..4efcfa048 100644 --- a/BlueComponents.js +++ b/BlueComponents.js @@ -1265,7 +1265,7 @@ export const BlueReceiveButtonIcon = props => { ); }; -export const BlueTransactionListItem = React.memo(({ item, itemPriceUnit = BitcoinUnit.BTC, walletID }) => { +export const BlueTransactionListItem = React.memo(({ item, itemPriceUnit = BitcoinUnit.BTC, timeElapsed }) => { const [subtitleNumberOfLines, setSubtitleNumberOfLines] = useState(1); const { colors } = useTheme(); const { navigate } = useNavigation(); @@ -1422,38 +1422,46 @@ export const BlueTransactionListItem = React.memo(({ item, itemPriceUnit = Bitco const onPress = useCallback(async () => { if (item.hash) { - navigate('TransactionStatus', { hash: item.hash, walletID }); + navigate('TransactionStatus', { hash: item.hash }); } else if (item.type === 'user_invoice' || item.type === 'payment_request' || item.type === 'paid_invoice') { - try { - // is it a successful lnurl-pay? - const LN = new Lnurl(false, AsyncStorage); - let paymentHash = item.payment_hash; - if (typeof paymentHash === 'object') { - paymentHash = Buffer.from(paymentHash.data).toString('hex'); + const lightningWallet = wallets.filter(wallet => { + if (typeof wallet === 'object') { + if ('secret' in wallet) { + return wallet.getSecret() === item.fromWallet; + } } - const loaded = await LN.loadSuccessfulPayment(paymentHash); - if (loaded) { - NavigationService.navigate('ScanLndInvoiceRoot', { - screen: 'LnurlPaySuccess', - params: { - paymentHash, - justPaid: false, - fromWalletID: walletID, - }, - }); - return; - } - } catch (e) { - console.log(e); - } - - navigate('LNDViewInvoice', { - invoice: item, - walletID, - isModal: false, }); - } + if (lightningWallet.length === 1) { + try { + // is it a successful lnurl-pay? + const LN = new Lnurl(false, AsyncStorage); + let paymentHash = item.payment_hash; + if (typeof paymentHash === 'object') { + paymentHash = Buffer.from(paymentHash.data).toString('hex'); + } + const loaded = await LN.loadSuccessfulPayment(paymentHash); + if (loaded) { + NavigationService.navigate('ScanLndInvoiceRoot', { + screen: 'LnurlPaySuccess', + params: { + paymentHash, + justPaid: false, + fromWalletID: lightningWallet[0].getID(), + }, + }); + return; + } + } catch (e) { + console.log(e); + } + navigate('LNDViewInvoice', { + invoice: item, + walletID: lightningWallet[0].getID(), + isModal: false, + }); + } + } // eslint-disable-next-line react-hooks/exhaustive-deps }, [item, wallets]); @@ -1476,7 +1484,7 @@ export const BlueTransactionListItem = React.memo(({ item, itemPriceUnit = Bitco onPress={onPress} onLongPress={onLongPress} chevron={false} - Component={item.type === 'bitcoind_tx' ? View : TouchableOpacity} + Component={TouchableOpacity} rightTitle={rowTitle} rightTitleStyle={rowTitleStyle} containerStyle={containerStyle} diff --git a/class/app-storage.js b/class/app-storage.js index 4d5c3fbe2..c3b81e106 100644 --- a/class/app-storage.js +++ b/class/app-storage.js @@ -567,7 +567,6 @@ export class AppStorage { const walletTransactions = wallet.getTransactions(); for (const t of walletTransactions) { t.walletPreferredBalanceUnit = wallet.getPreferredBalanceUnit(); - t.walletID = wallet.getID(); } txs = txs.concat(walletTransactions); } diff --git a/screen/transactions/transactionStatus.js b/screen/transactions/transactionStatus.js index ba883b30c..4d9eec3f5 100644 --- a/screen/transactions/transactionStatus.js +++ b/screen/transactions/transactionStatus.js @@ -1,4 +1,4 @@ -import React, { useContext, useEffect, useState } from 'react'; +import React, { useContext, useEffect, useRef, useState } from 'react'; import { View, ActivityIndicator, Text, TouchableOpacity, StyleSheet, StatusBar } from 'react-native'; import { Icon } from 'react-native-elements'; import { useNavigation, useRoute, useTheme } from '@react-navigation/native'; @@ -28,16 +28,16 @@ const buttonStatus = Object.freeze({ notPossible: 3, }); -const TransactionStatus = () => { +const TransactionsStatus = () => { const { setSelectedWallet, wallets, txMetadata, getTransactions } = useContext(BlueStorageContext); - const { hash, walletID } = useRoute().params; + const { hash } = useRoute().params; const { navigate, setOptions } = useNavigation(); const { colors } = useTheme(); - const wallet = wallets.find(w => w.getID() === walletID); + const wallet = useRef(); const [isCPFPPossible, setIsCPFPPossible] = useState(); const [isRBFBumpFeePossible, setIsRBFBumpFeePossible] = useState(); const [isRBFCancelPossible, setIsRBFCancelPossible] = useState(); - const tx = getTransactions(null, Infinity, true).find(transactionHash => transactionHash.hash === hash); + const [tx, setTX] = useState(); const [isLoading, setIsLoading] = useState(true); const stylesHook = StyleSheet.create({ root: { @@ -76,6 +76,27 @@ const TransactionStatus = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [colors]); + useEffect(() => { + for (const w of wallets) { + for (const t of w.getTransactions()) { + if (t.hash === hash) { + console.log('tx', hash, 'belongs to', w.getLabel()); + wallet.current = w; + break; + } + } + } + + for (const tx of getTransactions(null, Infinity, true)) { + if (tx.hash === hash) { + setTX(tx); + break; + } + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [hash]); + const initialState = async () => { try { await checkPossibilityOfCPFP(); @@ -97,7 +118,7 @@ const TransactionStatus = () => { useEffect(() => { if (wallet) { - setSelectedWallet(wallet.getID()); + setSelectedWallet(wallet.current.getID()); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [wallet]); @@ -107,11 +128,11 @@ const TransactionStatus = () => { }, []); const checkPossibilityOfCPFP = async () => { - if (!wallet.allowRBF()) { + if (!wallet.current.allowRBF()) { return setIsCPFPPossible(buttonStatus.notPossible); } - const cpfbTx = new HDSegwitBech32Transaction(null, tx.hash, wallet); + const cpfbTx = new HDSegwitBech32Transaction(null, tx.hash, wallet.current); if ((await cpfbTx.isToUsTransaction()) && (await cpfbTx.getRemoteConfirmationsNum()) === 0) { return setIsCPFPPossible(buttonStatus.possible); } else { @@ -120,11 +141,11 @@ const TransactionStatus = () => { }; const checkPossibilityOfRBFBumpFee = async () => { - if (!wallet.allowRBF()) { + if (!wallet.current.allowRBF()) { return setIsRBFBumpFeePossible(buttonStatus.notPossible); } - const rbfTx = new HDSegwitBech32Transaction(null, tx.hash, wallet); + const rbfTx = new HDSegwitBech32Transaction(null, tx.hash, wallet.current); if ( (await rbfTx.isOurTransaction()) && (await rbfTx.getRemoteConfirmationsNum()) === 0 && @@ -138,11 +159,11 @@ const TransactionStatus = () => { }; const checkPossibilityOfRBFCancel = async () => { - if (!wallet.allowRBF()) { + if (!wallet.current.allowRBF()) { return setIsRBFCancelPossible(buttonStatus.notPossible); } - const rbfTx = new HDSegwitBech32Transaction(null, tx.hash, wallet); + const rbfTx = new HDSegwitBech32Transaction(null, tx.hash, wallet.current); if ( (await rbfTx.isOurTransaction()) && (await rbfTx.getRemoteConfirmationsNum()) === 0 && @@ -158,21 +179,21 @@ const TransactionStatus = () => { const navigateToRBFBumpFee = () => { navigate('RBFBumpFee', { txid: tx.hash, - wallet: wallet, + wallet: wallet.current, }); }; const navigateToRBFCancel = () => { navigate('RBFCancel', { txid: tx.hash, - wallet: wallet, + wallet: wallet.current, }); }; const navigateToCPFP = () => { navigate('CPFP', { txid: tx.hash, - wallet: wallet, + wallet: wallet.current, }); }; const navigateToTransactionDetials = () => { @@ -269,9 +290,9 @@ const TransactionStatus = () => { - {formatBalanceWithoutSuffix(tx.value, wallet.preferredBalanceUnit, true)}{' '} - {wallet.preferredBalanceUnit !== BitcoinUnit.LOCAL_CURRENCY && ( - {loc.units[wallet.preferredBalanceUnit]} + {formatBalanceWithoutSuffix(tx.value, wallet.current.preferredBalanceUnit, true)}{' '} + {wallet.current.preferredBalanceUnit !== BitcoinUnit.LOCAL_CURRENCY && ( + {loc.units[wallet.current.preferredBalanceUnit]} )} @@ -310,8 +331,8 @@ const TransactionStatus = () => { {tx.fee && ( - {loc.send.create_fee.toLowerCase()} {formatBalanceWithoutSuffix(tx.fee, wallet.preferredBalanceUnit, true)}{' '} - {wallet.preferredBalanceUnit !== BitcoinUnit.LOCAL_CURRENCY && wallet.preferredBalanceUnit} + {loc.send.create_fee.toLowerCase()} {formatBalanceWithoutSuffix(tx.fee, wallet.current.preferredBalanceUnit, true)}{' '} + {wallet.current.preferredBalanceUnit !== BitcoinUnit.LOCAL_CURRENCY && wallet.current.preferredBalanceUnit} )} @@ -339,7 +360,7 @@ const TransactionStatus = () => { ); }; -export default TransactionStatus; +export default TransactionsStatus; const styles = StyleSheet.create({ root: { flex: 1, @@ -439,6 +460,6 @@ const styles = StyleSheet.create({ }, }); -TransactionStatus.navigationOptions = navigationStyle({ +TransactionsStatus.navigationOptions = navigationStyle({ title: '', }); diff --git a/screen/wallets/list.js b/screen/wallets/list.js index 26a9fa4b7..057018d2b 100644 --- a/screen/wallets/list.js +++ b/screen/wallets/list.js @@ -225,7 +225,7 @@ const WalletsList = () => { const renderTransactionListsRow = data => { return ( - + ); }; diff --git a/screen/wallets/transactions.js b/screen/wallets/transactions.js index 95a463c65..c02915019 100644 --- a/screen/wallets/transactions.js +++ b/screen/wallets/transactions.js @@ -437,9 +437,7 @@ const WalletTransactions = () => { }); }; - const renderItem = item => ( - - ); + const renderItem = item => ; const onBarCodeRead = ret => { if (!isLoading) {