From 055a76e7ba11b0d4989297aa676af11b6486d02b Mon Sep 17 00:00:00 2001 From: Darren Nelsen Date: Thu, 22 Mar 2018 16:55:32 -0400 Subject: [PATCH] Added cli generated broadcast-tx page --- app/package-lock.json | 118 ++++++------------ app/package.json | 2 +- app/src/app/app.module.ts | 3 +- app/src/pages/broadcast-tx/broadcast-tx.html | 33 +++++ .../pages/broadcast-tx/broadcast-tx.module.ts | 16 +++ app/src/pages/broadcast-tx/broadcast-tx.scss | 3 + app/src/pages/broadcast-tx/broadcast-tx.ts | 63 ++++++++++ app/src/pages/index.ts | 2 +- app/src/pages/pages.module.ts | 4 +- 9 files changed, 160 insertions(+), 84 deletions(-) create mode 100644 app/src/pages/broadcast-tx/broadcast-tx.html create mode 100644 app/src/pages/broadcast-tx/broadcast-tx.module.ts create mode 100644 app/src/pages/broadcast-tx/broadcast-tx.scss create mode 100644 app/src/pages/broadcast-tx/broadcast-tx.ts diff --git a/app/package-lock.json b/app/package-lock.json index 922d889..345b80e 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -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", diff --git a/app/package.json b/app/package.json index 7cbe5da..10c8aad 100644 --- a/app/package.json +++ b/app/package.json @@ -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", diff --git a/app/src/app/app.module.ts b/app/src/app/app.module.ts index 7d0c351..f3b2050 100644 --- a/app/src/app/app.module.ts +++ b/app/src/app/app.module.ts @@ -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 ], diff --git a/app/src/pages/broadcast-tx/broadcast-tx.html b/app/src/pages/broadcast-tx/broadcast-tx.html new file mode 100644 index 0000000..005f5ed --- /dev/null +++ b/app/src/pages/broadcast-tx/broadcast-tx.html @@ -0,0 +1,33 @@ + + + + {{title}} + + + + +
+
+ + +

This form can be used to broadcast a raw transaction in hex format over the Bitcoin network.

+
+ + + Raw transaction data + + + + +

Raw transaction data must be a valid hexadecimal string.

+
+ + + + +
+
+
+
diff --git a/app/src/pages/broadcast-tx/broadcast-tx.module.ts b/app/src/pages/broadcast-tx/broadcast-tx.module.ts new file mode 100644 index 0000000..d330c98 --- /dev/null +++ b/app/src/pages/broadcast-tx/broadcast-tx.module.ts @@ -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 {} diff --git a/app/src/pages/broadcast-tx/broadcast-tx.scss b/app/src/pages/broadcast-tx/broadcast-tx.scss new file mode 100644 index 0000000..4531e28 --- /dev/null +++ b/app/src/pages/broadcast-tx/broadcast-tx.scss @@ -0,0 +1,3 @@ +page-broadcast-tx { + +} diff --git a/app/src/pages/broadcast-tx/broadcast-tx.ts b/app/src/pages/broadcast-tx/broadcast-tx.ts new file mode 100644 index 0000000..984863f --- /dev/null +++ b/app/src/pages/broadcast-tx/broadcast-tx.ts @@ -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?)" + } + }); + */ + } +} diff --git a/app/src/pages/index.ts b/app/src/pages/index.ts index 67a109d..d15516e 100644 --- a/app/src/pages/index.ts +++ b/app/src/pages/index.ts @@ -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'; diff --git a/app/src/pages/pages.module.ts b/app/src/pages/pages.module.ts index 6156b14..25bc562 100644 --- a/app/src/pages/pages.module.ts +++ b/app/src/pages/pages.module.ts @@ -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