Browse Source

Validate address with bitcoin library

localNotifications
Marcos Rodriguez Vélez 6 years ago
parent
commit
5e8b66c686
  1. 4
      app.json
  2. 16
      fastlane/metadata/en-US/release_notes.txt
  3. 2
      package.json
  4. 8
      screen/send/create.js
  5. 21
      screen/send/details.js

4
app.json

@ -1,13 +1,13 @@
{
"expo": {
"sdkVersion": "30.0.0",
"version": "3.1.0",
"version": "3.1.1",
"privacy": "public",
"platforms": [
"ios"
],
"ios": {
"buildNumber": "103",
"buildNumber": "104",
"supportsTablet": true,
"bundleIdentifier": "io.bluewallet.bluewallet",
"infoPlist": {

16
fastlane/metadata/en-US/release_notes.txt

@ -1,9 +1,7 @@
* REL
* ADD: security alert
* REL
* ADD: You can now pay for a Lightning invoice by manually inserting the invoice ID
* REL
* ADD: better source of entropy for wallet creation
* REL
* Development (#103) ADD: New send screen
ADD: Support for BIP70 decoding
FIX: Improve broadcasting experience #66 (#107)
ADD: New transaction Confirm UI
REF: Improve broadcasting experience #66
FIX: Satoshis to local currency in Send screen
FIX: Fixed Wallet export QR code width
FIX: Invalid BIP21 URI at value #108
FIX: #109 TypeError: undefined is not an object (evaluating 'this.state.tx.inputs.length'

2
package.json

@ -1,6 +1,6 @@
{
"name": "BlueWallet",
"version": "3.1.0",
"version": "3.1.1",
"devDependencies": {
"babel-eslint": "^8.2.6",
"eslint": "^4.19.1",

8
screen/send/create.js

@ -1,13 +1,9 @@
/* global alert */
import React, { Component } from 'react';
import { TextInput, ActivityIndicator, TouchableOpacity, Clipboard, StyleSheet, ScrollView } from 'react-native';
import { TextInput, TouchableOpacity, Clipboard, StyleSheet, ScrollView } from 'react-native';
import { Text } from 'react-native-elements';
import { BlueButton, BlueHeaderDefaultSub, SafeBlueArea, BlueCard, BlueText } from '../../BlueComponents';
import { BlueHeaderDefaultSub, SafeBlueArea, BlueCard, BlueText } from '../../BlueComponents';
import PropTypes from 'prop-types';
/** @type {AppStorage} */
// let BlueApp = require('../../BlueApp');
let loc = require('../../loc');
let EV = require('../../events');
export default class SendCreate extends Component {
constructor(props) {

21
screen/send/details.js

@ -151,6 +151,7 @@ export default class SendDetails extends Component {
}
async createTransaction() {
this.setState({ isLoading: true });
let error = false;
let requestedSatPerByte = this.state.fee.toString().replace(/\D/g, '');
@ -174,7 +175,16 @@ export default class SendDetails extends Component {
console.log('validation error');
}
try {
bitcoin.address.toOutputScript(this.state.address);
} catch (err) {
console.log('validation error');
console.log(err);
error = loc.send.details.address_field_is_not_valid;
}
if (error) {
this.setState({ isLoading: false });
alert(error);
return;
}
@ -205,14 +215,7 @@ export default class SendDetails extends Component {
}
let startTime = Date.now();
try {
tx = this.state.fromWallet.createTx(utxo, this.state.amount, fee, this.state.address, this.state.memo);
} catch (error) {
console.log(error);
alert(loc.send.details.create_tx_error);
this.setState({ isLoading: false });
return;
}
tx = this.state.fromWallet.createTx(utxo, this.state.amount, fee, this.state.address, this.state.memo);
let endTime = Date.now();
console.log('create tx ', (endTime - startTime) / 1000, 'sec');
@ -246,7 +249,7 @@ export default class SendDetails extends Component {
await BlueApp.saveToDisk();
} catch (err) {
console.log(err);
alert(loc.send.details.create_tx_error);
alert(err);
this.setState({ isLoading: false });
return;
}

Loading…
Cancel
Save