Resume transaction tracking after reconnect.

This commit is contained in:
Simon Lindh 2019-10-24 15:37:39 +08:00
parent 4229b9b3df
commit 35c4d9676c
3 changed files with 18 additions and 2 deletions

View File

@ -74,7 +74,7 @@ class ProjectedBlocks {
return {
blockSize: blockSize,
blockWeight: blockWeight,
nTx: transactions.length - 1,
nTx: transactions.length,
minFee: transactions[transactions.length - 1].feePerVsize,
maxFee: transactions[0].feePerVsize,
minWeightFee: transactions[transactions.length - 1].feePerWeightUnit,

View File

@ -41,6 +41,10 @@ export class BlockchainComponent implements OnInit, OnDestroy {
this.route.paramMap
.subscribe((params: ParamMap) => {
if (this.memPoolService.txTracking$.value.enabled) {
return;
}
const txId: string | null = params.get('id');
if (!txId) {
return;
@ -52,6 +56,13 @@ export class BlockchainComponent implements OnInit, OnDestroy {
this.memPoolService.txIdSearch$
.subscribe((txId) => {
if (txId) {
if (this.memPoolService.txTracking$.value.enabled
&& this.memPoolService.txTracking$.value.tx
&& this.memPoolService.txTracking$.value.tx.txid === txId) {
return;
}
console.log('enabling tracking loading from idSearch!');
this.txTrackingLoading = true;
this.apiService.webSocketStartTrackTx(txId);
}

View File

@ -17,6 +17,7 @@ export class ApiService {
private websocketSubject: Observable<IMempoolDefaultResponse> = webSocket<IMempoolDefaultResponse | any>(WEB_SOCKET_URL);
private lastWant: string[] | null = null;
private goneOffline = false;
private lastTrackedTxId = '';
constructor(
private httpClient: HttpClient,
@ -68,7 +69,7 @@ export class ApiService {
this.memPoolService.conversions$.next(response.conversions);
}
if (response['track-tx']) {
if (response['track-tx'] && !this.goneOffline) {
let txTrackingEnabled;
let txTrackingBlockHeight;
let txTrackingTx = null;
@ -104,6 +105,9 @@ export class ApiService {
if (this.lastWant) {
this.webSocketWant(this.lastWant);
}
if (this.memPoolService.txTracking$.value.enabled) {
this.webSocketStartTrackTx(this.lastTrackedTxId);
}
}
},
(err: Error) => {
@ -117,6 +121,7 @@ export class ApiService {
webSocketStartTrackTx(txId: string) {
// @ts-ignore
this.websocketSubject.next({'action': 'track-tx', 'txId': txId});
this.lastTrackedTxId = txId;
}
webSocketWant(data: string[]) {