diff --git a/App.test.js b/App.test.js index 6033d4bb..b5c8c685 100644 --- a/App.test.js +++ b/App.test.js @@ -294,6 +294,8 @@ it('Wallet can fetch TXs', async () => { delete tx0.confirmations; delete txExpected.confirmations; + delete tx0.preference; // that bs is not always the same + delete txExpected.preference; assert.deepEqual(tx0, txExpected); }); diff --git a/LightningCustodianWallet.test.js b/LightningCustodianWallet.test.js index 0903baee..fd8ab390 100644 --- a/LightningCustodianWallet.test.js +++ b/LightningCustodianWallet.test.js @@ -298,6 +298,17 @@ describe('LightningCustodianWallet', () => { await l2.checkRouteInvoice(invoice); + // first, tip invoice without amount should not work: + let gotError = false; + try { + await l2.payInvoice(invoice); + } catch (_) { + gotError = true; + } + assert.ok(gotError); + + // then, pay: + let start = +new Date(); await l2.payInvoice(invoice, 3); let end = +new Date(); diff --git a/ios/BlueWallet/Info.plist b/ios/BlueWallet/Info.plist index 986d5684..5ff3e57d 100644 --- a/ios/BlueWallet/Info.plist +++ b/ios/BlueWallet/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 3.5.6 + 3.5.7 CFBundleSignature ???? CFBundleURLTypes @@ -33,7 +33,7 @@ CFBundleVersion - 223 + 224 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/ios/fastlane/metadata/en-US/release_notes.txt b/ios/fastlane/metadata/en-US/release_notes.txt index e56eec84..be66e970 100644 --- a/ios/fastlane/metadata/en-US/release_notes.txt +++ b/ios/fastlane/metadata/en-US/release_notes.txt @@ -1,3 +1,19 @@ +v.3.5.6 +------- + +ADD: Loading indicator for wallet name change and wallet delete +ADD: Added CZK fiat +ADD: Alert user if they are trying to create a lightning wallet without a bitcoin wallet +ADD: French +ADD: DK - Danish Language Support +ADD: Thai locale +ADD: Dutch translation +FIX: Main wallet list shows transaction unit that is preferred by wallet +FIX: Export QRCode was too big on iPad +FIX: Don't override existing tx information when scanning invalid QR +FIX: Satoshis are now human-readable +FIX: crash when RBF + v3.5.5 ------ @@ -22,4 +38,4 @@ FIX: Don't allow user to pay for an invoice created with the same wallet. FIX: If. balance was not a string, app would crash. FIX: Changed language selection screen to FlatList FIX: Made amount tap area larger -FIX: Fixed an issue in currency settings where the checkmark wouldn't be in the correct preference \ No newline at end of file +FIX: Fixed an issue in currency settings where the checkmark wouldn't be in the correct preference* Merge branch 'master' of github.com:BlueWallet/BlueWallet diff --git a/loc/hr_HR.js b/loc/hr_HR.js new file mode 100644 index 00000000..4a2c094e --- /dev/null +++ b/loc/hr_HR.js @@ -0,0 +1,212 @@ +module.exports = { + _: { + storage_is_encrypted: 'Vaš spremnik je kriptiran. Za dekripcoju je potrebna lozinka.', + enter_password: 'Unesi lozinku', + bad_password: 'Kriva lozinka, pokušaj ponovo', + months_ago: 'mjesecima unazad', + days_ago: 'danima unazad', + hours_ago: 'satima unazad', + minutes_ago: 'minutama unazad', + never: 'nikad', + }, + wallets: { + select_wallet: 'Odaberi volet', + options: 'opcije', + list: { + app_name: 'Blue Wallet', + title: 'Voleti', + header: 'Volet je par privatnog ključa (tajna!) i javne adrese' + 'koju slobodno možete dijeliti kada primate novce.', + add: 'Dodaj volet', + create_a_wallet: 'Stvori novi volet', + create_a_wallet1: 'Ne košta ništa i možete', + create_a_wallet2: 'ih stvoriti moliko želite', + latest_transaction: 'posljednja transakcija', + empty_txs1: 'Vaše transakcije će se pojaviti ovdje', + empty_txs2: 'trenutno nema nijedne', + tap_here_to_buy: 'Klikni ovdje za kupnju Bitkoina', + }, + reorder: { + title: 'Uredi volete', + }, + add: { + title: 'Dodaj volet', + description: 'Možete ili skenirati bekap papirnati volet (u WIF - Wallet Import Format), ili stvoriti novi volet. Segwit je podržan.', + scan: 'Skeniraj', + create: 'Stvori', + label_new_segwit: 'Novi SegWit', + label_new_lightning: 'Novi Lightning', + wallet_name: 'ime voleta', + wallet_type: 'tip', + or: 'ili', + import_wallet: 'Unesi volet', + imported: 'Unešeno', + coming_soon: 'Dolazi uskoro', + lightning: 'Lightning', + bitcoin: 'Bitcoin', + }, + details: { + title: 'Volet', + address: 'Adresa', + type: 'Tip', + label: 'Oznaka', + destination: 'odredište', + description: 'opis', + are_you_sure: 'Jesi li ziher?', + yes_delete: 'Da, briši', + no_cancel: 'Ne, otiaži', + delete: 'Obriši', + save: 'Pohrani', + delete_this_wallet: 'Obriši ovaj volet', + export_backup: 'Izvoz / bekap', + buy_bitcoin: 'Kupi Bitcoin', + show_xpub: 'Prikaži voletov XPUB', + }, + export: { + title: 'izvoz voleta', + }, + xpub: { + title: 'volet XPUB', + copiedToClipboard: 'Kopirano u međuspremnik.', + }, + import: { + title: 'unesi', + explanation: + 'Ovdje upiši svoj mnemonik slijed riječi, privatni ključ, WIF, ili što već imaš. BlueWallet će pokušati porocijeniti format i unesti tvoj volet.', + imported: 'Uneseno', + error: 'Neuspješan unos. Molimo pažljivo provjerite ispravnost unesenih podataka.', + success: 'Uspjeh', + do_import: 'Unesi', + scan_qr: 'ili skeniraj QR kod?', + }, + scanQrWif: { + go_back: 'Povratak', + cancel: 'Otkaži', + decoding: 'Dekodiranje', + input_password: 'Unesi lozinku', + password_explain: 'Ovo je BIP38 enkriptiran privatni ključ', + bad_password: 'Pogrešna lozinka', + wallet_already_exists: 'Ovaj volet već postoji', + bad_wif: 'Pogrešan WIF', + imported_wif: 'Unesen WIF ', + with_address: ' sa adresom ', + imported_segwit: 'Unesen SegWit', + imported_legacy: 'Unesen Legacy', + imported_watchonly: 'Unesen samo za pregled', + }, + }, + transactions: { + list: { + tabBarLabel: 'Transakcije', + title: 'transakcije', + description: 'Popis dolaznih i odlaznih transakcija vašeg voleta.', + conf: 'konf.', + }, + details: { + title: 'Transakcija', + from: 'Od', + to: 'Za', + copy: 'Kopiraj', + transaction_details: 'Detalji transakcije', + show_in_block_explorer: 'Prikaži u blok eksploreru', + }, + }, + send: { + header: 'Šalji', + details: { + title: 'Stvori transakciju', + amount_field_is_not_valid: 'Iznos nije ispravan', + fee_field_is_not_valid: 'Ovo polje nije ispravno', + address_field_is_not_valid: 'Polje adrese nije ispravno', + total_exceeds_balance: 'Iznos je veći od raspoloživog.', + create_tx_error: 'Pogreška prilikom stvaranja transakcije. Molimo provijeri da je adresa ispravna.', + address: 'adresa', + amount_placeholder: 'iznos za slanje (u BTC)', + fee_placeholder: 'plus trošak transakcije (u BTC)', + note_placeholder: 'bilješka za evidenciju', + cancel: 'Otkaži', + scan: 'Skeniraj', + send: 'Šalji', + create: 'Stvori', + remaining_balance: 'Preostali saldo', + }, + confirm: { + header: 'Potvrdi', + sendNow: 'Pošalji sad', + }, + success: { + done: 'U redu', + }, + create: { + details: 'Detalji', + title: 'stvori transakciju', + error: 'Pogreška. Neispravna adresa ili iznos slanja?', + go_back: 'Nazad', + this_is_hex: 'Ovoj je hex transakcije, potpisan i spreman za objavljivanje na mrežu.', + to: 'Za', + amount: 'Iznos', + fee: 'Trošak slanja', + tx_size: 'TX veličina', + satoshi_per_byte: 'Satoshi / byte', + memo: 'Bilješka', + broadcast: 'Objavi', + not_enough_fee: 'Trošak slanja je premal. Povećaj ga.', + }, + }, + receive: { + header: 'Primanje', + details: { + title: 'Pokaži ovu adresu platitelju', + share: 'pokaži', + copiedToClipboard: 'Kopirano u međuspremnik.', + label: 'Opis', + setAmount: 'Odredi iznos za primiti', + }, + }, + buyBitcoin: { + header: 'Kupi Bitcoin', + tap_your_address: 'Klikni na adresu za spremanje u međuspremnik:', + copied: 'Spremljeno u međuspremnik!', + }, + settings: { + header: 'Postavke', + plausible_deniability: 'Fejk volet...', + storage_not_encrypted: 'Spremnik: nije kriptiran', + storage_encrypted: 'Spremnik: je kriptiran', + password: 'Lozinka', + password_explain: 'Upiši lozinku koja će dekriptirati spremnik.', + retype_password: 'Ponovi lozinku', + passwords_do_not_match: 'Lozinke su različite', + encrypt_storage: 'Kriptiraj spremnik', + about: 'Iznos', + language: 'Jezik', + currency: 'Valuta', + }, + plausibledeniability: { + title: 'Fejk volet', + help: + 'U iznimnim okolnostima netko gadan (pa još ako drži oklagiju) te' + + 'može neljubazno pritisnuti da mu otkriješ lozinku za ovaj volet.' + + 'BlueWallet ti čuva leđa buraz. Nemaš brige. Gledaj.' + + 'Stvoriti ćemo dupli volet sa drugačijom lozinkom. Haha, žišku?' + + 'Pa kad se ovaj počne pjeniti a ti vidiš da je vrag odnio šalu' + + 'ti mu podvali ovaj drugi volet. Eto mu ga. Nek si cucla.', + help2: 'Novi spremnik će biti posve funkcionalan, možeš pohraniti koliko' + 'misliš da je potrebno da izgleda uvjerljivo.', + create_fake_storage: 'Stvori fejk enkriptirani spremnik', + go_back: 'Povratak', + create_password: 'Unesi lozinku', + create_password_explanation: 'Lozinka za fejk spremnik treba biti drugačija od lozinke za oriđi spremnik', + password_should_not_match: 'Lozinka za fejk spremnik treba biti drugačija od lozinke za oriđi spremnik', + retype_password: 'Ponovi lozinku', + passwords_do_not_match: 'Lozinke ne pašu, pokušaj ponovo', + success: 'Uspjeh', + }, + lnd: { + title: 'Uredi novčeke', + choose_source_wallet: 'Odaberi izvor', + refill_lnd_balance: 'Dopuni Lightning volet saldo', + refill: 'Dopuni', + withdraw: 'Isprazni', + expired: 'Isteklo', + sameWalletAsInvoiceError: 'Ne možeš platiti račun s istim voletom s kojim si račun stvorio, ono.', + }, +}; diff --git a/loc/index.js b/loc/index.js index f08d7a0a..886a5c0a 100644 --- a/loc/index.js +++ b/loc/index.js @@ -33,7 +33,8 @@ let strings; locale === 'cs-cz' || locale === 'th-th' || locale === 'da-dk' || - locale === 'nl-nl' + locale === 'nl-nl' || + locale === 'hr-hr' ) { locale = locale.replace('-', '_'); strings.setLanguage(locale); @@ -57,6 +58,7 @@ strings = new Localization({ th_th: require('./th_TH.js'), nl_nl: require('./nl_NL.js'), fr_fr: require('./fr_FR.js'), + hr_hr: require('./hr_HR.js'), }); strings.saveLanguage = lang => AsyncStorage.setItem(AppStorage.LANG, lang); diff --git a/models/fiatUnit.js b/models/fiatUnit.js index d6e8ceb5..5d4d94bf 100644 --- a/models/fiatUnit.js +++ b/models/fiatUnit.js @@ -6,6 +6,7 @@ export const FiatUnit = Object.freeze({ CNY: { endPointKey: 'CNY', symbol: '¥', locale: 'zh-CN' }, EUR: { endPointKey: 'EUR', symbol: '€', locale: 'en-EN' }, GBP: { endPointKey: 'GBP', symbol: '£', locale: 'en-GB' }, + HRK: { endPointKey: 'HRK', symbol: 'HRK', locale: 'hr-HR' }, INR: { endPointKey: 'INR', symbol: '₹', locale: 'hi-HN' }, JPY: { endPointKey: 'JPY', symbol: '¥', locale: 'ja-JP' }, RUB: { endPointKey: 'RUB', symbol: '₽', locale: 'ru-RU' }, diff --git a/package.json b/package.json index 51c57c40..0345718e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "BlueWallet", - "version": "3.5.5", + "version": "3.5.6", "devDependencies": { "babel-eslint": "^8.2.6", "babel-jest": "23.6.0", diff --git a/screen/settings/language.js b/screen/settings/language.js index 09e4fe25..b5af8d0b 100644 --- a/screen/settings/language.js +++ b/screen/settings/language.js @@ -19,6 +19,7 @@ export default class Language extends Component { availableLanguages: [ { label: 'English', value: 'en' }, { label: 'Česky (CZ)', value: 'cs_cz' }, + { label: 'Croatian (HR)', value: 'hr_hr' }, { label: 'Danish (DK)', value: 'da_dk' }, { label: 'Deutsch (DE)', value: 'de_de' }, { label: 'Dutch (NL)', value: 'nl_nl' },