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": { "expo": {
"sdkVersion": "30.0.0", "sdkVersion": "30.0.0",
"version": "3.1.0", "version": "3.1.1",
"privacy": "public", "privacy": "public",
"platforms": [ "platforms": [
"ios" "ios"
], ],
"ios": { "ios": {
"buildNumber": "103", "buildNumber": "104",
"supportsTablet": true, "supportsTablet": true,
"bundleIdentifier": "io.bluewallet.bluewallet", "bundleIdentifier": "io.bluewallet.bluewallet",
"infoPlist": { "infoPlist": {

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

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

2
package.json

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

8
screen/send/create.js

@ -1,13 +1,9 @@
/* global alert */
import React, { Component } from 'react'; 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 { 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'; import PropTypes from 'prop-types';
/** @type {AppStorage} */
// let BlueApp = require('../../BlueApp');
let loc = require('../../loc'); let loc = require('../../loc');
let EV = require('../../events');
export default class SendCreate extends Component { export default class SendCreate extends Component {
constructor(props) { constructor(props) {

21
screen/send/details.js

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

Loading…
Cancel
Save