* master: (42 commits) i18n: Added missing Bisq translations. Minor missing space and character fixes. add missing 'sat/vb' string for i18n i18n: Removed CR from "In X minutes" translation i18n: Updated strings for "x confirmations", "x transactions", "x blocks" and "block ETA". Peg-out, and bisq headers. Update translation strings from Transifex Enable 'ka' locale for Georgian Update translation strings from Transifex Disable Vietnamese locale 'vi' until translations are completed Update translation strings from Transifex add 'sat' string for i18n Update translation strings from Transifex Update translation strings from Transifex i18n update Remove extra garbage characters from OP_RETURN tooltip. fixes #254 Fix for changing locale on other networks than mainnet. fixes #253 i18n: Asset search box Update translation strings from Transifex i18n: Added X of X transaction. Flipped collapse/expand i18n: Added "miner identification" and updated "navigate to sponsor" Update translations from Transifex ... # Conflicts: # frontend/src/app/components/app/app.component.ts # frontend/src/app/components/mempool-block/mempool-block.component.ts
79 lines
3.0 KiB
TypeScript
79 lines
3.0 KiB
TypeScript
import { Component, OnInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core';
|
|
import { StateService } from 'src/app/services/state.service';
|
|
import { ActivatedRoute, ParamMap } from '@angular/router';
|
|
import { switchMap, map, tap, filter } from 'rxjs/operators';
|
|
import { MempoolBlock } from 'src/app/interfaces/websocket.interface';
|
|
import { Observable, BehaviorSubject } from 'rxjs';
|
|
import { SeoService } from 'src/app/services/seo.service';
|
|
import { WebsocketService } from 'src/app/services/websocket.service';
|
|
|
|
@Component({
|
|
selector: 'app-mempool-block',
|
|
templateUrl: './mempool-block.component.html',
|
|
styleUrls: ['./mempool-block.component.scss'],
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
})
|
|
export class MempoolBlockComponent implements OnInit, OnDestroy {
|
|
network$: Observable<string>;
|
|
mempoolBlockIndex: number;
|
|
mempoolBlock$: Observable<MempoolBlock>;
|
|
ordinal$: BehaviorSubject<string> = new BehaviorSubject('');
|
|
|
|
constructor(
|
|
private route: ActivatedRoute,
|
|
private stateService: StateService,
|
|
private seoService: SeoService,
|
|
private websocketService: WebsocketService,
|
|
) { }
|
|
|
|
ngOnInit(): void {
|
|
this.websocketService.want(['blocks', 'mempool-blocks']);
|
|
|
|
this.mempoolBlock$ = this.route.paramMap
|
|
.pipe(
|
|
switchMap((params: ParamMap) => {
|
|
this.mempoolBlockIndex = parseInt(params.get('id'), 10) || 0;
|
|
return this.stateService.mempoolBlocks$
|
|
.pipe(
|
|
map((blocks) => {
|
|
if (!blocks.length) {
|
|
return [{ index: 0, blockSize: 0, blockVSize: 0, feeRange: [0, 0], medianFee: 0, nTx: 0, totalFees: 0 }];
|
|
}
|
|
return blocks;
|
|
}),
|
|
filter((mempoolBlocks) => mempoolBlocks.length > 0),
|
|
map((mempoolBlocks) => {
|
|
while (!mempoolBlocks[this.mempoolBlockIndex]) {
|
|
this.mempoolBlockIndex--;
|
|
}
|
|
const ordinal = this.getOrdinal(mempoolBlocks[this.mempoolBlockIndex]);
|
|
this.ordinal$.next(ordinal);
|
|
this.seoService.setTitle(ordinal);
|
|
return mempoolBlocks[this.mempoolBlockIndex];
|
|
})
|
|
);
|
|
}),
|
|
tap(() => {
|
|
this.stateService.markBlock$.next({ mempoolBlockIndex: this.mempoolBlockIndex });
|
|
})
|
|
);
|
|
|
|
this.network$ = this.stateService.networkChanged$;
|
|
}
|
|
|
|
ngOnDestroy(): void {
|
|
this.stateService.markBlock$.next({});
|
|
}
|
|
|
|
getOrdinal(mempoolBlock: MempoolBlock): string {
|
|
const blocksInBlock = Math.ceil(mempoolBlock.blockVSize / 1000000);
|
|
if (this.mempoolBlockIndex === 0) {
|
|
return $localize`:@@mempool-block.next.block:Next block`;
|
|
} else if (this.mempoolBlockIndex === this.stateService.env.KEEP_BLOCKS_AMOUNT - 1 && blocksInBlock > 1) {
|
|
return $localize`:@@mempool-block.stack.of.blocks:Stack of ${blocksInBlock}:INTERPOLATION: mempool blocks`;
|
|
} else {
|
|
return $localize`:@@mempool-block.block.no:Mempool block ${this.mempoolBlockIndex + 1}:INTERPOLATION:`;
|
|
}
|
|
}
|
|
}
|