Fix blockchain gaps when KEEP_BLOCKS_AMOUNT > INITIAL_BLOCKS_AMOUNT
This commit is contained in:
		
							parent
							
								
									763c89363c
								
							
						
					
					
						commit
						2271811830
					
				@ -26,6 +26,7 @@ export class BlockchainBlocksComponent implements OnInit, OnChanges, OnDestroy {
 | 
			
		||||
  specialBlocks = specialBlocks;
 | 
			
		||||
  network = '';
 | 
			
		||||
  blocks: BlockchainBlock[] = [];
 | 
			
		||||
  dynamicBlocksAmount: number = 8;
 | 
			
		||||
  emptyBlocks: BlockExtended[] = this.mountEmptyBlocks();
 | 
			
		||||
  markHeight: number;
 | 
			
		||||
  blocksSubscription: Subscription;
 | 
			
		||||
@ -70,6 +71,8 @@ export class BlockchainBlocksComponent implements OnInit, OnChanges, OnDestroy {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ngOnInit() {
 | 
			
		||||
    this.dynamicBlocksAmount = Math.min(8, this.stateService.env.KEEP_BLOCKS_AMOUNT);
 | 
			
		||||
 | 
			
		||||
    if (['', 'testnet', 'signet'].includes(this.stateService.network)) {
 | 
			
		||||
      this.enabledMiningInfoIfNeeded(this.location.path());
 | 
			
		||||
      this.location.onUrlChange((url) => this.enabledMiningInfoIfNeeded(url));
 | 
			
		||||
@ -100,7 +103,7 @@ export class BlockchainBlocksComponent implements OnInit, OnChanges, OnDestroy {
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.blocks.unshift(block);
 | 
			
		||||
          this.blocks = this.blocks.slice(0, this.stateService.env.KEEP_BLOCKS_AMOUNT);
 | 
			
		||||
          this.blocks = this.blocks.slice(0, this.dynamicBlocksAmount);
 | 
			
		||||
 | 
			
		||||
          if (txConfirmed) {
 | 
			
		||||
            this.markHeight = block.height;
 | 
			
		||||
@ -121,7 +124,7 @@ export class BlockchainBlocksComponent implements OnInit, OnChanges, OnDestroy {
 | 
			
		||||
            this.blocks.forEach((b, i) => this.blockStyles.push(this.getStyleForBlock(b, i)));
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (this.blocks.length === this.stateService.env.KEEP_BLOCKS_AMOUNT) {
 | 
			
		||||
          if (this.blocks.length === this.dynamicBlocksAmount) {
 | 
			
		||||
            this.blocksFilled = true;
 | 
			
		||||
          }
 | 
			
		||||
          this.cd.markForCheck();
 | 
			
		||||
@ -312,7 +315,7 @@ export class BlockchainBlocksComponent implements OnInit, OnChanges, OnDestroy {
 | 
			
		||||
 | 
			
		||||
  mountEmptyBlocks() {
 | 
			
		||||
    const emptyBlocks = [];
 | 
			
		||||
    for (let i = 0; i < this.stateService.env.KEEP_BLOCKS_AMOUNT; i++) {
 | 
			
		||||
    for (let i = 0; i < this.dynamicBlocksAmount; i++) {
 | 
			
		||||
      emptyBlocks.push({
 | 
			
		||||
        id: '',
 | 
			
		||||
        height: 0,
 | 
			
		||||
 | 
			
		||||
@ -22,10 +22,13 @@ export class StartComponent implements OnInit, OnDestroy {
 | 
			
		||||
  chainTipSubscription: Subscription;
 | 
			
		||||
  chainTip: number = -1;
 | 
			
		||||
  markBlockSubscription: Subscription;
 | 
			
		||||
  blockCounterSubscription: Subscription;
 | 
			
		||||
  @ViewChild('blockchainContainer') blockchainContainer: ElementRef;
 | 
			
		||||
 | 
			
		||||
  isMobile: boolean = false;
 | 
			
		||||
  blockWidth = 155;
 | 
			
		||||
  dynamicBlocksAmount: number = 8;
 | 
			
		||||
  blockCount: number = 0;
 | 
			
		||||
  blocksPerPage: number = 1;
 | 
			
		||||
  pageWidth: number;
 | 
			
		||||
  firstPageWidth: number;
 | 
			
		||||
@ -39,7 +42,15 @@ export class StartComponent implements OnInit, OnDestroy {
 | 
			
		||||
  ) { }
 | 
			
		||||
 | 
			
		||||
  ngOnInit() {
 | 
			
		||||
    this.firstPageWidth = 40 + (this.blockWidth * this.stateService.env.KEEP_BLOCKS_AMOUNT);
 | 
			
		||||
    this.firstPageWidth = 40 + (this.blockWidth * this.dynamicBlocksAmount);
 | 
			
		||||
    this.blockCounterSubscription = this.stateService.blocks$.subscribe(() => {
 | 
			
		||||
      this.blockCount++;
 | 
			
		||||
      this.dynamicBlocksAmount = Math.min(this.blockCount, this.stateService.env.KEEP_BLOCKS_AMOUNT, 8);
 | 
			
		||||
      this.firstPageWidth = 40 + (this.blockWidth * this.dynamicBlocksAmount);
 | 
			
		||||
      if (this.blockCount <= Math.min(8, this.stateService.env.KEEP_BLOCKS_AMOUNT)) {
 | 
			
		||||
        this.onResize();
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
    this.onResize();
 | 
			
		||||
    this.updatePages();
 | 
			
		||||
    this.timeLtrSubscription = this.stateService.timeLtr.subscribe((ltr) => {
 | 
			
		||||
@ -241,7 +252,7 @@ export class StartComponent implements OnInit, OnDestroy {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getPageAt(index: number) {
 | 
			
		||||
    const height = this.chainTip - 8 - ((index - 1) * this.blocksPerPage)
 | 
			
		||||
    const height = this.chainTip - this.dynamicBlocksAmount - ((index - 1) * this.blocksPerPage);
 | 
			
		||||
    return {
 | 
			
		||||
      offset: this.firstPageWidth + (this.pageWidth * (index - 1 - this.pageIndex)),
 | 
			
		||||
      height: height,
 | 
			
		||||
@ -255,7 +266,7 @@ export class StartComponent implements OnInit, OnDestroy {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getPageIndexOf(height: number): number {
 | 
			
		||||
    const delta = this.chainTip - 8 - height;
 | 
			
		||||
    const delta = this.chainTip - this.dynamicBlocksAmount - height;
 | 
			
		||||
    return Math.max(0, Math.floor(delta / this.blocksPerPage) + 1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -290,5 +301,6 @@ export class StartComponent implements OnInit, OnDestroy {
 | 
			
		||||
    this.timeLtrSubscription.unsubscribe();
 | 
			
		||||
    this.chainTipSubscription.unsubscribe();
 | 
			
		||||
    this.markBlockSubscription.unsubscribe();
 | 
			
		||||
    this.blockCounterSubscription.unsubscribe();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user