Added cli generated broadcast-tx page

This commit is contained in:
Darren Nelsen 2018-03-22 16:55:32 -04:00
parent 87b8319bf3
commit 055a76e7ba
9 changed files with 160 additions and 84 deletions

118
app/package-lock.json generated
View File

@ -663,9 +663,9 @@
}
},
"@ionic/cli-framework": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-0.1.2.tgz",
"integrity": "sha512-EEqcpkO7/uo4wt6d2cZHhWjO0yyD6HkEGsrl0ETbfUVJLR0NU3vDi9VvFM8K0NzHOaaHxCKzux+Y3+oJ7utZjA==",
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-0.1.3.tgz",
"integrity": "sha512-by5vosr5MXK5+yJMtRmBX9YjrcHTeelVLV5PsDv56zZR0aDMLP+1st5wvjKwAjlva660bIzx7yIax88hiV5KKA==",
"dev": true,
"requires": {
"chalk": "2.3.2",
@ -744,19 +744,19 @@
}
},
"@ionic/cli-utils": {
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.19.1.tgz",
"integrity": "sha512-GUUn33FIaiN+hJTFnalZa67fcFN64lwupS/7+F1iUV/jPZNVzwpPWOWXs5a6hnuJuyNQvI6tm0Sm+P0HvGto1Q==",
"version": "1.19.2",
"resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.19.2.tgz",
"integrity": "sha512-nTbF273k1tcr6CPL5ARZ10VbXMNwRuW5svg42JFBEfxdbbVyvIUep+m4ibqBoDCRAFoDi28b4GeFkC5wyyDqQA==",
"dev": true,
"requires": {
"@ionic/cli-framework": "0.1.2",
"@ionic/cli-framework": "0.1.3",
"@ionic/discover": "0.4.0",
"archiver": "2.1.1",
"basic-auth": "1.1.0",
"body-parser": "1.18.2",
"chalk": "2.3.2",
"chokidar": "1.7.0",
"ci-info": "1.1.2",
"ci-info": "1.1.3",
"cross-spawn": "5.1.0",
"dargs": "5.1.0",
"diff": "3.5.0",
@ -767,14 +767,14 @@
"leek": "0.0.24",
"lodash": "4.17.4",
"minimist": "1.2.0",
"opn": "5.2.0",
"opn": "5.3.0",
"os-name": "2.0.1",
"semver": "5.4.1",
"slice-ansi": "1.0.0",
"ssh-config": "1.1.3",
"string-width": "2.1.1",
"superagent": "3.8.2",
"tar": "4.4.0",
"tar": "4.4.1",
"tiny-lr": "1.1.1",
"tslib": "1.9.0",
"untildify": "3.0.2",
@ -783,12 +783,6 @@
"ws": "3.3.3"
},
"dependencies": {
"ansi-escapes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
"integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==",
"dev": true
},
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
@ -822,12 +816,6 @@
"type-is": "1.6.15"
}
},
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
"dev": true
},
"chalk": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
@ -883,38 +871,10 @@
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
"dev": true
},
"inquirer": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
"integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
"dev": true,
"requires": {
"ansi-escapes": "3.0.0",
"chalk": "2.3.2",
"cli-cursor": "2.1.0",
"cli-width": "2.1.0",
"external-editor": "2.0.4",
"figures": "2.0.0",
"lodash": "4.17.4",
"mute-stream": "0.0.7",
"run-async": "2.3.0",
"rx-lite": "4.0.8",
"rx-lite-aggregates": "4.0.8",
"string-width": "2.1.1",
"strip-ansi": "4.0.0",
"through": "2.3.8"
}
},
"livereload-js": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz",
"integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==",
"dev": true
},
"opn": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz",
"integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==",
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
"integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
"dev": true,
"requires": {
"is-wsl": "1.1.0"
@ -957,16 +917,17 @@
}
},
"tar": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.0.tgz",
"integrity": "sha512-gJlTiiErwo96K904FnoYWl+5+FBgS+FimU6GMh66XLdLa55al8+d4jeDfPoGwSNHdtWI5FJP6xurmVqhBuGJpQ==",
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz",
"integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
"dev": true,
"requires": {
"chownr": "1.0.1",
"fs-minipass": "1.2.5",
"minipass": "2.2.1",
"minipass": "2.2.4",
"minizlib": "1.1.0",
"mkdirp": "0.5.1",
"safe-buffer": "5.1.1",
"yallist": "3.0.2"
}
},
@ -2670,9 +2631,9 @@
"dev": true
},
"ci-info": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz",
"integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==",
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz",
"integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==",
"dev": true
},
"cipher-base": {
@ -4826,9 +4787,9 @@
}
},
"formidable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.0.tgz",
"integrity": "sha512-hr9aT30rAi7kf8Q2aaTpSP7xGMhlJ+MdrUDVZs3rxbD3L/K46A86s2VY7qC2D2kGYGBtiT/3j6wTx1eeUq5xAQ==",
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
"integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
"dev": true
},
"forwarded": {
@ -4877,7 +4838,7 @@
"integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
"dev": true,
"requires": {
"minipass": "2.2.1"
"minipass": "2.2.4"
}
},
"fs-readdir-recursive": {
@ -6722,15 +6683,15 @@
"dev": true
},
"ionic": {
"version": "3.19.1",
"resolved": "https://registry.npmjs.org/ionic/-/ionic-3.19.1.tgz",
"integrity": "sha512-U9flvol3qPaWGYkWouJGQJ3gzRflft5DmiOI8AKLjWMVhxU76O0VSZxKEdnfsNd02yGDcdwDPkhXh+LHobQLQw==",
"version": "3.20.0",
"resolved": "https://registry.npmjs.org/ionic/-/ionic-3.20.0.tgz",
"integrity": "sha512-yeLPusYOSyF+VmO+Hf2a5kf2Kx4ST1f3MILM8g+9ckF/MdaoD9UzXif2/sumGem6I6RTrqo9horBmC7QJYcClA==",
"dev": true,
"requires": {
"@ionic/cli-framework": "0.1.2",
"@ionic/cli-utils": "1.19.1",
"@ionic/cli-framework": "0.1.3",
"@ionic/cli-utils": "1.19.2",
"chalk": "2.3.2",
"opn": "5.2.0",
"opn": "5.3.0",
"semver": "5.4.1",
"tslib": "1.9.0"
},
@ -6762,9 +6723,9 @@
"dev": true
},
"opn": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz",
"integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==",
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
"integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
"dev": true,
"requires": {
"is-wsl": "1.1.0"
@ -8487,11 +8448,12 @@
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"minipass": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz",
"integrity": "sha512-u1aUllxPJUI07cOqzR7reGmQxmCqlH88uIIsf6XZFEWgw7gXKpJdR+5R9Y3KEDmWYkdIz9wXZs3C0jOPxejk/Q==",
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz",
"integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1",
"yallist": "3.0.2"
},
"dependencies": {
@ -8509,7 +8471,7 @@
"integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
"dev": true,
"requires": {
"minipass": "2.2.1"
"minipass": "2.2.4"
}
},
"mixin-deep": {
@ -12340,7 +12302,7 @@
"debug": "3.1.0",
"extend": "3.0.1",
"form-data": "2.3.2",
"formidable": "1.2.0",
"formidable": "1.2.1",
"methods": "1.1.2",
"mime": "1.6.0",
"qs": "6.5.1",

View File

@ -46,7 +46,7 @@
"@types/jasmine": "2.5.41",
"@types/node": "7.0.4",
"codecov": "2.2.0",
"ionic": "3.19.1",
"ionic": "3.20.0",
"jasmine-core": "2.5.2",
"jasmine-spec-reporter": "3.2.0",
"karma": "1.4.1",

View File

@ -5,7 +5,7 @@ import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { InsightApp } from './app.component';
import { PagesModule, HomePage, BlocksPage, BroadcastTxPage, NodeStatusPage, VerifyMessagePage } from '../pages';
import { PagesModule, HomePage, BlocksPage, NodeStatusPage, VerifyMessagePage } from '../pages';
import { BlocksService, StorageService } from '../services';
import { ApiProvider } from '../providers/api/api';
import { CurrencyProvider } from '../providers/currency/currency';
@ -26,7 +26,6 @@ import { BlocksProvider } from '../providers/blocks/blocks';
InsightApp,
HomePage,
BlocksPage,
BroadcastTxPage,
NodeStatusPage,
VerifyMessagePage
],

View File

@ -0,0 +1,33 @@
<ion-header>
<ion-navbar color="brand">
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>{{title}}</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<div class="page-content">
<form [formGroup]="txForm">
<ion-list>
<ion-item>
<p>This form can be used to broadcast a raw transaction in hex format over the Bitcoin network.</p>
</ion-item>
<ion-item>
<ion-label floating>Raw transaction data</ion-label>
<ion-input type="text" [(ngModel)]="transaction" formControlName="rawData"></ion-input>
</ion-item>
<ion-item *ngIf="!txForm.controls.rawData.valid">
<p>Raw transaction data must be a valid hexadecimal string.</p>
</ion-item>
<ion-item>
<button ion-button outline (click)="send()" [disabled]="!txForm.touched || !txForm.valid">Send transaction</button>
</ion-item>
</ion-list>
</form>
</div>
</ion-content>

View File

@ -0,0 +1,16 @@
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { BroadcastTxPage } from './broadcast-tx';
@NgModule({
declarations: [
BroadcastTxPage
],
imports: [
IonicPageModule.forChild(BroadcastTxPage)
],
exports: [
BroadcastTxPage
]
})
export class BroadcastTxPageModule {}

View File

@ -0,0 +1,3 @@
page-broadcast-tx {
}

View File

@ -0,0 +1,63 @@
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Http } from '@angular/http';
import { ApiProvider } from '../../providers/api/api';
/**
* Generated class for the BroadcastTxPage page.
*
* See http://ionicframework.com/docs/components/#navigation for more info
* on Ionic pages and navigation.
*/
@IonicPage()
@Component({
selector: 'page-broadcast-tx',
templateUrl: 'broadcast-tx.html'
})
export class BroadcastTxPage {
public title: string;
private nav: NavController;
public transaction: string;
public txForm: FormGroup;
private status: string;
// private txid: any;
constructor(public navCtrl: NavController, public navParams: NavParams, public formBuilder: FormBuilder, private http: Http, private api: ApiProvider) {
this.nav = navCtrl;
this.title = 'Broadcast Transaction';
this.txForm = formBuilder.group({
rawData: ['', Validators.pattern(/^[0-9A-Fa-f]+$/)]
});
}
public ionViewDidLoad(): void {
console.log('ionViewDidLoad BroadcastTxPage');
}
public send(): void {
let postData: any = {
rawtx: this.transaction
};
this.status = 'loading';
console.log('the postData is', postData);
this.http.post(this.api.apiPrefix + 'tx/send', postData)
.subscribe(
response => console.log('response', response),
err => console.log('err', err)
);
/*
.error(function(data, status, headers, config) {
$scope.status = 'error';
if(data) {
$scope.error = data;
} else {
$scope.error = "No error message given (connection error?)"
}
});
*/
}
}

View File

@ -1,6 +1,6 @@
export * from './broadcastTxPage/broadcastTxPage';
export * from './nodeStatusPage/nodeStatusPage';
export * from './verifyMessagePage/verifyMessagePage';
export * from './home/home';
export * from './blocks/blocks';
export * from './broadcast-tx/broadcast-tx';
export * from './pages.module';

View File

@ -2,12 +2,12 @@ import { NgModule } from '@angular/core';
import { IonicModule } from 'ionic-angular';
import { ComponentsModule } from '../components';
import { BlocksPageModule } from '../pages/blocks/blocks.module';
import { BroadcastTxPageModule } from './broadcast-tx/broadcast-tx.module';
import { HeadNavComponentModule } from '../components/head-nav/head-nav.module';
import { LatestTransactionsComponentModule } from '../components/latest-transactions/latest-transactions.module';
import { LatestBlocksComponentModule } from '../components/latest-blocks/latest-blocks.module';
import {
HomePage,
BroadcastTxPage,
NodeStatusPage,
VerifyMessagePage
} from './index';
@ -15,7 +15,6 @@ import {
@NgModule({
declarations: [
HomePage,
BroadcastTxPage,
NodeStatusPage,
VerifyMessagePage
],
@ -23,6 +22,7 @@ import {
IonicModule,
ComponentsModule,
BlocksPageModule,
BroadcastTxPageModule,
HeadNavComponentModule,
LatestTransactionsComponentModule,
LatestBlocksComponentModule