diff --git a/BlueComponents.js b/BlueComponents.js index 169fa783b..75b248433 100644 --- a/BlueComponents.js +++ b/BlueComponents.js @@ -2076,7 +2076,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} /> 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 { { - 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,