From 58ec9444a55cacdd204d1039e6748ad329ece457 Mon Sep 17 00:00:00 2001 From: softsimon Date: Sun, 2 Aug 2020 19:20:38 +0700 Subject: [PATCH] Change detection refactoring. --- .../bisq-blocks/bisq-blocks.component.html | 11 ++++--- .../bisq/bisq-blocks/bisq-blocks.component.ts | 29 +++++++----------- .../bisq-transactions.component.html | 9 ++++-- .../bisq-transactions.component.ts | 30 +++++++------------ .../master-page/master-page.component.ts | 1 - .../app/components/start/start.component.ts | 1 - 6 files changed, 34 insertions(+), 47 deletions(-) diff --git a/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.html b/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.html index 48deff2da..c38860562 100644 --- a/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.html +++ b/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.html @@ -4,6 +4,8 @@
+ +
@@ -12,8 +14,8 @@ - - + + @@ -25,12 +27,13 @@
- + + - + diff --git a/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.ts b/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.ts index 2c1631de7..4f6727336 100644 --- a/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.ts +++ b/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.ts @@ -1,18 +1,18 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { BisqApiService } from '../bisq-api.service'; -import { switchMap, tap } from 'rxjs/operators'; -import { Subject } from 'rxjs'; +import { switchMap, map } from 'rxjs/operators'; +import { Subject, Observable, of, merge } from 'rxjs'; import { BisqBlock, BisqOutput, BisqTransaction } from '../bisq.interfaces'; import { SeoService } from 'src/app/services/seo.service'; @Component({ selector: 'app-bisq-blocks', templateUrl: './bisq-blocks.component.html', - styleUrls: ['./bisq-blocks.component.scss'] + styleUrls: ['./bisq-blocks.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class BisqBlocksComponent implements OnInit { - blocks: BisqBlock[]; - totalCount: number; + blocks$: Observable<[BisqBlock[], number]>; page = 1; itemsPerPage: number; contentSpace = window.innerHeight - (165 + 75); @@ -39,20 +39,11 @@ export class BisqBlocksComponent implements OnInit { this.paginationMaxSize = 3; } - this.pageSubject$ + this.blocks$ = merge(of(1), this.pageSubject$) .pipe( - tap(() => this.isLoading = true), - switchMap((page) => this.bisqApiService.listBlocks$((page - 1) * this.itemsPerPage, this.itemsPerPage)) - ) - .subscribe((response) => { - this.isLoading = false; - this.blocks = response.body; - this.totalCount = parseInt(response.headers.get('x-total-count'), 10); - }, (error) => { - console.log(error); - }); - - this.pageSubject$.next(1); + switchMap((page) => this.bisqApiService.listBlocks$((page - 1) * this.itemsPerPage, this.itemsPerPage)), + map((response) => [response.body, parseInt(response.headers.get('x-total-count'), 10)]), + ); } calculateTotalOutput(block: BisqBlock): number { diff --git a/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.html b/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.html index f57a38977..19332fa3b 100644 --- a/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.html +++ b/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.html @@ -60,6 +60,8 @@
+ +
Total Sent Transactions
{{ block.height }} ago {{ calculateTotalOutput(block) / 100 | number: '1.2-2' }} BSQ
@@ -68,8 +70,8 @@ - - + +
TransactionConfirmed Height
{{ tx.id | slice : 0 : 8 }} @@ -92,8 +94,9 @@
- + + diff --git a/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.ts b/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.ts index 17f55c60c..186525c71 100644 --- a/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.ts +++ b/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.ts @@ -1,7 +1,7 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { BisqTransaction, BisqOutput } from '../bisq.interfaces'; -import { Subject, merge } from 'rxjs'; -import { switchMap, tap, map } from 'rxjs/operators'; +import { Subject, merge, Observable, of } from 'rxjs'; +import { switchMap, map } from 'rxjs/operators'; import { BisqApiService } from '../bisq-api.service'; import { SeoService } from 'src/app/services/seo.service'; import { FormGroup, FormBuilder } from '@angular/forms'; @@ -9,11 +9,11 @@ import { FormGroup, FormBuilder } from '@angular/forms'; @Component({ selector: 'app-bisq-transactions', templateUrl: './bisq-transactions.component.html', - styleUrls: ['./bisq-transactions.component.scss'] + styleUrls: ['./bisq-transactions.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class BisqTransactionsComponent implements OnInit { - transactions: BisqTransaction[]; - totalCount: number; + transactions$: Observable<[BisqTransaction[], number]>; page = 1; itemsPerPage: number; contentSpace = window.innerHeight - (165 + 75); @@ -62,7 +62,8 @@ export class BisqTransactionsComponent implements OnInit { this.paginationMaxSize = 3; } - merge( + this.transactions$ = merge( + of(1), this.pageSubject$, this.radioGroupForm.valueChanges .pipe( @@ -79,18 +80,9 @@ export class BisqTransactionsComponent implements OnInit { ) ) .pipe( - tap(() => this.isLoading = true), - switchMap((page) => this.bisqApiService.listTransactions$((page - 1) * this.itemsPerPage, this.itemsPerPage, this.types)) - ) - .subscribe((response) => { - this.isLoading = false; - this.transactions = response.body; - this.totalCount = parseInt(response.headers.get('x-total-count'), 10); - }, (error) => { - console.log(error); - }); - - this.pageSubject$.next(1); + switchMap((page) => this.bisqApiService.listTransactions$((page - 1) * this.itemsPerPage, this.itemsPerPage, this.types)), + map((response) => [response.body, parseInt(response.headers.get('x-total-count'), 10)]) + ); } pageChange(page: number) { diff --git a/frontend/src/app/components/master-page/master-page.component.ts b/frontend/src/app/components/master-page/master-page.component.ts index 325d302f2..3085031c9 100644 --- a/frontend/src/app/components/master-page/master-page.component.ts +++ b/frontend/src/app/components/master-page/master-page.component.ts @@ -7,7 +7,6 @@ import { Observable, merge, of } from 'rxjs'; selector: 'app-master-page', templateUrl: './master-page.component.html', styleUrls: ['./master-page.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush }) export class MasterPageComponent implements OnInit { env = env; diff --git a/frontend/src/app/components/start/start.component.ts b/frontend/src/app/components/start/start.component.ts index 3528d99de..e1763ed92 100644 --- a/frontend/src/app/components/start/start.component.ts +++ b/frontend/src/app/components/start/start.component.ts @@ -5,7 +5,6 @@ import { WebsocketService } from 'src/app/services/websocket.service'; selector: 'app-start', templateUrl: './start.component.html', styleUrls: ['./start.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush }) export class StartComponent implements OnInit { constructor(