SSR: init latest replacements on server side

This commit is contained in:
Mononaut 2023-10-28 23:30:58 +00:00
parent c5822b11a0
commit 1ae5f05316
No known key found for this signature in database
GPG Key ID: A3F058E41374C04E

View File

@ -3,7 +3,7 @@ import { webSocket, WebSocketSubject } from 'rxjs/webSocket';
import { WebsocketResponse } from '../interfaces/websocket.interface'; import { WebsocketResponse } from '../interfaces/websocket.interface';
import { StateService } from './state.service'; import { StateService } from './state.service';
import { Transaction } from '../interfaces/electrs.interface'; import { Transaction } from '../interfaces/electrs.interface';
import { Subscription } from 'rxjs'; import { firstValueFrom, Subscription } from 'rxjs';
import { ApiService } from './api.service'; import { ApiService } from './api.service';
import { take } from 'rxjs/operators'; import { take } from 'rxjs/operators';
import { TransferState, makeStateKey } from '@angular/core'; import { TransferState, makeStateKey } from '@angular/core';
@ -224,6 +224,7 @@ export class WebsocketService {
} }
startTrackRbfSummary() { startTrackRbfSummary() {
this.initRbfSummary();
this.websocketSubject.next({ 'track-rbf-summary': true }); this.websocketSubject.next({ 'track-rbf-summary': true });
this.isTrackingRbfSummary = true; this.isTrackingRbfSummary = true;
} }
@ -446,4 +447,30 @@ export class WebsocketService {
this.websocketSubject.next({'refresh-blocks': true}); this.websocketSubject.next({'refresh-blocks': true});
} }
} }
async initRbfSummary(): Promise<void> {
if (!this.stateService.isBrowser) {
const rbfList = await firstValueFrom(this.apiService.getRbfList$(false));
if (rbfList) {
const rbfSummary = rbfList.slice(0, 6).map(rbfTree => {
let oldFee = 0;
let oldVsize = 0;
for (const replaced of rbfTree.replaces) {
oldFee += replaced.tx.fee;
oldVsize += replaced.tx.vsize;
}
return {
txid: rbfTree.tx.txid,
mined: !!rbfTree.tx.mined,
fullRbf: !!rbfTree.tx.fullRbf,
oldFee,
oldVsize,
newFee: rbfTree.tx.fee,
newVsize: rbfTree.tx.vsize,
};
});
this.stateService.rbfLatestSummary$.next(rbfSummary);
}
}
}
} }