diff --git a/BlueComponents.js b/BlueComponents.js index 3d6ba5c71..b12a93b29 100644 --- a/BlueComponents.js +++ b/BlueComponents.js @@ -283,7 +283,6 @@ export class BlueFormMultiInput extends Component { render() { return ( ); } diff --git a/class/hd-legacy-breadwallet-wallet.js b/class/hd-legacy-breadwallet-wallet.js index 8b9b15b2e..d1497cc9a 100644 --- a/class/hd-legacy-breadwallet-wallet.js +++ b/class/hd-legacy-breadwallet-wallet.js @@ -1,4 +1,5 @@ import { AbstractHDWallet } from './abstract-hd-wallet'; +import { BitcoinUnit } from '../models/bitcoinUnits'; import Frisbee from 'frisbee'; const bitcoin = require('bitcoinjs-lib'); const bip39 = require('bip39'); @@ -11,12 +12,17 @@ export class HDLegacyBreadwalletWallet extends AbstractHDWallet { constructor() { super(); this.type = 'HDLegacyBreadwallet'; + this.preferredBalanceUnit = BitcoinUnit.BTC; } getTypeReadable() { return 'HD Legacy Breadwallet (P2PKH)'; } + getPreferredBalanceUnit() { + return this.preferredBalanceUnit || BitcoinUnit.BTC; + } + /** * @see https://github.com/bitcoinjs/bitcoinjs-lib/issues/584 * @see https://github.com/bitcoinjs/bitcoinjs-lib/issues/914 diff --git a/class/hd-segwit-p2sh-wallet.js b/class/hd-segwit-p2sh-wallet.js index c1cafa8cd..ad60ea5f9 100644 --- a/class/hd-segwit-p2sh-wallet.js +++ b/class/hd-segwit-p2sh-wallet.js @@ -1,6 +1,7 @@ import { AbstractHDWallet } from './abstract-hd-wallet'; import Frisbee from 'frisbee'; import { NativeModules } from 'react-native'; +import { BitcoinUnit } from '../models/bitcoinUnits'; const { RNRandomBytes } = NativeModules; const bitcoin = require('bitcoinjs-lib'); const bip39 = require('bip39'); @@ -17,6 +18,11 @@ export class HDSegwitP2SHWallet extends AbstractHDWallet { constructor() { super(); this.type = 'HDsegwitP2SH'; + this.preferredBalanceUnit = BitcoinUnit.BTC; + } + + getPreferredBalanceUnit() { + return this.preferredBalanceUnit || BitcoinUnit.BTC; } getTypeReadable() { diff --git a/class/legacy-wallet.js b/class/legacy-wallet.js index 16f49ca6e..e3747a43b 100644 --- a/class/legacy-wallet.js +++ b/class/legacy-wallet.js @@ -3,19 +3,21 @@ import { SegwitBech32Wallet } from './'; import { useBlockcypherTokens } from './constants'; import Frisbee from 'frisbee'; import { NativeModules } from 'react-native'; +import { BitcoinUnit } from '../models/bitcoinUnits'; const { RNRandomBytes } = NativeModules; const BigNumber = require('bignumber.js'); const bitcoin = require('bitcoinjs-lib'); const signer = require('../models/signer'); /** - * Has private key and address signle like "1ABCD....." + * Has private key and single address like "1ABCD....." * (legacy P2PKH compressed) */ export class LegacyWallet extends AbstractWallet { constructor() { super(); this.type = 'legacy'; + this.preferredBalanceUnit = BitcoinUnit.BTC; } /** @@ -81,6 +83,10 @@ export class LegacyWallet extends AbstractWallet { return 'Legacy (P2PKH)'; } + getPreferredBalanceUnit() { + return this.preferredBalanceUnit || BitcoinUnit.BTC; + } + /** * * @returns {string} diff --git a/class/segwit-bech-wallet.js b/class/segwit-bech-wallet.js index da8d8a753..47ab1ec6a 100644 --- a/class/segwit-bech-wallet.js +++ b/class/segwit-bech-wallet.js @@ -1,10 +1,16 @@ import { LegacyWallet } from './legacy-wallet'; +import { BitcoinUnit } from '../models/bitcoinUnits'; const bitcoin = require('bitcoinjs-lib'); export class SegwitBech32Wallet extends LegacyWallet { constructor() { super(); this.type = 'segwitBech32'; + this.preferredBalanceUnit = BitcoinUnit.BTC; + } + + getPreferredBalanceUnit() { + return this.preferredBalanceUnit || BitcoinUnit.BTC; } getTypeReadable() { diff --git a/class/segwit-p2sh-wallet.js b/class/segwit-p2sh-wallet.js index dc5201536..d2ef13d44 100644 --- a/class/segwit-p2sh-wallet.js +++ b/class/segwit-p2sh-wallet.js @@ -1,4 +1,5 @@ import { LegacyWallet } from './legacy-wallet'; +import { BitcoinUnit } from '../models/bitcoinUnits'; const bitcoin = require('bitcoinjs-lib'); const signer = require('../models/signer'); const BigNumber = require('bignumber.js'); @@ -7,6 +8,7 @@ export class SegwitP2SHWallet extends LegacyWallet { constructor() { super(); this.type = 'segwitP2SH'; + this.preferredBalanceUnit = BitcoinUnit.BTC; } allowRBF() { @@ -43,6 +45,10 @@ export class SegwitP2SHWallet extends LegacyWallet { return this._address; } + getPreferredBalanceUnit() { + return this.preferredBalanceUnit || BitcoinUnit.BTC; + } + /** * Takes UTXOs (as presented by blockcypher api), transforms them into * format expected by signer module, creates tx and returns signed string txhex. diff --git a/class/watch-only-wallet.js b/class/watch-only-wallet.js index 7ac2618b4..9ca4aaab4 100644 --- a/class/watch-only-wallet.js +++ b/class/watch-only-wallet.js @@ -1,10 +1,16 @@ import { LegacyWallet } from './legacy-wallet'; +import { BitcoinUnit } from '../models/bitcoinUnits'; const bitcoin = require('bitcoinjs-lib'); export class WatchOnlyWallet extends LegacyWallet { constructor() { super(); this.type = 'watchOnly'; + this.preferredBalanceUnit = BitcoinUnit.BTC; + } + + getPreferredBalanceUnit() { + return this.preferredBalanceUnit || BitcoinUnit.BTC; } getTypeReadable() { diff --git a/ios/BlueWallet/Info.plist b/ios/BlueWallet/Info.plist index d552df913..f710079a6 100644 --- a/ios/BlueWallet/Info.plist +++ b/ios/BlueWallet/Info.plist @@ -34,7 +34,7 @@ CFBundleVersion - 159 + 160 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/package-lock.json b/package-lock.json index 2b1851d4e..0f25844aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -807,9 +807,9 @@ } }, "@babel/preset-env": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.2.0.tgz", - "integrity": "sha512-haGR38j5vOGVeBatrQPr3l0xHbs14505DcM57cbJy48kgMFvvHHoYEhHuRV+7vi559yyAUAVbTWzbK/B/pzJng==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.2.3.tgz", + "integrity": "sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw==", "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", @@ -896,24 +896,6 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", - "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, "@babel/plugin-transform-block-scoping": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", @@ -924,9 +906,9 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.0.tgz", - "integrity": "sha512-aPCEkrhJYebDXcGTAP+cdUENkH7zqOlgbKwLbghjjHpJRJBWM/FSlCjMoPGA8oUdiMfOrk3+8EFPLLb5r7zj2w==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", + "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-define-map": "^7.1.0", @@ -998,15 +980,6 @@ "@babel/helper-simple-access": "^7.1.0" } }, - "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" - } - }, "@babel/plugin-transform-parameters": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz", @@ -1026,9 +999,9 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.0.tgz", - "integrity": "sha512-7TtPIdwjS/i5ZBlNiQePQCovDh9pAhVbp/nGVRBZuUdBiVRThyyLend3OHobc0G+RLCPPAN70+z/MAMhsgJd/A==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -3028,13 +3001,13 @@ } }, "browserslist": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.5.tgz", - "integrity": "sha512-z9ZhGc3d9e/sJ9dIx5NFXkKoaiQTnrvrMsN3R1fGb1tkWWNSz12UewJn9TNxGo1l7J23h0MRaPmk7jfeTZYs1w==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.6.tgz", + "integrity": "sha512-kMGKs4BTzRWviZ8yru18xBpx+CyHG9eqgRbj9XbE3IMgtczf4aiA0Y1YCpVdvUieKGZ03kolSPXqTcscBCb9qw==", "requires": { - "caniuse-lite": "^1.0.30000912", - "electron-to-chromium": "^1.3.86", - "node-releases": "^1.0.5" + "caniuse-lite": "^1.0.30000921", + "electron-to-chromium": "^1.3.92", + "node-releases": "^1.1.1" } }, "bs58": { @@ -3163,9 +3136,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000918", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000918.tgz", - "integrity": "sha512-CAZ9QXGViBvhHnmIHhsTPSWFBujDaelKnUj7wwImbyQRxmXynYqKGi3UaZTSz9MoVh+1EVxOS/DFIkrJYgR3aw==" + "version": "1.0.30000923", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz", + "integrity": "sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w==" }, "capture-exit": { "version": "1.2.0", @@ -3955,9 +3928,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.90", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.90.tgz", - "integrity": "sha512-IjJZKRhFbWSOX1w0sdIXgp4CMRguu6UYcTckyFF/Gjtemsu/25eZ+RXwFlV+UWcIueHyQA1UnRJxocTpH5NdGA==" + "version": "1.3.96", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz", + "integrity": "sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q==" }, "elliptic": { "version": "6.4.1", @@ -9387,9 +9360,9 @@ } }, "node-releases": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.1.tgz", - "integrity": "sha512-2UXrBr6gvaebo5TNF84C66qyJJ6r0kxBObgZIDX3D3/mt1ADKiHux3NJPWisq0wxvJJdkjECH+9IIKYViKj71Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.2.tgz", + "integrity": "sha512-j1gEV/zX821yxdWp/1vBMN0pSUjuH9oGUdLCb4PfUko6ZW7KdRs3Z+QGGwDUhYtSpQvdVVyLd2V0YvLsmdg5jQ==", "requires": { "semver": "^5.3.0" } @@ -10605,9 +10578,9 @@ } }, "react-native-custom-qr-codes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-native-custom-qr-codes/-/react-native-custom-qr-codes-1.0.2.tgz", - "integrity": "sha1-t9EipGMtJSsPdulLQIRnNCGs4EE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-native-custom-qr-codes/-/react-native-custom-qr-codes-2.0.0.tgz", + "integrity": "sha512-tUQipLzDorDgv/gzuhAISSqCCNOTtM+QveAUTnV1deeEKDAtdfdzY9QJIqLZYmfYvusySpXOK1Sdu9X+6AR2Jg==", "requires": { "prop-types": "^15.5.10" } @@ -10634,9 +10607,9 @@ "integrity": "sha1-oBgDk8UxujR3cixuQqMc6xwRYjs=" }, "react-native-fs": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.13.2.tgz", - "integrity": "sha512-eN2HReoE/T+6r180kiXppshqJ5DsO6AngUmVbz09Qzl5EXU2zN0WfOaizKR2oD5u0XlcDrNJK7/spVH1XyQzEw==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.13.3.tgz", + "integrity": "sha512-B62LSSAEYQGItg7KVTzTVVCxezOYFBYp4DMVFbdoZUd1mZVFdqR2sy1HY1mye1VI/Lf3IbxSyZEQ0GmrrdwLjg==", "requires": { "base-64": "^0.1.0", "utf8": "^2.1.1" diff --git a/package.json b/package.json index 620bc2dc7..4de5ddcff 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ } }, "dependencies": { - "@babel/preset-env": "^7.2.0", + "@babel/preset-env": "^7.2.3", "asyncstorage-down": "^3.1.1", "bignumber.js": "^7.0.0", "bip21": "^2.0.2", @@ -64,11 +64,11 @@ "react-localization": "^1.0.10", "react-native": "^0.57.8", "react-native-camera": "^1.6.4", - "react-native-custom-qr-codes": "^1.0.2", + "react-native-custom-qr-codes": "^2.0.0", "react-native-device-info": "^0.24.3", "react-native-elements": "^0.19.0", "react-native-flexi-radio-button": "^0.2.2", - "react-native-fs": "^2.13.2", + "react-native-fs": "^2.13.3", "react-native-gesture-handler": "^1.0.12", "react-native-google-analytics-bridge": "^6.1.2", "react-native-haptic-feedback": "^1.4.2", diff --git a/screen/wallets/import.js b/screen/wallets/import.js index e1dae48ab..c4441b3e2 100644 --- a/screen/wallets/import.js +++ b/screen/wallets/import.js @@ -221,6 +221,7 @@ export default class WalletsImport extends Component { onChangeText={text => { this.setLabel(text); }} + autoCorrect={false} />