Improved websocket tx/address tracking handling when disconnecting .

This commit is contained in:
softsimon
2020-04-12 03:03:51 +07:00
parent 52e2d364dd
commit c5796a8062
4 changed files with 37 additions and 20 deletions

View File

@@ -7,7 +7,7 @@ import { WebsocketService } from 'src/app/services/websocket.service';
import { StateService } from 'src/app/services/state.service';
import { AudioService } from 'src/app/services/audio.service';
import { ApiService } from 'src/app/services/api.service';
import { of, merge } from 'rxjs';
import { of, merge, Subscription } from 'rxjs';
import { SeoService } from 'src/app/services/seo.service';
import { environment } from 'src/environments/environment';
@@ -25,6 +25,7 @@ export class AddressComponent implements OnInit, OnDestroy {
transactions: Transaction[];
isLoadingTransactions = true;
error: any;
mainSubscription: Subscription;
totalConfirmedTxCount = 0;
loadedConfirmedTxCount = 0;
@@ -49,7 +50,7 @@ export class AddressComponent implements OnInit, OnDestroy {
ngOnInit() {
this.websocketService.want(['blocks', 'stats', 'mempool-blocks']);
this.route.paramMap
this.mainSubscription = this.route.paramMap
.pipe(
switchMap((params: ParamMap) => {
this.error = undefined;
@@ -192,6 +193,7 @@ export class AddressComponent implements OnInit, OnDestroy {
}
ngOnDestroy() {
this.websocketService.startTrackAddress('stop');
this.mainSubscription.unsubscribe();
this.websocketService.stopTrackingAddress();
}
}

View File

@@ -3,7 +3,7 @@ import { ElectrsApiService } from '../../services/electrs-api.service';
import { ActivatedRoute, ParamMap } from '@angular/router';
import { switchMap, filter, take } from 'rxjs/operators';
import { Transaction, Block } from '../../interfaces/electrs.interface';
import { of, merge } from 'rxjs';
import { of, merge, Subscription } from 'rxjs';
import { StateService } from '../../services/state.service';
import { WebsocketService } from '../../services/websocket.service';
import { AudioService } from 'src/app/services/audio.service';
@@ -28,6 +28,7 @@ export class TransactionComponent implements OnInit, OnDestroy {
error: any = undefined;
latestBlock: Block;
transactionTime = -1;
subscription: Subscription;
rightPosition = 0;
@@ -42,7 +43,7 @@ export class TransactionComponent implements OnInit, OnDestroy {
) { }
ngOnInit() {
this.route.paramMap.pipe(
this.subscription = this.route.paramMap.pipe(
switchMap((params: ParamMap) => {
this.txId = params.get('id') || '';
this.seoService.setTitle('Transaction: ' + this.txId, true);
@@ -51,6 +52,7 @@ export class TransactionComponent implements OnInit, OnDestroy {
this.isLoadingTx = true;
this.transactionTime = -1;
document.body.scrollTo(0, 0);
this.leaveTransaction();
return merge(
of(true),
this.stateService.connectionState$
@@ -160,7 +162,12 @@ export class TransactionComponent implements OnInit, OnDestroy {
}
ngOnDestroy() {
this.websocketService.startTrackTransaction('stop');
this.subscription.unsubscribe();
this.leaveTransaction();
}
leaveTransaction() {
this.websocketService.stopTrackingTransaction();
this.stateService.markBlock$.next({});
}
}