diff --git a/.travis.yml b/.travis.yml
index a5b94f89d..b41e15e93 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -51,7 +51,7 @@ install:
- echo y | sdkmanager --no_https "system-images;android-$API;$EMU_FLAVOR;$ABI" >/dev/null # install our emulator
# Set up KVM on linux for hardware acceleration. Manually here so it only happens for emulator tests, takes ~30s
- - sudo -E apt-get -yq --no-install-suggests --no-install-recommends install bridge-utils libpulse0 libvirt-bin qemu-kvm virtinst ubuntu-vm-builder
+ - sudo -E apt-get -yq --no-install-suggests --no-install-recommends install bridge-utils libpulse0 libvirt-bin libxcursor1 qemu-kvm virtinst ubuntu-vm-builder
- sudo adduser $USER libvirt
- sudo adduser $USER kvm
@@ -99,4 +99,4 @@ cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
- - node_modules/
\ No newline at end of file
+ - node_modules/
diff --git a/RELEASE.md b/RELEASE.md
index 56d607ed3..21067dc3a 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -2,12 +2,12 @@
## Apple
-* test the build on real device. its imperative that you run selftest and it gives you OK
+* test the build on a real device. It is imperative that you run selftest and it gives you OK
* if necessary, up version number in all relevant files (you can use `./edit-version-number.sh`)
* run `./release-notes.sh` - it prints changelog between latest tag and now, put this output under
new version in file `ios/fastlane/metadata/en-US/release_notes.txt` (on top); if file got too big
delete the oldest version from the bottom of the file
-* now is a good time to commit ver bump and release notes changes
+* now is a good time to commit a ver bump and release notes changes
* create this release version in App Store Connect (iTunes) and attach appropriate build. note
last 4 digits of the build and announce it - this is now a RC. no need to fill release notes yet
* `cd ios/` and then run `DELIVER_USERNAME="my_itunes_email@example.com" DELIVER_PASSWORD="my_itunes_password" fastlane deliver --force --skip_binary_upload --skip_screenshots --ignore_language_directory_validation -a io.bluewallet.bluewallet --app_version "6.6.6"`
@@ -20,8 +20,9 @@ where `76ed479` is a latest commit in this version. replace the version as well.
## Android
* do android after ios usually
-* test the build on real device. its imperative that you run selftest and it gives you OK. note which build you are testing
+* test the build on a real device. We hace accounts with browserstack where you can do so.
+* its imperative that you run selftest and it gives you OK. note which build you are testing
* go to appcenter.ms, find this exact build under `master` builds, and press `Distribute` -> `Store` -> `Production`.
-in `Release notes` write `Bug fixes and performance improvements`, this field is to small to include actual changelog
-* wait till appcenter displays message that it is succesfully distributed
-* noice!
\ No newline at end of file
+in `Release notes` write the release, this field is to smaller than iOS, so you need to keep it bellow 500 characters.
+* now just wait till appcenter displays a message that it is succesfully distributed
+* noice!
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 8ef733ec0..9c125c2eb 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -140,7 +140,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
- versionName "5.2.2"
+ versionName "5.3.1"
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/class/app-storage.js b/class/app-storage.js
index d319fee05..d168e9f6c 100644
--- a/class/app-storage.js
+++ b/class/app-storage.js
@@ -302,8 +302,15 @@ export class AppStorage {
await this.saveToDisk();
};
await WatchConnectivity.shared.sendWalletsToWatch();
- DeviceQuickActions.setWallets(this.wallets);
- DeviceQuickActions.setQuickActions();
+
+ const isStorageEncrypted = await this.storageIsEncrypted();
+ if (isStorageEncrypted) {
+ DeviceQuickActions.clearShortcutItems();
+ DeviceQuickActions.removeAllWallets();
+ } else {
+ DeviceQuickActions.setWallets(this.wallets);
+ DeviceQuickActions.setQuickActions();
+ }
return true;
} else {
return false; // failed loading data or loading/decryptin data
diff --git a/ios/BlueWallet/Info.plist b/ios/BlueWallet/Info.plist
index 8626305be..9b7b9ff5c 100644
--- a/ios/BlueWallet/Info.plist
+++ b/ios/BlueWallet/Info.plist
@@ -48,7 +48,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 5.2.2
+ 5.3.1
CFBundleSignature
????
CFBundleURLTypes
diff --git a/ios/BlueWalletWatch Extension/Info.plist b/ios/BlueWalletWatch Extension/Info.plist
index 9175066f0..ea9cfe02d 100644
--- a/ios/BlueWalletWatch Extension/Info.plist
+++ b/ios/BlueWalletWatch Extension/Info.plist
@@ -17,7 +17,7 @@
CFBundlePackageType
XPC!
CFBundleShortVersionString
- 5.2.2
+ 5.3.1
CFBundleVersion
239
CLKComplicationPrincipalClass
diff --git a/ios/BlueWalletWatch/Info.plist b/ios/BlueWalletWatch/Info.plist
index 1b51a6400..2531cce24 100644
--- a/ios/BlueWalletWatch/Info.plist
+++ b/ios/BlueWalletWatch/Info.plist
@@ -17,7 +17,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 5.2.2
+ 5.3.1
CFBundleVersion
239
UISupportedInterfaceOrientations
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 586b59d3f..6db8d05e9 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -194,13 +194,13 @@ PODS:
- React
- react-native-blur (0.8.0):
- React
- - react-native-camera (3.17.0):
+ - react-native-camera (3.19.1):
- React
- - react-native-camera/RCT (= 3.17.0)
- - react-native-camera/RN (= 3.17.0)
- - react-native-camera/RCT (3.17.0):
+ - react-native-camera/RCT (= 3.19.1)
+ - react-native-camera/RN (= 3.19.1)
+ - react-native-camera/RCT (3.19.1):
- React
- - react-native-camera/RN (3.17.0):
+ - react-native-camera/RN (3.19.1):
- React
- react-native-document-picker (3.2.0):
- React
@@ -497,7 +497,7 @@ SPEC CHECKSUMS:
React-jsinspector: fa0ecc501688c3c4c34f28834a76302233e29dc0
react-native-biometrics: c892904948a32295b128f633bcc11eda020645c5
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
- react-native-camera: 4ead7a30a89f275f531d80aa720cc69363c38135
+ react-native-camera: 2eb144a4572d9342bddc946f4c0c3bc2b50e374e
react-native-document-picker: e3516aff0dcf65ee0785d9bcf190eb10e2261154
react-native-image-picker: 3637d63fef7e32a230141ab4660d3ceb773c824f
react-native-randombytes: 991545e6eaaf700b4ee384c291ef3d572e0b2ca8
diff --git a/ios/TodayExtension/Info.plist b/ios/TodayExtension/Info.plist
index b76c15381..bae8e83db 100644
--- a/ios/TodayExtension/Info.plist
+++ b/ios/TodayExtension/Info.plist
@@ -17,7 +17,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 5.2.2
+ 5.3.1
CFBundleVersion
1
NSExtension
diff --git a/ios/fastlane/metadata/en-US/release_notes.txt b/ios/fastlane/metadata/en-US/release_notes.txt
index 77987b32c..01f61b405 100644
--- a/ios/fastlane/metadata/en-US/release_notes.txt
+++ b/ios/fastlane/metadata/en-US/release_notes.txt
@@ -1,3 +1,21 @@
+v5.3.0
+======
+
+* ADD: Open clipboard modal if address is detected at launch
+* ADD: Copy from clipboard on actionsheet
+* ADD: support for Electrum Personal Server and Electrs (disable protocol batching)
+* ADD: avatars in HodlHodl offers list
+* ADD: Long Press on Send. More optins to come
+* FIX: Remove quick actions if storage is encrypted (improves plausible deniability)
+* FIX: allow copy to clipboard on watch-only wallets
+* FIX: electrum connection status now updates realtime
+* FIX: import single-address bech32 wallet from WIF (closes #911)
+* FIX: duplicate input detected error (closes #912)
+* FIX: Error in back button - Marketplace #922
+* FIX: Don't display clipboard modal if content is from a lightning wallet
+* REF: some love to the about section
+
+
v5.2.0
======
@@ -47,23 +65,3 @@ v4.9.4
* FIX: Handle both chains
* FIX: deeplinking (safello etc)
* DEL: Remove alerts from main list
-
-v4.9.2
-======
-
-* ADD: Swipe to Scan
-* ADD: Handle clipboard content with both bitcoin: and lightning:
-* ADD: Ask user if they have backed up their seed phrase
-* ADD: Export screen allows copying to clipboard if its a LNDHub wallet
-* ADD: Show LNDHub backup when creating lnd wallet
-* ADD: CLP Fiat
-* FIX: TX Time visual glitch
-* FIX: Show an alert when theres a fetch transactions error
-* FIX: TX list uses whole canvas area
-* FIX: Don't allow empty wallet labels
-* FIX: Wallet type selecion clipping on advanced mode
-* FIX: Receive address was not being rendered
-* FIX: Don't show wallet export warning if wallet was imported
-* REF: Reworked Import wallet flow
-* REF: BIP49 to use electrum
-* REF: Custom receive
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 77e6d2174..4fafd3b1e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "bluewallet",
- "version": "5.2.2",
+ "version": "5.3.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -18,11 +18,11 @@
}
},
"@babel/compat-data": {
- "version": "7.8.6",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.6.tgz",
- "integrity": "sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz",
+ "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==",
"requires": {
- "browserslist": "^4.8.5",
+ "browserslist": "^4.9.1",
"invariant": "^2.2.4",
"semver": "^5.5.0"
}
@@ -267,6 +267,11 @@
"@babel/types": "^7.8.3"
}
},
+ "@babel/helper-validator-identifier": {
+ "version": "7.9.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
+ "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g=="
+ },
"@babel/helper-wrap-function": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
@@ -641,13 +646,39 @@
}
},
"@babel/plugin-transform-modules-amd": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz",
- "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz",
+ "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==",
"requires": {
- "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-module-transforms": "^7.9.0",
"@babel/helper-plugin-utils": "^7.8.3",
"babel-plugin-dynamic-import-node": "^2.3.0"
+ },
+ "dependencies": {
+ "@babel/helper-module-transforms": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
+ "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-replace-supers": "^7.8.6",
+ "@babel/helper-simple-access": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/template": "^7.8.6",
+ "@babel/types": "^7.9.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.9.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.9.5",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
}
},
"@babel/plugin-transform-modules-commonjs": {
@@ -662,23 +693,75 @@
}
},
"@babel/plugin-transform-modules-systemjs": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz",
- "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz",
+ "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==",
"requires": {
"@babel/helper-hoist-variables": "^7.8.3",
- "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-module-transforms": "^7.9.0",
"@babel/helper-plugin-utils": "^7.8.3",
"babel-plugin-dynamic-import-node": "^2.3.0"
+ },
+ "dependencies": {
+ "@babel/helper-module-transforms": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
+ "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-replace-supers": "^7.8.6",
+ "@babel/helper-simple-access": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/template": "^7.8.6",
+ "@babel/types": "^7.9.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.9.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.9.5",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
}
},
"@babel/plugin-transform-modules-umd": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz",
- "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz",
+ "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==",
"requires": {
- "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-module-transforms": "^7.9.0",
"@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-module-transforms": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
+ "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-replace-supers": "^7.8.6",
+ "@babel/helper-simple-access": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/template": "^7.8.6",
+ "@babel/types": "^7.9.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.9.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.9.5",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
}
},
"@babel/plugin-transform-named-capturing-groups-regex": {
@@ -848,12 +931,12 @@
}
},
"@babel/preset-env": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.4.tgz",
- "integrity": "sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w==",
+ "version": "7.8.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.7.tgz",
+ "integrity": "sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw==",
"requires": {
- "@babel/compat-data": "^7.8.4",
- "@babel/helper-compilation-targets": "^7.8.4",
+ "@babel/compat-data": "^7.8.6",
+ "@babel/helper-compilation-targets": "^7.8.7",
"@babel/helper-module-imports": "^7.8.3",
"@babel/helper-plugin-utils": "^7.8.3",
"@babel/plugin-proposal-async-generator-functions": "^7.8.3",
@@ -876,13 +959,13 @@
"@babel/plugin-transform-async-to-generator": "^7.8.3",
"@babel/plugin-transform-block-scoped-functions": "^7.8.3",
"@babel/plugin-transform-block-scoping": "^7.8.3",
- "@babel/plugin-transform-classes": "^7.8.3",
+ "@babel/plugin-transform-classes": "^7.8.6",
"@babel/plugin-transform-computed-properties": "^7.8.3",
"@babel/plugin-transform-destructuring": "^7.8.3",
"@babel/plugin-transform-dotall-regex": "^7.8.3",
"@babel/plugin-transform-duplicate-keys": "^7.8.3",
"@babel/plugin-transform-exponentiation-operator": "^7.8.3",
- "@babel/plugin-transform-for-of": "^7.8.4",
+ "@babel/plugin-transform-for-of": "^7.8.6",
"@babel/plugin-transform-function-name": "^7.8.3",
"@babel/plugin-transform-literals": "^7.8.3",
"@babel/plugin-transform-member-expression-literals": "^7.8.3",
@@ -893,9 +976,9 @@
"@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
"@babel/plugin-transform-new-target": "^7.8.3",
"@babel/plugin-transform-object-super": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.8.4",
+ "@babel/plugin-transform-parameters": "^7.8.7",
"@babel/plugin-transform-property-literals": "^7.8.3",
- "@babel/plugin-transform-regenerator": "^7.8.3",
+ "@babel/plugin-transform-regenerator": "^7.8.7",
"@babel/plugin-transform-reserved-words": "^7.8.3",
"@babel/plugin-transform-shorthand-properties": "^7.8.3",
"@babel/plugin-transform-spread": "^7.8.3",
@@ -903,7 +986,7 @@
"@babel/plugin-transform-template-literals": "^7.8.3",
"@babel/plugin-transform-typeof-symbol": "^7.8.4",
"@babel/plugin-transform-unicode-regex": "^7.8.3",
- "@babel/types": "^7.8.3",
+ "@babel/types": "^7.8.7",
"browserslist": "^4.8.5",
"core-js-compat": "^3.6.2",
"invariant": "^2.2.2",
@@ -3066,14 +3149,14 @@
}
},
"browserslist": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz",
- "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==",
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz",
+ "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==",
"requires": {
- "caniuse-lite": "^1.0.30001035",
- "electron-to-chromium": "^1.3.378",
- "node-releases": "^1.1.52",
- "pkg-up": "^3.1.0"
+ "caniuse-lite": "^1.0.30001038",
+ "electron-to-chromium": "^1.3.390",
+ "node-releases": "^1.1.53",
+ "pkg-up": "^2.0.0"
}
},
"bs58": {
@@ -3233,9 +3316,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001035",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz",
- "integrity": "sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ=="
+ "version": "1.0.30001040",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001040.tgz",
+ "integrity": "sha512-Ep0tEPeI5wCvmJNrXjE3etgfI+lkl1fTDU6Y3ZH1mhrjkPlVI9W4pcKbMo+BQLpEWKVYYp2EmYaRsqpPC3k7lQ=="
},
"capture-exit": {
"version": "2.0.0",
@@ -3938,9 +4021,9 @@
}
},
"dayjs": {
- "version": "1.8.20",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.20.tgz",
- "integrity": "sha512-mH0MCDxw6UCGJYxVN78h8ugWycZAO8thkj3bW6vApL5tS0hQplIDdAQcmbvl7n35H0AKdCJQaArTrIQw2xt4Qg=="
+ "version": "1.8.23",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.23.tgz",
+ "integrity": "sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ=="
},
"debounce": {
"version": "1.2.0",
@@ -4102,9 +4185,9 @@
"dev": true
},
"detox": {
- "version": "16.0.0",
- "resolved": "https://registry.npmjs.org/detox/-/detox-16.0.0.tgz",
- "integrity": "sha512-arlcCWFhl3A+SNx6ehlVpGMrBH1FPHu38QdJGnVgnMSol84Vt85aPC4m+CkcLtfApXeow1uXadhjOrzPS0AuJQ==",
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/detox/-/detox-16.1.1.tgz",
+ "integrity": "sha512-0f0PFOcx/w4Gcm0KQHgJTnrLvrB+4DBu95VdBgd/z/6SyGPmU8+tgCIdshHvePStUfi7i2EBj4zpYMGE30sLFw==",
"dev": true,
"requires": {
"@babel/core": "^7.4.5",
@@ -4369,9 +4452,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
- "version": "1.3.379",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz",
- "integrity": "sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg=="
+ "version": "1.3.402",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.402.tgz",
+ "integrity": "sha512-gaCDfX7IUH0s3JmBiHCDPrvVcdnTTP1r4WLJc2dHkYYbLmXZ2XHiJCcGQ9Balf91aKTvuCKCyu2JjJYRykoI1w=="
},
"electrum-client": {
"version": "git+https://github.com/BlueWallet/rn-electrum-client.git#2a5bb11dd9a8d89f328049d9ed59bce49d88a15d",
@@ -9438,19 +9521,9 @@
}
},
"node-releases": {
- "version": "1.1.52",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz",
- "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==",
- "requires": {
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
+ "version": "1.1.53",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
+ "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ=="
},
"node-version": {
"version": "1.2.0",
@@ -10127,11 +10200,51 @@
}
},
"pkg-up": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
- "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
+ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
"requires": {
- "find-up": "^3.0.0"
+ "find-up": "^2.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+ }
}
},
"plist": {
diff --git a/package.json b/package.json
index 44b00166b..90698e948 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "bluewallet",
- "version": "5.2.2",
+ "version": "5.3.1",
"license": "MIT",
"devDependencies": {
"@babel/core": "^7.6.2",
@@ -10,7 +10,7 @@
"babel-eslint": "^10.0.2",
"babel-jest": "^24.9.0",
"babel-preset-flow": "^6.23.0",
- "detox": "16.0.0",
+ "detox": "16.1.1",
"eslint": "^6.5.1",
"eslint-plugin-babel": "^5.3.0",
"eslint-plugin-import": "^2.18.0",
@@ -57,7 +57,7 @@
]
},
"dependencies": {
- "@babel/preset-env": "7.8.4",
+ "@babel/preset-env": "7.8.7",
"@react-native-community/async-storage": "1.7.1",
"@react-native-community/blur": "3.4.1",
"@react-native-community/slider": "2.0.8",
@@ -76,7 +76,7 @@
"buffer-reverse": "1.0.1",
"coinselect": "3.1.11",
"crypto-js": "3.1.9-1",
- "dayjs": "1.8.20",
+ "dayjs": "1.8.23",
"ecurve": "1.0.6",
"electrum-client": "git+https://github.com/BlueWallet/rn-electrum-client.git#2a5bb11dd9a8d89f328049d9ed59bce49d88a15d",
"eslint-config-prettier": "6.10.0",
diff --git a/screen/lnd/scanLndInvoice.js b/screen/lnd/scanLndInvoice.js
index 17e5b440a..bf7e7ffb9 100644
--- a/screen/lnd/scanLndInvoice.js
+++ b/screen/lnd/scanLndInvoice.js
@@ -1,15 +1,6 @@
/* global alert */
import React from 'react';
-import {
- Text,
- ActivityIndicator,
- Platform,
- KeyboardAvoidingView,
- View,
- TouchableWithoutFeedback,
- TouchableOpacity,
- Keyboard,
-} from 'react-native';
+import { Text, ActivityIndicator, KeyboardAvoidingView, View, TouchableOpacity, Keyboard, ScrollView } from 'react-native';
import PropTypes from 'prop-types';
import {
BlueButton,
@@ -222,7 +213,7 @@ export default class ScanLndInvoice extends React.Component {
renderWalletSelectionButton = () => {
if (this.state.renderWalletSelectionButtonHidden) return;
return (
-
+
{!this.state.isLoading && (
{this.state.fromWallet.getLabel()}
-
+
{loc.formatBalanceWithoutSuffix(this.state.fromWallet.getBalance(), BitcoinUnit.SATS, false)}
@@ -265,10 +256,10 @@ export default class ScanLndInvoice extends React.Component {
return ;
}
return (
-
-
-
-
+
+
+
+
-
{this.renderWalletSelectionButton()}
-
-
-
-
+
+
+
+
);
}
}
@@ -361,4 +351,4 @@ ScanLndInvoice.propTypes = {
}),
}),
}),
-};
+};
\ No newline at end of file
diff --git a/screen/wallets/add.js b/screen/wallets/add.js
index 6ded7ea4a..e500b565a 100644
--- a/screen/wallets/add.js
+++ b/screen/wallets/add.js
@@ -20,11 +20,9 @@ import {
BlueFormLabel,
BlueButton,
SafeBlueArea,
- BlueFormInput,
BlueNavigationStyle,
BlueButtonLink,
BlueSpacing20,
- BlueSpacing10,
} from '../../BlueComponents';
import { RadioGroup, RadioButton } from 'react-native-flexi-radio-button';
import PropTypes from 'prop-types';
@@ -94,10 +92,10 @@ export default class WalletsAdd extends Component {
}
return (
-
-
- {loc.wallets.add.wallet_name}
-
+
+
+
+ {loc.wallets.add.wallet_name}
-
- {loc.wallets.add.wallet_type}
+ {loc.wallets.add.wallet_type}
-
- {
- Keyboard.dismiss();
- this.setState({
- activeBitcoin: true,
- activeLightning: false,
- });
- }}
- style={{
- width: '45%',
- height: 88,
- }}
- />
-
- {loc.wallets.add.or}
-
- {
- Keyboard.dismiss();
- this.setState({
- activeBitcoin: false,
- activeLightning: true,
- });
- }}
- style={{
- width: '45%',
- height: 88,
- }}
- />
-
-
-
- {(() => {
- if (this.state.activeBitcoin && this.state.isAdvancedOptionsEnabled) {
- return (
-
-
- {loc.settings.advanced_options}
- this.onSelect(index, value)} selectedIndex={0}>
-
- {HDSegwitBech32Wallet.typeReadable} - Multiple addresses
-
-
- {SegwitP2SHWallet.typeReadable} - Single address
-
-
- {HDSegwitP2SHWallet.typeReadable} - Multiple addresses
-
-
-
- );
- } else if (this.state.activeLightning && this.state.isAdvancedOptionsEnabled) {
- return (
-
-
- {loc.settings.advanced_options}
-
- Connect to your LNDHub
- {
- this.setState({ walletBaseURI: text });
- }}
- onSubmitEditing={Keyboard.dismiss}
- placeholder="your node address"
- clearButtonMode="while-editing"
- autoCapitalize="none"
- />
-
- );
- } else if (this.state.activeBitcoin === undefined && this.state.isAdvancedOptionsEnabled) {
- return ;
- }
- })()}
- {!this.state.isLoading ? (
- {
- this.setState({ isLoading: true }, async () => {
- let w;
+ {
+ Keyboard.dismiss();
+ this.setState({
+ activeBitcoin: true,
+ activeLightning: false,
+ });
+ }}
+ style={{
+ width: '45%',
+ height: 88,
+ }}
+ />
+
+ {loc.wallets.add.or}
+
+ {
+ Keyboard.dismiss();
+ this.setState({
+ activeBitcoin: false,
+ activeLightning: true,
+ });
+ }}
+ style={{
+ width: '45%',
+ height: 88,
+ }}
+ />
+
- if (this.state.activeLightning) {
- // eslint-disable-next-line
+
+ {(() => {
+ if (this.state.activeBitcoin && this.state.isAdvancedOptionsEnabled) {
+ return (
+
+
+ {loc.settings.advanced_options}
+ this.onSelect(index, value)} selectedIndex={0}>
+
+ {HDSegwitBech32Wallet.typeReadable} - Multiple addresses
+
+
+ {SegwitP2SHWallet.typeReadable} - Single address
+
+
+ {HDSegwitP2SHWallet.typeReadable} - Multiple addresses
+
+
+
+ );
+ } else if (this.state.activeLightning && this.state.isAdvancedOptionsEnabled) {
+ return (
+
+
+ {loc.settings.advanced_options}
+
+ Connect to your LNDHub
+
+ {
+ this.setState({ walletBaseURI: text });
+ }}
+ onSubmitEditing={Keyboard.dismiss}
+ placeholder="your node address"
+ clearButtonMode="while-editing"
+ autoCapitalize="none"
+ placeholderTextColor="#81868e"
+ style={{ flex: 1, marginHorizontal: 8, color: '#81868e' }}
+ editable={!this.state.isLoading}
+ underlineColorAndroid="transparent"
+ />
+
+
+ );
+ } else if (this.state.activeBitcoin === undefined && this.state.isAdvancedOptionsEnabled) {
+ return ;
+ }
+ })()}
+
+ {!this.state.isLoading ? (
+ {
+ this.setState({ isLoading: true }, async () => {
+ let w;
- this.createLightningWallet = async () => {
- w = new LightningCustodianWallet();
- w.setLabel(this.state.label || loc.wallets.details.title);
+ if (this.state.activeLightning) {
+ // eslint-disable-next-line
- try {
- let lndhub =
- this.state.walletBaseURI.trim().length > 0
- ? this.state.walletBaseURI
- : LightningCustodianWallet.defaultBaseUri;
- if (lndhub) {
- const isValidNodeAddress = await LightningCustodianWallet.isValidNodeAddress(lndhub);
- if (isValidNodeAddress) {
- w.setBaseURI(lndhub);
- w.init();
- } else {
- throw new Error('The provided node address is not valid LNDHub node.');
+ this.createLightningWallet = async () => {
+ w = new LightningCustodianWallet();
+ w.setLabel(this.state.label || loc.wallets.details.title);
+
+ try {
+ let lndhub =
+ this.state.walletBaseURI.trim().length > 0
+ ? this.state.walletBaseURI
+ : LightningCustodianWallet.defaultBaseUri;
+ if (lndhub) {
+ const isValidNodeAddress = await LightningCustodianWallet.isValidNodeAddress(lndhub);
+ if (isValidNodeAddress) {
+ w.setBaseURI(lndhub);
+ w.init();
+ } else {
+ throw new Error('The provided node address is not valid LNDHub node.');
+ }
}
+ await w.createAccount();
+ await w.authorize();
+ } catch (Err) {
+ this.setState({ isLoading: false });
+ console.warn('lnd create failure', Err);
+ return alert(Err);
+ // giving app, not adding anything
}
- await w.createAccount();
- await w.authorize();
- } catch (Err) {
- this.setState({ isLoading: false });
- console.warn('lnd create failure', Err);
- return alert(Err);
- // giving app, not adding anything
- }
- A(A.ENUM.CREATED_LIGHTNING_WALLET);
+ A(A.ENUM.CREATED_LIGHTNING_WALLET);
+ await w.generate();
+ BlueApp.wallets.push(w);
+ await BlueApp.saveToDisk();
+ EV(EV.enum.WALLETS_COUNT_CHANGED);
+ A(A.ENUM.CREATED_WALLET);
+ ReactNativeHapticFeedback.trigger('notificationSuccess', { ignoreAndroidSystemSettings: false });
+ this.props.navigation.navigate('PleaseBackupLNDHub', {
+ wallet: w,
+ });
+ };
+ this.createLightningWallet();
+ } else if (this.state.selectedIndex === 2) {
+ // zero index radio - HD segwit
+ w = new HDSegwitP2SHWallet();
+ w.setLabel(this.state.label || loc.wallets.details.title);
+ } else if (this.state.selectedIndex === 1) {
+ // btc was selected
+ // index 1 radio - segwit single address
+ w = new SegwitP2SHWallet();
+ w.setLabel(this.state.label || loc.wallets.details.title);
+ } else {
+ // btc was selected
+ // index 2 radio - hd bip84
+ w = new HDSegwitBech32Wallet();
+ w.setLabel(this.state.label || loc.wallets.details.title);
+ }
+ if (this.state.activeBitcoin) {
await w.generate();
BlueApp.wallets.push(w);
await BlueApp.saveToDisk();
EV(EV.enum.WALLETS_COUNT_CHANGED);
A(A.ENUM.CREATED_WALLET);
ReactNativeHapticFeedback.trigger('notificationSuccess', { ignoreAndroidSystemSettings: false });
- this.props.navigation.navigate('PleaseBackupLNDHub', {
- wallet: w,
- });
- };
- this.createLightningWallet();
- } else if (this.state.selectedIndex === 2) {
- // zero index radio - HD segwit
- w = new HDSegwitP2SHWallet();
- w.setLabel(this.state.label || loc.wallets.details.title);
- } else if (this.state.selectedIndex === 1) {
- // btc was selected
- // index 1 radio - segwit single address
- w = new SegwitP2SHWallet();
- w.setLabel(this.state.label || loc.wallets.details.title);
- } else {
- // btc was selected
- // index 2 radio - hd bip84
- w = new HDSegwitBech32Wallet();
- w.setLabel(this.state.label || loc.wallets.details.title);
- }
- if (this.state.activeBitcoin) {
- await w.generate();
- BlueApp.wallets.push(w);
- await BlueApp.saveToDisk();
- EV(EV.enum.WALLETS_COUNT_CHANGED);
- A(A.ENUM.CREATED_WALLET);
- ReactNativeHapticFeedback.trigger('notificationSuccess', { ignoreAndroidSystemSettings: false });
- if (w.type === HDSegwitP2SHWallet.type || w.type === HDSegwitBech32Wallet.type) {
- this.props.navigation.navigate('PleaseBackup', {
- secret: w.getSecret(),
- });
- } else {
- this.props.navigation.dismiss();
+ if (w.type === HDSegwitP2SHWallet.type || w.type === HDSegwitBech32Wallet.type) {
+ this.props.navigation.navigate('PleaseBackup', {
+ secret: w.getSecret(),
+ });
+ } else {
+ this.props.navigation.dismiss();
+ }
}
- }
- });
- }}
- />
- ) : (
-
- )}
+ });
+ }}
+ />
+ ) : (
+
+ )}
+
+ {
+ this.props.navigation.navigate('ImportWallet');
+ }}
+ />
-
- {
- this.props.navigation.navigate('ImportWallet');
- }}
- />
-
-
+
+
);
}