Merge branch 'master' into privacy

This commit is contained in:
marcosrdz 2021-01-23 19:20:07 -05:00
commit 148b684b50
14 changed files with 167 additions and 69 deletions

View file

@ -574,7 +574,7 @@ export class BlueCopyTextToClipboard extends Component {
render() {
return (
<View style={{ justifyContent: 'center', alignItems: 'center', paddingHorizontal: 16 }}>
<TouchableOpacity onPress={this.copyToClipboard} disabled={this.state.hasTappedText}>
<TouchableOpacity onPress={this.copyToClipboard} disabled={this.state.hasTappedText} testID="BlueCopyTextToClipboard">
<Animated.Text style={styleCopyTextToClipboard.address} numberOfLines={0}>
{this.state.address}
</Animated.Text>

View file

@ -0,0 +1,13 @@
function DeviceQuickActions() {
DeviceQuickActions.STORAGE_KEY = 'DeviceQuickActionsEnabled';
DeviceQuickActions.setEnabled = () => {};
DeviceQuickActions.getEnabled = async () => {
return false;
};
return null;
}
export default DeviceQuickActions;

View file

@ -265,8 +265,8 @@ PODS:
- React
- react-native-geolocation (2.0.2):
- React
- react-native-image-picker (3.1.1):
- React
- react-native-image-picker (3.1.4):
- React-Core
- react-native-is-catalyst (1.0.0):
- React
- react-native-randombytes (3.5.3):
@ -347,9 +347,9 @@ PODS:
- React
- RemobileReactNativeQrcodeLocalImage (1.0.4):
- React
- RNCAsyncStorage (1.13.2):
- React
- RNCClipboard (1.5.0):
- RNCAsyncStorage (1.13.3):
- React-Core
- RNCClipboard (1.5.1):
- React-Core
- RNCMaskedView (0.1.10):
- React
@ -703,7 +703,7 @@ SPEC CHECKSUMS:
react-native-document-picker: c5752781fbc0c126c627c1549b037c139444a4cf
react-native-fingerprint-scanner: c68136ca57e3704d7bdf5faa554ea535ce15b1d0
react-native-geolocation: cbd9d6bd06bac411eed2671810f454d4908484a8
react-native-image-picker: 510ea4e35cbe99ec92ecd89e9449e7e149c930e6
react-native-image-picker: 248afb60a0c5a24153cb7c7483b257f30541323b
react-native-is-catalyst: 52ee70e0123c82419dd4ce47dc4cc94b22467512
react-native-randombytes: 991545e6eaaf700b4ee384c291ef3d572e0b2ca8
react-native-safe-area-context: 01158a92c300895d79dee447e980672dc3fb85a6
@ -723,8 +723,8 @@ SPEC CHECKSUMS:
ReactCommon: 4167844018c9ed375cc01a843e9ee564399e53c3
RealmJS: 899b4839a8bee46e248bc277995ad58da855e41f
RemobileReactNativeQrcodeLocalImage: 57aadc12896b148fb5e04bc7c6805f3565f5c3fa
RNCAsyncStorage: bc2f81cc1df90c267ce9ed30bb2dbc93b945a8ee
RNCClipboard: 8f9f12fabf3c06e976f19f87a62c89e28dfedfca
RNCAsyncStorage: 32c7cbe1d43dff5f03f3d0b9e9d2c44d8ec91a3a
RNCClipboard: 5e299c6df8e0c98f3d7416b86ae563d3a9f768a3
RNCMaskedView: f5c7d14d6847b7b44853f7acb6284c1da30a3459
RNCPushNotificationIOS: 5b1cf9ad2aaa107ecb92d5d2d7005ba521b2b97a
RNDefaultPreference: 21816c0a6f61a2829ccc0cef034392e9b509ee5f

View file

@ -177,6 +177,7 @@
"details_adv_full_sure": "Bist Du sicher, dass Du das gesamte Guthaben für diese Transaktion verwenden willst?",
"details_adv_import": "Transaktion importieren",
"details_amount_field_is_not_valid": "Betrageingabe ist nicht korrekt",
"details_amount_field_is_less_than_minimum_amount_sat": "Der angegebene Betrag ist zu klein. Bitte einen Betrag größer 500 sats eingeben.",
"details_create": "Erstellen",
"details_error_decode": "Fehler: Bitcoinadresse kann nicht dekodiert werden",
"details_fee_field_is_not_valid": "Gebühreneingabe ist nicht korrekt",

View file

@ -14,7 +14,7 @@
"no": "Nee",
"save": "Opslaan",
"seed": "Seed",
"wallet_key": "Wallet key",
"wallet_key": "Wallet sleutel",
"invalid_animated_qr_code_fragment" : "Ongeldig geanimeerde QRCode, probeer het opnieuw",
"file_saved": "Bestand ({filePath}) is opgeslagen in uw gedownloade bestanden."
},
@ -22,15 +22,15 @@
"codeIs": "De code van uw tegoedbon is",
"errorBeforeRefeem": "Voor het inlossen moet u eerst Bitcoin-wallet toevoegen.",
"errorSomething": "Er ging is verkeerd. Is deze tegoedbon nog geldig?",
"redeem": "Inlossen naar wallet.",
"redeemButton": "Inlossen",
"redeem": "Inwisselen naar wallet.",
"redeemButton": "Inwisselen",
"success": "Succes",
"title": "Los uw Atze.co voucher in"
},
"entropy": {
"save": "Opslaan",
"title": "Entropy",
"undo": "Herstellen"
"undo": "Ongedaan maken"
},
"errors": {
"broadcast": "Verzenden mislukt",
@ -74,7 +74,10 @@
"item_nooffers": "Geen aanbod. Probeer \"Dicht bij mij\" te veranderen naar wereldwijd aanbod!",
"item_rating": "{rating} transacties",
"item_rating_no": "Geen beoordeling",
"local_trader": "Lokaal Handelen",
"local_trader_new": "Nieuw",
"login": "Inloggen",
"logout": "Uitloggen",
"mycont": "Mijn contracten",
"offer_accept": "Bod accepteren",
"offer_account_finish": "Het lijkt er op dat u nog niet klaar bent met uw account op HodlHodl, wilt u hiermee verder gaan?",
@ -134,8 +137,9 @@
"ok": "Oké, ik heb het opgeschreven!",
"ok_lnd": "Oké, ik heb het bewaard.",
"text": "Neem alstublieft een moment om deze mnemonic phrase op papier te schrijven. Het is uw back-up die u kunt gebruiken om uw wallet te herstellen op een ander apparaat.",
"text_lnd": "Neem alstublieft een moment om deze LNDHub authenticatie op te slaan. Het is uw back-up die u kunt gebruiken om uw wallet te herstellen op een ander apparaat.",
"title": "Uw wallet is aangemaakt..."
"text_lnd": "Sla deze wallet backup op. Zo kun je de wallet herstellen in geval van verlies.",
"text_lnd2": "Deze wallet wordt gehost door BlueWallet.",
"title": "Je wallet is aangemaakt"
},
"receive": {
"details_create": "Maken",
@ -173,6 +177,7 @@
"details_adv_full_sure": "Weet u zeker dat u het volledige saldo van uw wallet wilt gebruiken voor deze transactie?",
"details_adv_import": "Importeer transactie",
"details_amount_field_is_not_valid": "Bedrag is niet geldig",
"details_amount_field_is_less_than_minimum_amount_sat": "Het ingevoerde bedrag is te klein. Voer een bedrag in groter dan 500 sats.",
"details_create": "Maak factuur aan",
"details_error_decode": "Fout: Niet in staat om Bitcoin adres te decoderen",
"details_fee_field_is_not_valid": "Tarief is niet geldig",
@ -226,8 +231,9 @@
"settings": {
"about": "Over",
"about_awesome": "Gebouwt met de geweldige",
"about_backup": "Maak altijd een backup van uw keys!",
"about_backup": "Maak altijd een backup van uw sleutels!",
"about_free": "BlueWallet is een gratis en open-source project. Gemaakt door Bitcoin gebruikers.",
"about_license": "MIT Licentie",
"about_release_notes": "Release-opmerkingen",
"about_review": "Laat een review achter",
"about_selftest": "Voer een zelftest uit",
@ -236,6 +242,11 @@
"about_sm_telegram": "Telegram kanaal",
"about_sm_twitter": "Volg ons op Twitter",
"advanced_options": "Geavanceerde opties",
"biometrics": "Biometrische beveiliging",
"biom_10times": "Je hebt 10 wachtwoordpogingen gedaan. Wil je je opslagruimte resetten? Al je wallets worden verwijderd en je opslag wordt ontsleuteld.",
"biom_conf_identity": "Bevestig je identiteit.",
"biom_no_passcode": "Er is geen wachtwoord ingesteld op je apparaat. Ga naar het instellingenmenu om een wachtwoord in te stellen, om door te gaan.",
"biom_remove_decrypt": "Al je wallets worden verwijderd en je opslag zal worden ontsleuteld. Weet je zeker dat je door wil gaan?",
"currency": "Valuta",
"currency_source": "Prijzen zijn opgehaald bij",
"default_desc": "Indien uitgeschakeld zal BlueWallet meteen de geselecteerde wallet openen bij het opstarten.",
@ -249,9 +260,19 @@
"electrum_port": "TCP-poort, gebruikelijk {example}",
"electrum_port_ssl": "SSL-poort, gebruikelijk {example}",
"electrum_saved": "Uw veranderingen zijn succesvol opgeslagen. Opnieuw opstarten kan nodig zijn om de wijzigingen door te voeren.",
"set_electrum_server_as_default": "{server} instellen als de standaard electrum server?",
"set_lndhub_as_default": "{url} instellen als de standaard LNDHub server?",
"electrum_settings": "Electrum instellingen",
"electrum_settings_explain": "Laat leeg om standaardinstelling te gebruiken",
"electrum_status": "Status",
"electrum_clear_alert_title": "Geschiedenis verwijderen?",
"electrum_clear_alert_message": "Wil je de geschiedenis van de electrum servers wissen?",
"electrum_clear_alert_cancel": "Annuleren",
"electrum_clear_alert_ok": "Oké",
"electrum_select": "Selecteren",
"electrum_reset": "Naar standaardinstellingen resetten",
"electrum_history": "Server geschiedenis",
"electrum_clear": "Wissen",
"encrypt_decrypt": "Versleutel opslag",
"encrypt_decrypt_q": "Weet u zeker dat u uw opslag wilt ontsleutelen? Hierdoor kunnen uw wallets zonder wachtwoord worden geopend.",
"encrypt_del_uninstall": "Wis als BlueWallet is verwijderd",
@ -294,7 +315,10 @@
"retype_password": "Geef nogmaals het wachtwoord op",
"save": "Opslaan",
"saved": "Opgeslagen",
"success_transaction_broadcasted" : "Gelukt! Uw transactie is verzonden!"
"success_transaction_broadcasted" : "Gelukt! Uw transactie is verzonden!",
"total_balance": "Totaalbalans",
"total_balance_explanation": "Laat de totaalbalans van al je wallets zien op de widgets op je thuisscherm.",
"widgets": "Widgets"
},
"notifications": {
"would_you_like_to_receive_notifications": "Wil je meldingen ontvangen als je binnenkomende betalingen ontvangt?",
@ -331,7 +355,8 @@
"rbf_title": "Bumb fee (RBF)",
"status_bump": "Bumb fee",
"status_cancel": "Annuleer transactie",
"transactions_count": "Transactieteller"
"transactions_count": "Transactieteller",
"txid": "Txid"
},
"wallets": {
"add_bitcoin": "Bitcoin",
@ -361,10 +386,15 @@
"details_del_wb_q": "Deze wallet heeft een saldo. Voordat u verder gaat, moet u er rekening mee houden dat u de tegoeden niet kunt terugkrijgen zonder de seed phrase van deze wallet. Om te voorkomen dat deze wallet per ongeluk wordt verwijderd, moet u het saldo van {balance} satoshis in uw wallet invoeren.",
"details_delete": "Verwijderen",
"details_delete_wallet": "Verwijder wallet",
"details_derivation_path": "Derivatiepad",
"details_display": "Toon in wallet-lijst",
"details_export_backup": "Exporteren / back-up maken",
"details_marketplace": "Marktplaats",
"details_master_fingerprint": "Master vingerafdruk",
"details_ms_l": "{m} van {n} legacy (p2sh)",
"details_ms_ns": "{m} van {n} native segwit (p2wsh)",
"details_ms_ws": "{m} van {n} wrapped segwit (p2sh-p2wsh)",
"details_multisig_type": "multisig",
"details_no_cancel": "Nee, annuleren",
"details_save": "Opslaan",
"details_show_xpub": "Toon wallet XPUB",
@ -380,6 +410,8 @@
"import_explanation": "Schrijf hier je mnemonic phrase, private key, WIF of wat je maar hebt. BlueWallet zal zijn best doen om het juiste formaat te raden en uw wallet te importeren",
"import_file": "Importeer bestand",
"import_imported": "Geïmporteerd",
"import_placeholder_fail": "Wallet Importeren",
"import_placeholder_inprogress": "Wallet importeren...",
"import_scan_qr": "QR-code scannen of importeren?",
"import_success": "Succes",
"import_title": "Importeren",
@ -390,17 +422,19 @@
"list_empty_txs1_lightning": "Lightning-wallet moet worden gebruikt voor uw dagelijkse transacties. De fees zijn oneerlijk goedkoop en het is razendsnel.",
"list_empty_txs2": "Begin met uw wallet",
"list_empty_txs2_lightning": "\nOm het te gebruiken, tikt u op \"tegoeden beheren\" en laadt u uw saldo op.",
"list_header": "Een wallet vertegenwoordigt een paar keys, een private en een die u kunt delen om coins te ontvangen.",
"list_header": "Een wallet vertegenwoordigt een paar sleutels, een private en een die u kunt delen om coins te ontvangen.",
"list_import_error": "Er is een fout opgetreden bij het importeren van deze wallet.",
"list_import_problem": "Er is een probleem opgetreden bij het importeren van deze wallet",
"list_latest_transaction": "Laatste transactie",
"list_ln_browser": "LApp Browser",
"list_long_choose": "Kies foto",
"list_long_clipboard": "Kopiëren van klembord",
"list_long_scan": "Scan QR-code",
"list_marketplace": "Marktplaats",
"list_tap_here_to_buy": "Koop Bitcoin",
"no_ln_wallet_error": "Voordat u een Lightning-factuur betaalt, moet u eerst een Lightning-wallet toevoegen.",
"list_title": "Wallets",
"list_tryagain": "Probeer opnieuw",
"no_ln_wallet_error": "Voordat u een Lightning-factuur betaalt, moet u eerst een Lightning-wallet toevoegen.",
"looks_like_bip38": "Dit lijkt op een met een wachtwoord beveiligde private key (BIP38)",
"reorder_title": "Wallets opnieuw ordenen",
"please_continue_scanning": "Ga door met scannen",
@ -416,18 +450,21 @@
},
"multisig": {
"multisig_vault": "Kluis",
"default_label": "Multisig Kluis",
"multisig_vault_explain": "Beste beveiliging voor grote bedragen",
"provide_signature": "Geef een handtekening",
"vault_key": "Vault key {number}",
"required_keys_out_of_total": "Vereiste keys uit het totaal",
"vault_key": "Kluissleutel {number}",
"required_keys_out_of_total": "Vereiste sleutels uit het totaal",
"fee": "Fee: {number}",
"fee_btc": "{number} BTC",
"confirm": "Bevestig",
"header": "Verzenden",
"share": "Delen",
"view": "Bekijken",
"manage_keys": "Beheer keys",
"how_many_signatures_can_bluewallet_make": "Hoeveel handtekeningen kan BlueWallet maken",
"manage_keys": "Beheer sleutels",
"how_many_signatures_can_bluewallet_make": "Hoeveel signatures kan bluewallet aanmaken",
"signatures_required_to_spend": "Signatures vereist {number}",
"signatures_we_can_make": "kan {number} aanmaken",
"scan_or_import_file": "Scan of importeer bestand",
"export_coordination_setup": "Export coördinatie setup",
"cosign_this_transaction": "Deze transactie medeondertekenen?",
@ -441,9 +478,9 @@
"what_is_vault": "Een kluis is een",
"what_is_vault_numberOfWallets": "{m}-van-{n} multisig",
"what_is_vault_wallet": "Wallet",
"vault_advanced_customize": "Vault-instellingen...",
"vault_advanced_customize": "Kluis-instellingen...",
"needs": "Het is nodig",
"what_is_vault_description_number_of_vault_keys": "{m} Vault Keys",
"what_is_vault_description_number_of_vault_keys": "{m} Kluissleutels",
"what_is_vault_description_to_spend": "te besteden en een 3e die u \nals back-up kunt gebruiken.",
"what_is_vault_description_to_spend_other": "om uit te geven.",
"quorum": "{m} van {n} quorum",
@ -453,15 +490,16 @@
"view_key": "Bekijk",
"invalid_mnemonics": "Deze mnemonic phrase lijkt niet te kloppen",
"invalid_cosigner": "Geen geldige mede-ondertekenaar gegevens",
"not_a_multisignature_xpub": "Dit is geen xpub van een multisignature wallet!",
"invalid_cosigner_format": "Onjuiste mede-ondertekenaar: dit is geen mede-ondertekenaar voor het {format} formaat",
"create_new_key": "Maak een nieuwe",
"scan_or_open_file": "Scan of open bestand",
"i_have_mnemonics": "Ik heb een seed voor deze key...",
"please_write_down_mnemonics": "Schrijf dit mnemonic phrase op papier. Maak je geen zorgen, je kunt het later opschrijven.",
"i_wrote_it_down": "Ok, ik heb het opgeschreven",
"type_your_mnemonics": "Voeg een seed in om uw bestaande Vault key te importeren",
"type_your_mnemonics": "Voeg een seed in om uw bestaande kluissleutel te importeren",
"this_is_cosigners_xpub": "Dit is de XPUB van mede-ondertekenaar, klaar om in een andere wallet te worden geïmporteerd. Het is veilig om het te delen.",
"wallet_key_created": "Uw Vault key is gemaakt. Neem even de tijd om een veilige back-up van uw mnemonic seed te maken",
"wallet_key_created": "Uw kluissleutel is gemaakt. Neem even de tijd om een veilige back-up van uw mnemonic seed te maken",
"are_you_sure_seed_will_be_lost": "Weet u het zeker? Uw mnemonic seed zal verloren gaan als u geen back-up heeft",
"forget_this_seed": "Vergeet deze seed en gebruik XPUB",
"invalid_fingerprint": "Vingerafdruk voor dit seed komt niet overeen met de vingerafdruk van deze mede-ondertekenaar",
@ -473,18 +511,18 @@
"input_path": "Voer het derivation path in",
"input_path_explain": "Sla over om de standaard te gebruiken ({default})",
"ms_help": "Help",
"ms_help_title": "Hoe Multisig Vaults werken. Tips en trucs",
"ms_help_text": "Een wallet met meerdere keys, om de veiligheid exponentieel te verhogen of voor gedeelde bewaring.",
"ms_help_title": "Hoe Multisig kluizen werken. Tips en trucs",
"ms_help_text": "Een wallet met meerdere sleutels, om de veiligheid exponentieel te verhogen of voor gedeelde bewaring.",
"ms_help_title1": "Meerdere apparaten worden geadviseerd",
"ms_help_1": "De Vault werkt met andere BlueWallet-apps en PSBT-compatibele wallets, zoals Electrum, Spectre, Coldcard, Cobo-kluis, enz.",
"ms_help_title2": "Keys bewerken",
"ms_help_2": "U kunt alle Vault-keys op dit apparaat maken en deze keys later verwijderen of bewerken. Het hebben van alle keys op hetzelfde apparaat heeft dezelfde beveiliging als een gewone Bitcoin-wallet.",
"ms_help_title3": "Vault Back-ups",
"ms_help_3": "Op de wallet-opties vindt u uw Vault back-up en watch-only back-up. Deze back-up is als een routekaart voor uw wallet. Het is essentieel voor het herstel van uw wallet voor het geval u een van uw seeds verliest.",
"ms_help_title4": "Vaults importeren",
"ms_help_4": "Om een Multisig te importeren, gebruikt u uw multisig back-upbestand en de importfunctie. Als u alleen uitgebreide keys en seeds heeft, kunt u de afzonderlijke importvelden in het Vaults Toevoegen schema gebruiken.",
"ms_help_1": "De kluis werkt met andere BlueWallet-apps en PSBT-compatibele wallets, zoals Electrum, Spectre, Coldcard, Cobo-kluis, enz.",
"ms_help_title2": "Sleutels bewerken",
"ms_help_2": "U kunt alle kluissleutels op dit apparaat maken en deze sleutels later verwijderen of bewerken. Het hebben van alle sleutels op hetzelfde apparaat heeft dezelfde beveiliging als een gewone Bitcoin-wallet.",
"ms_help_title3": "Kluis Back-ups",
"ms_help_3": "Op de wallet-opties vindt u uw Kluis back-up en watch-only back-up. Deze back-up is als een routekaart voor uw wallet. Het is essentieel voor het herstel van uw wallet voor het geval u een van uw seeds verliest.",
"ms_help_title4": "Kluizen importeren",
"ms_help_4": "Om een Multisig te importeren, gebruikt u uw multisig back-upbestand en de importfunctie. Als u alleen uitgebreide sleutels en seeds heeft, kunt u de afzonderlijke importvelden in het Kluis Toevoegen schema gebruiken.",
"ms_help_title5": "Geavanceerde opties",
"ms_help_5": "BlueWallet genereert standaard een 2of3 Vault. Activeer de geavanceerde opties in de Instellingen om een ander quorum te creëren of om het adrestype te wijzigen."
"ms_help_5": "BlueWallet genereert standaard een 2-van-3 Kluis. Activeer de geavanceerde opties in de Instellingen om een ander quorum te creëren of om het adrestype te wijzigen."
},
"is_it_my_address": {
"title": "Is het mijn adres?",
@ -499,8 +537,16 @@
"empty": "Deze wallet heeft momenteel geen coins",
"freeze": "Bevriezen",
"freezeLabel": "Bevriezen",
"freezeLabel_un": "Ontvriezen",
"header": "Coin Control",
"use_coin": "Gebruik Coin",
"use_coins": "Gebruik Coins",
"tip": "Hiermee kunt u coins zien, labelen, bevriezen of selecteren voor verbeterd walletbeheer."
},
"units": {
"BTC": "BTC",
"MAX": "MAX",
"sat_byte": "sat/byte",
"sats": "sats"
}
}

View file

@ -177,6 +177,7 @@
"details_adv_full_sure": "Ali ste prepričani, da želite za to transakcijo uporabiti celotno stanje denarnice?",
"details_adv_import": "Uvozi transakcijo",
"details_amount_field_is_not_valid": "Znesek ni veljaven",
"details_amount_field_is_less_than_minimum_amount_sat": "Znesek je premajhen. Vnesite znesek večji od 500 satošijev.",
"details_create": "Ustvari Račun",
"details_error_decode": "Napaka: Ni mogoče dekodirati Bitcoin naslova",
"details_fee_field_is_not_valid": "Omrežnina ni veljavna",

18
package-lock.json generated
View file

@ -5986,9 +5986,9 @@
}
},
"@react-native-async-storage/async-storage": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.13.2.tgz",
"integrity": "sha512-isTDvUApRJPVWFxV15yrQSOGqarX7cIedq/y4N5yWSnotf68D9qvDEv1I7rCXhkBDi0u4OJt6GA9dksUT0D3wg==",
"version": "1.13.3",
"resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.13.3.tgz",
"integrity": "sha512-s/7KyzFxS3WesYn5RrfRg1Pyz5EYDZAJxIxIuzmJZ1FlvpvaZGAZq9xJmVN2OG6S6NhfiY8Tszkau15hHreRag==",
"requires": {
"deep-assign": "^3.0.0"
}
@ -6339,9 +6339,9 @@
"integrity": "sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ=="
},
"@react-native-community/clipboard": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@react-native-community/clipboard/-/clipboard-1.5.0.tgz",
"integrity": "sha512-XoujTQuXhPgQLVLn7HPt7615jBEGzJm1Nhos0COdreBIz3qWIi5noYZth8jBFctf8FG5tpe24XTZNDz5udgqQQ=="
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/@react-native-community/clipboard/-/clipboard-1.5.1.tgz",
"integrity": "sha512-AHAmrkLEH5UtPaDiRqoULERHh3oNv7Dgs0bTC0hO5Z2GdNokAMPT5w8ci8aMcRemcwbtdHjxChgtjbeA38GBdA=="
},
"@react-native-community/eslint-config": {
"version": "2.0.0",
@ -19020,9 +19020,9 @@
"integrity": "sha512-KTIy7lExwMtB6pOpCARyUzFj5EzYTh+A1GN/FB5Eb0LrW5C6hbb1kdj9K2/RHyZC+wyAJD1M823ZaDCU6n6cLA=="
},
"react-native-image-picker": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/react-native-image-picker/-/react-native-image-picker-3.1.1.tgz",
"integrity": "sha512-7ZtOjFzfnsguNimyO1O/aASK5YBAPPtKmfEqWGCdfOft6cWctaQGOhZgbyEa+zWq6y2NIxo7306IlaCs+PXkog=="
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/react-native-image-picker/-/react-native-image-picker-3.1.4.tgz",
"integrity": "sha512-5pRmrBx+vZcf/UH6n95gxnBq5B7tRDZWIDnhvM4JxlthOChuvEEiShN+MMs7ue+lK26RXws5BOgKGd6MtQI/LQ=="
},
"react-native-inappbrowser-reborn": {
"version": "git+https://github.com/BlueWallet/react-native-inappbrowser.git#fa2d8e1763e46dd12a7e53081e97a0f908049103",

View file

@ -66,9 +66,9 @@
},
"dependencies": {
"@babel/preset-env": "7.12.1",
"@react-native-async-storage/async-storage": "1.13.2",
"@react-native-async-storage/async-storage": "1.13.3",
"@react-native-community/blur": "3.6.0",
"@react-native-community/clipboard": "1.5.0",
"@react-native-community/clipboard": "1.5.1",
"@react-native-community/geolocation": "2.0.2",
"@react-native-community/masked-view": "0.1.10",
"@react-native-community/push-notification-ios": "1.8.0",
@ -129,7 +129,7 @@
"react-native-gesture-handler": "1.8.0",
"react-native-handoff": "git+https://github.com/marcosrdz/react-native-handoff.git#f5becc63f3e36bf2da1ed1fc60fc690323e73602",
"react-native-haptic-feedback": "1.11.0",
"react-native-image-picker": "3.1.1",
"react-native-image-picker": "3.1.4",
"react-native-inappbrowser-reborn": "git+https://github.com/BlueWallet/react-native-inappbrowser.git#fa2d8e1763e46dd12a7e53081e97a0f908049103",
"react-native-is-catalyst": "git+https://github.com/BlueWallet/react-native-is-catalyst.git#v1.0.0",
"react-native-level-fs": "3.0.1",

View file

@ -138,15 +138,15 @@ const ReceiveDetails = () => {
<View style={styles.scrollBody}>
{isCustom && (
<>
<BlueText style={styles.amount} numberOfLines={1}>
<BlueText testID="CustomAmountText" style={styles.amount} numberOfLines={1}>
{getDisplayAmount()}
</BlueText>
<BlueText style={styles.label} numberOfLines={1}>
<BlueText testID="CustomAmountDescriptionText" style={styles.label} numberOfLines={1}>
{customLabel}
</BlueText>
</>
)}
<View style={styles.qrCodeContainer}>
<View style={styles.qrCodeContainer} testID="BitcoinAddressQRCodeContainer">
<QRCode
value={bip21encoded}
logo={require('../../img/qr-code.png')}
@ -161,7 +161,7 @@ const ReceiveDetails = () => {
<BlueCopyTextToClipboard text={isCustom ? bip21encoded : address} />
</View>
<View style={styles.share}>
<BlueButtonLink title={loc.receive.details_setAmount} onPress={showCustomAmountModal} />
<BlueButtonLink testID="SetCustomAmountButton" title={loc.receive.details_setAmount} onPress={showCustomAmountModal} />
<View>
<SecondButton onPress={handleShareButtonPressed} title={loc.receive.details_share} />
</View>
@ -302,11 +302,17 @@ const ReceiveDetails = () => {
value={customLabel || ''}
numberOfLines={1}
style={styles.customAmountText}
testID="CustomAmountDescription"
/>
</View>
<BlueSpacing20 />
<View>
<BlueButton style={styles.modalButton} title={loc.receive.details_create} onPress={createCustomAmountAddress} />
<BlueButton
testID="CustomAmountSaveButton"
style={styles.modalButton}
title={loc.receive.details_create}
onPress={createCustomAmountAddress}
/>
<BlueSpacing20 />
</View>
<BlueSpacing20 />

View file

@ -162,16 +162,12 @@ const styles = StyleSheet.create({
justifyContent: 'flex-start',
},
topFormRow: {
flex: 0.1,
flexBasis: 0.1,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingBottom: 10,
paddingTop: 0,
paddingRight: 100,
height: 30,
maxHeight: 30,
},
input: {
flexDirection: 'row',

View file

@ -15,12 +15,12 @@ import {
} from 'react-native';
import Clipboard from '@react-native-community/clipboard';
import Share from 'react-native-share';
import { getSystemName } from 'react-native-device-info';
import ReactNativeHapticFeedback from 'react-native-haptic-feedback';
import DocumentPicker from 'react-native-document-picker';
import { useNavigation, useRoute, useTheme } from '@react-navigation/native';
import isCatalyst from 'react-native-is-catalyst';
import { isCatalyst, isMacCatalina } from '../../blue_modules/environment';
import RNFS from 'react-native-fs';
import Biometric from '../../class/biometrics';
import {
SecondButton,
@ -38,7 +38,6 @@ import Notifications from '../../blue_modules/notifications';
const BlueElectrum = require('../../blue_modules/BlueElectrum');
/** @type {AppStorage} */
const bitcoin = require('bitcoinjs-lib');
const isDesktop = getSystemName() === 'Mac OS X';
const fs = require('../../blue_modules/fs');
const PsbtWithHardwareWallet = () => {
@ -118,6 +117,14 @@ const PsbtWithHardwareWallet = () => {
const broadcast = async () => {
setIsLoading(true);
const isBiometricsEnabled = await Biometric.isBiometricUseCapableAndEnabled();
if (isBiometricsEnabled) {
if (!(await Biometric.unlockWithBiometrics())) {
setIsLoading(false);
return;
}
}
try {
await BlueElectrum.ping();
await BlueElectrum.waitTillConnected();
@ -242,7 +249,7 @@ const PsbtWithHardwareWallet = () => {
};
const openScanner = () => {
if (isDesktop) {
if (isMacCatalina) {
fs.showActionSheet().then(data => onBarScanned({ data }));
} else {
navigation.navigate('ScanQRCodeRoot', {

View file

@ -678,6 +678,7 @@ const WalletTransactions = () => {
<FContainer>
{wallet.current.allowReceive() && (
<FButton
testID="ReceiveButton"
text={loc.receive.header}
onPress={() => {
if (wallet.current.chain === Chain.OFFCHAIN) {

View file

@ -16,8 +16,6 @@ import {
} from 'react-native';
import { Icon, Badge } from 'react-native-elements';
import { useFocusEffect, useNavigation, useRoute, useTheme } from '@react-navigation/native';
import { getSystemName } from 'react-native-device-info';
import {
BlueButton,
BlueButtonLink,
@ -42,10 +40,11 @@ import Privacy from '../../blue_modules/Privacy';
import Biometric from '../../class/biometrics';
import QRCode from 'react-native-qrcode-svg';
import { SquareButton } from '../../components/SquareButton';
import { isMacCatalina } from '../../blue_modules/environment';
const fs = require('../../blue_modules/fs');
const isDesktop = getSystemName() === 'Mac OS X';
const ViewEditMultisigCosigners = () => {
const hasLoaded = useRef(false);
const { colors } = useTheme();
const { wallets, setWalletsWithNewOrder } = useContext(BlueStorageContext);
const { navigate, goBack } = useNavigation();
@ -160,6 +159,8 @@ const ViewEditMultisigCosigners = () => {
};
useFocusEffect(
useCallback(() => {
// useFocusEffect is called on willAppear (example: when camera dismisses). we want to avoid this.
if (hasLoaded.current) return;
setIsLoading(true);
Privacy.enableBlur();
@ -181,6 +182,7 @@ const ViewEditMultisigCosigners = () => {
data.current = new Array(tempWallet.current.getN());
setWallet(tempWallet.current);
}
hasLoaded.current = true;
setIsLoading(false);
});
return () => {
@ -442,14 +444,23 @@ const ViewEditMultisigCosigners = () => {
};
const scanOrOpenFile = () => {
if (isDesktop) {
fs.showActionSheet().then(_handleUseMnemonicPhrase);
if (isMacCatalina) {
fs.showActionSheet().then(result => {
// Triggers FlatList re-render
setImportText(result);
//
_handleUseMnemonicPhrase(result);
});
} else {
setIsProvideMnemonicsModalVisible(false);
navigate('ScanQRCodeRoot', {
screen: 'ScanQRCode',
params: {
launchedBy: route.name,
onBarScanned: result => {
// Triggers FlatList re-render
setImportText(result);
//
_handleUseMnemonicPhrase(result);
},
showFileImportButton: true,

View file

@ -31,7 +31,7 @@ describe('BlueWallet UI Tests', () => {
process.env.TRAVIS && require('fs').writeFileSync(lockFile, '1');
});
it('can create wallet, reload app and it persists', async () => {
it('can create wallet, reload app and it persists. then go to receive screen, set custom amount and label.', async () => {
const lockFile = '/tmp/travislock.' + hashIt(jasmine.currentTest.fullName);
if (process.env.TRAVIS) {
if (require('fs').existsSync(lockFile))
@ -44,6 +44,22 @@ describe('BlueWallet UI Tests', () => {
await device.launchApp({ newInstance: true });
await yo('WalletsList');
await expect(element(by.id('cr34t3d'))).toBeVisible();
await element(by.id('cr34t3d')).tap();
await element(by.id('ReceiveButton')).tap();
await element(by.text('Yes, I have')).tap();
await element(by.text(`No, and don't ask me again`)).tap();
await yo('BitcoinAddressQRCodeContainer');
await yo('BlueCopyTextToClipboard');
await element(by.id('SetCustomAmountButton')).tap();
await element(by.id('BitcoinAmountInput')).typeText('1');
await element(by.id('CustomAmountDescription')).typeText('test');
await element(by.id('CustomAmountSaveButton')).tap();
await sup('1 BTC');
await sup('test');
await yo('BitcoinAddressQRCodeContainer');
await yo('BlueCopyTextToClipboard');
await device.pressBack();
await device.pressBack();
process.env.TRAVIS && require('fs').writeFileSync(lockFile, '1');
});