mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2024-11-19 09:50:15 +01:00
Merge branch 'master' into filepicker
This commit is contained in:
commit
79a0512664
@ -2082,7 +2082,7 @@ export class BlueAddressInput extends Component {
|
||||
value={this.props.address}
|
||||
style={{ flex: 1, marginHorizontal: 8, minHeight: 33 }}
|
||||
editable={!this.props.isLoading}
|
||||
onSubmitEditing={() => Keyboard.dismiss()}
|
||||
onSubmitEditing={Keyboard.dismiss}
|
||||
{...this.props}
|
||||
/>
|
||||
<TouchableOpacity
|
||||
|
@ -119,7 +119,7 @@ android {
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 1
|
||||
versionName "4.9.3"
|
||||
versionName "4.9.4"
|
||||
multiDexEnabled true
|
||||
missingDimensionStrategy 'react-native-camera', 'general'
|
||||
}
|
||||
|
@ -55,7 +55,6 @@ class DeeplinkSchemaMatch {
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
console.warn(isBothBitcoinAndLightning)
|
||||
if (isBothBitcoinAndLightning) {
|
||||
completionHandler({
|
||||
routeName: 'HandleOffchainAndOnChain',
|
||||
|
@ -48,7 +48,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.9.3</string>
|
||||
<string>4.9.4</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.9.3</string>
|
||||
<string>4.9.4</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>239</string>
|
||||
<key>CLKComplicationPrincipalClass</key>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.9.3</string>
|
||||
<string>4.9.4</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>239</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.9.3</string>
|
||||
<string>4.9.4</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSExtension</key>
|
||||
|
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "BlueWallet",
|
||||
"version": "4.9.3",
|
||||
"version": "4.9.4",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "BlueWallet",
|
||||
"version": "4.9.3",
|
||||
"version": "4.9.4",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.5.0",
|
||||
"@babel/runtime": "^7.5.1",
|
||||
|
@ -80,10 +80,51 @@ export default class ScanLndInvoice extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (this.props.navigation.state.params.uri) {
|
||||
this.processTextForInvoice(this.props.navigation.getParam('uri'));
|
||||
static getDerivedStateFromProps(props, state) {
|
||||
if (props.navigation.state.params.uri) {
|
||||
let data = props.navigation.state.params.uri;
|
||||
// handling BIP21 w/BOLT11 support
|
||||
let ind = data.indexOf('lightning=');
|
||||
if (ind !== -1) {
|
||||
data = data.substring(ind + 10).split('&')[0];
|
||||
}
|
||||
|
||||
data = data.replace('LIGHTNING:', '').replace('lightning:', '');
|
||||
console.log(data);
|
||||
|
||||
/**
|
||||
* @type {LightningCustodianWallet}
|
||||
*/
|
||||
let w = state.fromWallet;
|
||||
let decoded;
|
||||
try {
|
||||
decoded = w.decodeInvoice(data);
|
||||
|
||||
let expiresIn = (decoded.timestamp * 1 + decoded.expiry * 1) * 1000; // ms
|
||||
if (+new Date() > expiresIn) {
|
||||
expiresIn = 'expired';
|
||||
} else {
|
||||
expiresIn = Math.round((expiresIn - +new Date()) / (60 * 1000)) + ' min';
|
||||
}
|
||||
Keyboard.dismiss();
|
||||
props.navigation.setParams({ uri: undefined });
|
||||
return {
|
||||
invoice: data,
|
||||
decoded,
|
||||
expiresIn,
|
||||
destination: data,
|
||||
isAmountInitiallyEmpty: decoded.num_satoshis === '0',
|
||||
isLoading: false,
|
||||
};
|
||||
} catch (Err) {
|
||||
ReactNativeHapticFeedback.trigger('notificationError', { ignoreAndroidSystemSettings: false });
|
||||
Keyboard.dismiss();
|
||||
props.navigation.setParams({ uri: undefined });
|
||||
setTimeout(() => alert(Err.message), 10);
|
||||
return { ...state, isLoading: false };
|
||||
}
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
@ -100,52 +141,7 @@ export default class ScanLndInvoice extends React.Component {
|
||||
};
|
||||
|
||||
processInvoice = data => {
|
||||
this.setState({ isLoading: true }, async () => {
|
||||
if (!this.state.fromWallet) {
|
||||
ReactNativeHapticFeedback.trigger('notificationError', { ignoreAndroidSystemSettings: false });
|
||||
alert('Before paying a Lightning invoice, you must first add a Lightning wallet.');
|
||||
return this.props.navigation.goBack();
|
||||
}
|
||||
|
||||
// handling BIP21 w/BOLT11 support
|
||||
let ind = data.indexOf('lightning=');
|
||||
if (ind !== -1) {
|
||||
data = data.substring(ind + 10).split('&')[0];
|
||||
}
|
||||
|
||||
data = data.replace('LIGHTNING:', '').replace('lightning:', '');
|
||||
console.log(data);
|
||||
|
||||
/**
|
||||
* @type {LightningCustodianWallet}
|
||||
*/
|
||||
let w = this.state.fromWallet;
|
||||
let decoded;
|
||||
try {
|
||||
decoded = w.decodeInvoice(data);
|
||||
|
||||
let expiresIn = (decoded.timestamp * 1 + decoded.expiry * 1) * 1000; // ms
|
||||
if (+new Date() > expiresIn) {
|
||||
expiresIn = 'expired';
|
||||
} else {
|
||||
expiresIn = Math.round((expiresIn - +new Date()) / (60 * 1000)) + ' min';
|
||||
}
|
||||
Keyboard.dismiss();
|
||||
this.setState({
|
||||
invoice: data,
|
||||
decoded,
|
||||
expiresIn,
|
||||
destination: data,
|
||||
isAmountInitiallyEmpty: decoded.num_satoshis === '0',
|
||||
isLoading: false,
|
||||
});
|
||||
} catch (Err) {
|
||||
Keyboard.dismiss();
|
||||
this.setState({ isLoading: false });
|
||||
ReactNativeHapticFeedback.trigger('notificationError', { ignoreAndroidSystemSettings: false });
|
||||
alert(Err.message);
|
||||
}
|
||||
});
|
||||
this.props.navigation.setParams({ uri: data });
|
||||
};
|
||||
|
||||
async pay() {
|
||||
@ -295,7 +291,7 @@ export default class ScanLndInvoice extends React.Component {
|
||||
<BlueCard>
|
||||
<BlueAddressInput
|
||||
onChangeText={text => {
|
||||
this.setState({ destination: text });
|
||||
text = text.trim();
|
||||
this.processTextForInvoice(text);
|
||||
}}
|
||||
onBarScanned={this.processInvoice}
|
||||
@ -355,6 +351,7 @@ ScanLndInvoice.propTypes = {
|
||||
navigate: PropTypes.func,
|
||||
pop: PropTypes.func,
|
||||
getParam: PropTypes.func,
|
||||
setParams: PropTypes.func,
|
||||
dismiss: PropTypes.func,
|
||||
state: PropTypes.shape({
|
||||
routeName: PropTypes.string,
|
||||
|
@ -93,7 +93,7 @@ const ScanQRCode = ({
|
||||
right: 16,
|
||||
top: 64,
|
||||
}}
|
||||
onPress={() => launchedBy ? navigate(launchedBy) : goBack(null) }
|
||||
onPress={() => (launchedBy ? navigate(launchedBy) : goBack(null))}
|
||||
>
|
||||
<Image style={{ alignSelf: 'center' }} source={require('../../img/close-white.png')} />
|
||||
</TouchableOpacity>
|
||||
|
@ -1,4 +1,3 @@
|
||||
/* global alert */
|
||||
import React, { Component } from 'react';
|
||||
import {
|
||||
View,
|
||||
@ -68,7 +67,7 @@ export default class WalletsList extends Component {
|
||||
console.log('fetch all wallet txs took', (end - start) / 1000, 'sec');
|
||||
} catch (error) {
|
||||
noErr = false;
|
||||
alert(error);
|
||||
console.log(error);
|
||||
}
|
||||
if (noErr) this.redrawScreen();
|
||||
});
|
||||
@ -111,7 +110,6 @@ export default class WalletsList extends Component {
|
||||
console.log('fetch tx took', (end - start) / 1000, 'sec');
|
||||
} catch (err) {
|
||||
noErr = false;
|
||||
alert(err);
|
||||
console.warn(err);
|
||||
}
|
||||
if (noErr) await BlueApp.saveToDisk(); // caching
|
||||
@ -262,7 +260,6 @@ export default class WalletsList extends Component {
|
||||
}
|
||||
} catch (Err) {
|
||||
noErr = false;
|
||||
alert(Err);
|
||||
console.warn(Err);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user