diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml index 5411e9a66..694eccb5a 100644 --- a/.github/workflows/automerge.yml +++ b/.github/workflows/automerge.yml @@ -27,8 +27,4 @@ jobs: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" MERGE_LABELS: "!work in progress,!WIP,!DO NOT MERGE" MERGE_FORKS: false - MERGE_RETRIES: 10 - MERGE_RETRY_SLEEP: 1800000 MERGE_DELETE_BRANCH: true - UPDATE_RETRIES: 10 - UPDATE_RETRY_SLEEP: 1800000 diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ead9f4fb9..32f512c44 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -251,13 +251,13 @@ PODS: - React - react-native-blur (0.8.0): - React - - react-native-camera (3.39.1): + - react-native-camera (3.40.0): - React-Core - - react-native-camera/RCT (= 3.39.1) - - react-native-camera/RN (= 3.39.1) - - react-native-camera/RCT (3.39.1): + - react-native-camera/RCT (= 3.40.0) + - react-native-camera/RN (= 3.40.0) + - react-native-camera/RCT (3.40.0): - React-Core - - react-native-camera/RN (3.39.1): + - react-native-camera/RN (3.40.0): - React-Core - react-native-document-picker (3.5.4): - React @@ -679,7 +679,7 @@ SPEC CHECKSUMS: React-jsinspector: 8e68ffbfe23880d3ee9bafa8be2777f60b25cbe2 react-native-blue-crypto: 23f1558ad3d38d7a2edb7e2f6ed1bc520ed93e56 react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c - react-native-camera: fc1296181b2d393ea698164869070c96d8625129 + react-native-camera: 5c1fbfecf63b802b8ca4a71c60d30a71550fb348 react-native-document-picker: c5752781fbc0c126c627c1549b037c139444a4cf react-native-fingerprint-scanner: c68136ca57e3704d7bdf5faa554ea535ce15b1d0 react-native-geolocation: cbd9d6bd06bac411eed2671810f454d4908484a8 diff --git a/loc/de_de.json b/loc/de_de.json index 622db9e31..a70b788e2 100644 --- a/loc/de_de.json +++ b/loc/de_de.json @@ -295,6 +295,8 @@ "cpfp_exp": "Wir werden eine andere Transaktion erzeugen, welche deine unbestätigte Transaktion ausgibt. Die gesamten Kosten werden höher als bei der ursprünglichen Transaktion sein, daher sollte sie schneller gemined werden. Dies wird CPFP genannt - Child Pays For Parent.", "cpfp_no_bump": "Keine TRX-Gebührenerhöhung möglich", "cpfp_title": "TRX-Gebühr erhöhen (CPFP)", + "details_balance_hide": "Guthaben verbergen", + "details_balance_show": "Guthaben zeigen", "details_block": "Blockhöhe", "details_copy": "Kopieren", "details_from": "Eingehend", diff --git a/package-lock.json b/package-lock.json index 3ff9e11e7..732cbe945 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5832,18 +5832,18 @@ "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" }, "@types/react": { - "version": "16.9.49", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.49.tgz", - "integrity": "sha512-DtLFjSj0OYAdVLBbyjhuV9CdGVHCkHn2R+xr3XkBvK2rS1Y1tkc14XSGjYgm5Fjjr90AxH9tiSzc1pCFMGO06g==", + "version": "16.9.53", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.53.tgz", + "integrity": "sha512-4nW60Sd4L7+WMXH1D6jCdVftuW7j4Za6zdp6tJ33Rqv0nk1ZAmQKML9ZLD4H0dehA3FZxXR/GM8gXplf82oNGw==", "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "@types/react-native": { - "version": "0.63.19", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.63.19.tgz", - "integrity": "sha512-iUcejWDCw5gBIezDtSWBpkbB3piIMZau7FAfQqhObCJpCm/7QgVof/aKIP0fCkADYz/qGmIZATMX8kjAS7TVbw==", + "version": "0.63.30", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.63.30.tgz", + "integrity": "sha512-8/PrOjuUaPTCfMeW12ubseZPUGdbRhxYDa/aT+0D0KWVTe60b4H/gJrcfJmBXC6EcCFcimuTzQCv8/S03slYqA==", "requires": { "@types/react": "*" } @@ -7073,9 +7073,9 @@ "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=" }, "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" }, "binary-extensions": { "version": "1.13.1", @@ -7101,9 +7101,9 @@ } }, "bip32": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz", - "integrity": "sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", + "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", "requires": { "@types/node": "10.12.18", "bs58check": "^2.1.1", @@ -8217,9 +8217,9 @@ } }, "csstype": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.3.tgz", - "integrity": "sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.4.tgz", + "integrity": "sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA==" }, "dashdash": { "version": "1.14.1", @@ -18024,9 +18024,9 @@ "from": "git+https://github.com/BlueWallet/react-native-document-picker.git#3684d4fcc2bc0b47c32be39024e4796004c3e428" }, "react-native-elements": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/react-native-elements/-/react-native-elements-2.3.1.tgz", - "integrity": "sha512-eoEXVbBIvxqh+xuOEyu6EOZTOgBpNEgrZkB39TjApOFiH4fCTyYV9uFZ3nwBsuIpL5H0C3JiVh7MW4jfBkND/g==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/react-native-elements/-/react-native-elements-2.3.2.tgz", + "integrity": "sha512-HygYYmq8JYjk/YYiUwr/64qT64H2xlPBz0JnkGTQwvnnyXZrfkHFopw8rLWCupv3iLLPDzVohvPs0Z5HLdonSQ==", "requires": { "@types/react-native-vector-icons": "^6.4.5", "color": "^3.1.0", diff --git a/package.json b/package.json index d73be376e..34bf7d300 100644 --- a/package.json +++ b/package.json @@ -83,9 +83,9 @@ "bc-bech32": "file:blue_modules/bc-bech32", "bc-ur": "file:blue_modules/bc-ur", "bech32": "1.1.4", - "bignumber.js": "9.0.0", + "bignumber.js": "9.0.1", "bip21": "2.0.3", - "bip32": "2.0.5", + "bip32": "2.0.6", "bip39": "2.6.0", "bitcoinjs-lib": "5.2.0", "bolt11": "1.2.7", @@ -123,7 +123,7 @@ "react-native-default-preference": "1.4.3", "react-native-device-info": "6.2.0", "react-native-document-picker": "git+https://github.com/BlueWallet/react-native-document-picker.git#3684d4fcc2bc0b47c32be39024e4796004c3e428", - "react-native-elements": "2.3.1", + "react-native-elements": "2.3.2", "react-native-fingerprint-scanner": "git+https://github.com/BlueWallet/react-native-fingerprint-scanner.git#ce644673681716335d786727bab998f7e632ab5e", "react-native-fs": "2.16.6", "react-native-gesture-handler": "1.8.0", diff --git a/screen/settings/electrumSettings.js b/screen/settings/electrumSettings.js index 6452792f4..f9f9ac46d 100644 --- a/screen/settings/electrumSettings.js +++ b/screen/settings/electrumSettings.js @@ -4,77 +4,21 @@ import { View, TextInput, StyleSheet } from 'react-native'; import { AppStorage } from '../../class'; import AsyncStorage from '@react-native-community/async-storage'; import { ScrollView } from 'react-native-gesture-handler'; -import { BlueLoading, BlueSpacing20, BlueButton, SafeBlueArea, BlueCard, BlueText, BlueNavigationStyle } from '../../BlueComponents'; +import { + BlueLoading, + BlueSpacing20, + BlueButton, + SafeBlueArea, + BlueCard, + BlueText, + BlueNavigationStyle, + BlueButtonLink, +} from '../../BlueComponents'; import { BlueCurrentTheme } from '../../components/themes'; +import PropTypes from 'prop-types'; import loc from '../../loc'; const BlueElectrum = require('../../blue_modules/BlueElectrum'); -const styles = StyleSheet.create({ - root: { - flex: 1, - }, - status: { - textAlign: 'center', - color: BlueCurrentTheme.colors.feeText, - marginBottom: 4, - }, - connectWrap: { - width: 'auto', - height: 34, - flexWrap: 'wrap', - justifyContent: 'center', - flexDirection: 'row', - }, - container: { - paddingTop: 6, - paddingBottom: 6, - paddingLeft: 16, - paddingRight: 16, - borderRadius: 20, - }, - containerConnected: { - backgroundColor: BlueCurrentTheme.colors.feeLabel, - }, - containerDisconnected: { - backgroundColor: '#F8D2D2', - }, - textConnected: { - color: BlueCurrentTheme.colors.feeValue, - fontWeight: 'bold', - }, - textDisconnected: { - color: '#D0021B', - fontWeight: 'bold', - }, - hostname: { - textAlign: 'center', - color: BlueCurrentTheme.colors.foregroundColor, - }, - explain: { - color: BlueCurrentTheme.colors.feeText, - marginBottom: -24, - }, - inputWrap: { - flexDirection: 'row', - borderColor: BlueCurrentTheme.colors.formBorder, - borderBottomColor: BlueCurrentTheme.colors.formBorder, - borderWidth: 1, - borderBottomWidth: 0.5, - backgroundColor: BlueCurrentTheme.colors.inputBackgroundColor, - minHeight: 44, - height: 44, - alignItems: 'center', - borderRadius: 4, - }, - inputText: { - flex: 1, - marginHorizontal: 8, - minHeight: 36, - color: '#81868e', - height: 36, - }, -}); - export default class ElectrumSettings extends Component { constructor(props) { super(props); @@ -147,6 +91,23 @@ export default class ElectrumSettings extends Component { }); }; + onBarScanned = value => { + var [host, port, type] = value.split(':'); + this.setState({ host: host }); + type === 's' ? this.setState({ sslPort: port }) : this.setState({ port: port }); + }; + + importScan = () => { + this.props.navigation.navigate('ScanQRCodeRoot', { + screen: 'ScanQRCode', + params: { + launchedBy: this.props.route.name, + onBarScanned: this.onBarScanned, + showFileImportButton: true, + }, + }); + }; + render() { return ( @@ -211,7 +172,8 @@ export default class ElectrumSettings extends Component { underlineColorAndroid="transparent" /> - + + {this.state.isLoading ? : } @@ -221,7 +183,83 @@ export default class ElectrumSettings extends Component { } } +ElectrumSettings.propTypes = { + navigation: PropTypes.shape({ + navigate: PropTypes.func, + goBack: PropTypes.func, + }), + route: PropTypes.shape({ + name: PropTypes.string, + }), +}; + ElectrumSettings.navigationOptions = () => ({ ...BlueNavigationStyle(), title: loc.settings.electrum_settings, }); + +const styles = StyleSheet.create({ + root: { + flex: 1, + }, + status: { + textAlign: 'center', + color: BlueCurrentTheme.colors.feeText, + marginBottom: 4, + }, + connectWrap: { + width: 'auto', + height: 34, + flexWrap: 'wrap', + justifyContent: 'center', + flexDirection: 'row', + }, + container: { + paddingTop: 6, + paddingBottom: 6, + paddingLeft: 16, + paddingRight: 16, + borderRadius: 20, + }, + containerConnected: { + backgroundColor: BlueCurrentTheme.colors.feeLabel, + }, + containerDisconnected: { + backgroundColor: '#F8D2D2', + }, + textConnected: { + color: BlueCurrentTheme.colors.feeValue, + fontWeight: 'bold', + }, + textDisconnected: { + color: '#D0021B', + fontWeight: 'bold', + }, + hostname: { + textAlign: 'center', + color: BlueCurrentTheme.colors.foregroundColor, + }, + explain: { + color: BlueCurrentTheme.colors.feeText, + marginBottom: -24, + }, + inputWrap: { + flexDirection: 'row', + borderColor: BlueCurrentTheme.colors.formBorder, + borderBottomColor: BlueCurrentTheme.colors.formBorder, + borderWidth: 1, + borderBottomWidth: 0.5, + backgroundColor: BlueCurrentTheme.colors.inputBackgroundColor, + minHeight: 44, + height: 44, + alignItems: 'center', + borderRadius: 4, + }, + inputText: { + flex: 1, + marginHorizontal: 8, + minHeight: 36, + color: '#81868e', + height: 36, + }, +}); diff --git a/screen/settings/lightningSettings.js b/screen/settings/lightningSettings.js index 4f7c8bce9..e62cd07a8 100644 --- a/screen/settings/lightningSettings.js +++ b/screen/settings/lightningSettings.js @@ -2,8 +2,7 @@ import React, { useState, useEffect, useCallback } from 'react'; import { View, TextInput, Linking, StyleSheet } from 'react-native'; import { Button } from 'react-native-elements'; -import { useTheme } from '@react-navigation/native'; - +import { useTheme, useNavigation, useRoute } from '@react-navigation/native'; import { AppStorage } from '../../class'; import AsyncStorage from '@react-native-community/async-storage'; import { @@ -14,6 +13,7 @@ import { BlueNavigationStyle, BlueLoadingHook, BlueTextHooks, + BlueButtonLink, } from '../../BlueComponents'; import { LightningCustodianWallet } from '../../class/wallets/lightning-custodian-wallet'; import loc from '../../loc'; @@ -51,6 +51,8 @@ const LightningSettings = () => { const [isLoading, setIsLoading] = useState(true); const [URI, setURI] = useState(); const { colors } = useTheme(); + const route = useRoute(); + const navigation = useNavigation(); useEffect(() => { AsyncStorage.getItem(AppStorage.LNDHUB) @@ -79,6 +81,18 @@ const LightningSettings = () => { setIsLoading(false); }, [URI]); + const importScan = () => { + navigation.navigate('ScanQRCodeRoot', { + screen: 'ScanQRCode', + params: { + launchedBy: route.name, + onBarScanned: setLndhubURI, + showFileImportButton: true, + }, + }); + }; + + return ( @@ -115,6 +129,7 @@ const LightningSettings = () => { /> + {isLoading ? : } diff --git a/screen/wallets/buyBitcoin.js b/screen/wallets/buyBitcoin.js index 41d1549ee..5fbd85416 100644 --- a/screen/wallets/buyBitcoin.js +++ b/screen/wallets/buyBitcoin.js @@ -116,8 +116,7 @@ BuyBitcoin.navigate = async wallet => { if (Platform.OS === 'ios') { InAppBrowser.isAvailable() .then(_value => { - InAppBrowser.close(); - InAppBrowser.open(uri, { dismissButtonStyle: 'done' }); + InAppBrowser.open(uri, { dismissButtonStyle: 'done', modalEnabled: true, animated: true }); }) .catch(error => { console.log(error); diff --git a/screen/wallets/transactions.js b/screen/wallets/transactions.js index 5db766538..f938cdd45 100644 --- a/screen/wallets/transactions.js +++ b/screen/wallets/transactions.js @@ -339,7 +339,7 @@ const WalletTransactions = () => { wallet.current.getBalance() > 0 ? ( { - Linking.openURL('https://bluewallet.current.io/marketplace/'); + Linking.openURL('https://bluewallet.io/marketplace/'); }} style={[styles.marketplaceButton1, stylesHook.marketplaceButton1]} >