Merge branch 'master' into knorrium/fix_liquid_tests
This commit is contained in:
		
						commit
						844a86f997
					
				| @ -44,7 +44,7 @@ export class AcceleratorDashboardComponent implements OnInit { | ||||
|     @Inject(PLATFORM_ID) private platformId: Object, | ||||
|   ) { | ||||
|     this.webGlEnabled = this.stateService.isBrowser && detectWebGL(); | ||||
|     this.seoService.setTitle($localize`:@@a681a4e2011bb28157689dbaa387de0dd0aa0c11:Accelerator Dashboard`); | ||||
|     this.seoService.setTitle($localize`:@@6b867dc61c6a92f3229f1950f9f2d414790cce95:Accelerator Dashboard`); | ||||
|     this.ogService.setManualOgImage('accelerator.jpg'); | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -69,7 +69,7 @@ export class AddressPreviewComponent implements OnInit, OnDestroy { | ||||
|             this.addressString = this.addressString.toLowerCase(); | ||||
|           } | ||||
|           this.seoService.setTitle($localize`:@@address.component.browser-title:Address: ${this.addressString}:INTERPOLATION:`); | ||||
|           this.seoService.setDescription($localize`:@@meta.description.bitcoin.address:See mempool transactions, confirmed transactions, balance, and more for ${this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'} ${seoDescriptionNetwork(this.stateService.network)} address ${this.addressString}:INTERPOLATION:.`); | ||||
|           this.seoService.setDescription($localize`:@@meta.description.bitcoin.address:See mempool transactions, confirmed transactions, balance, and more for ${this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'}${seoDescriptionNetwork(this.stateService.network)} address ${this.addressString}:INTERPOLATION:.`); | ||||
| 
 | ||||
|           return (this.addressString.match(/04[a-fA-F0-9]{128}|(02|03)[a-fA-F0-9]{64}/) | ||||
|               ? this.electrsApiService.getPubKeyAddress$(this.addressString) | ||||
|  | ||||
| @ -105,6 +105,7 @@ export class AssetComponent implements OnInit, OnDestroy { | ||||
|           if (!this.assetContract) { | ||||
|             this.assetContract = [null, '?', 'Unknown', 0]; | ||||
|           } | ||||
|           this.seoService.setDescription($localize`:@@meta.description.liquid.asset:Browse an overview of the Liquid asset ${this.assetContract[2]}:INTERPOLATION: (${this.assetContract[1]}:INTERPOLATION:): see issued amount, burned amount, circulating amount, related transactions, and more.`); | ||||
|           this.blindedIssuance = this.asset.chain_stats.has_blinded_issuances || this.asset.mempool_stats.has_blinded_issuances; | ||||
|           this.isNativeAsset = asset.asset_id === this.nativeAssetId; | ||||
|           this.updateChainStats(); | ||||
|  | ||||
| @ -395,7 +395,7 @@ export class BlockComponent implements OnInit, OnDestroy { | ||||
|           for (const txid of blockAudit.addedTxs) { | ||||
|             isAdded[txid] = true; | ||||
|           } | ||||
|           for (const txid of blockAudit.prioritizedTxs) { | ||||
|           for (const txid of blockAudit.prioritizedTxs || []) { | ||||
|             isPrioritized[txid] = true; | ||||
|           } | ||||
|           for (const txid of blockAudit.missingTxs) { | ||||
|  | ||||
| @ -64,6 +64,15 @@ export class BlocksList implements OnInit { | ||||
| 
 | ||||
|     if (!this.widget) { | ||||
|       this.websocketService.want(['blocks']); | ||||
|        | ||||
|       this.seoService.setTitle($localize`:@@meta.title.blocks-list:Blocks`); | ||||
|       this.ogService.setManualOgImage('recent-blocks.jpg'); | ||||
|       if( this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet' ) { | ||||
|         this.seoService.setDescription($localize`:@@meta.description.liquid.blocks:See the most recent Liquid${seoDescriptionNetwork(this.stateService.network)} blocks along with basic stats such as block height, block size, and more.`); | ||||
|       } else { | ||||
|         this.seoService.setDescription($localize`:@@meta.description.bitcoin.blocks:See the most recent Bitcoin${seoDescriptionNetwork(this.stateService.network)} blocks along with basic stats such as block height, block reward, block size, and more.`); | ||||
|       } | ||||
| 
 | ||||
|       this.blocksCountInitializedSubscription = combineLatest([this.blocksCountInitialized$, this.route.queryParams]).pipe( | ||||
|         filter(([blocksCountInitialized, _]) => blocksCountInitialized), | ||||
|         tap(([_, params]) => { | ||||
| @ -97,17 +106,6 @@ export class BlocksList implements OnInit { | ||||
|     this.skeletonLines = this.widget === true ? [...Array(6).keys()] : [...Array(15).keys()]; | ||||
|     this.paginationMaxSize = window.matchMedia('(max-width: 670px)').matches ? 3 : 5; | ||||
|      | ||||
|     if (!this.widget) { | ||||
|       this.seoService.setTitle($localize`:@@m8a7b4bd44c0ac71b2e72de0398b303257f7d2f54:Blocks`); | ||||
|       this.ogService.setManualOgImage('recent-blocks.jpg'); | ||||
|     } | ||||
|     if( this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet' ) { | ||||
|       this.seoService.setDescription($localize`:@@meta.description.liquid.blocks:See the most recent Liquid${seoDescriptionNetwork(this.stateService.network)} blocks along with basic stats such as block height, block size, and more.`); | ||||
|     } else { | ||||
|       this.seoService.setDescription($localize`:@@meta.description.bitcoin.blocks:See the most recent Bitcoin${seoDescriptionNetwork(this.stateService.network)} blocks along with basic stats such as block height, block reward, block size, and more.`); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     this.blocks$ = combineLatest([ | ||||
|       this.fromHeightSubject.pipe( | ||||
|         filter(fromBlockHeight => fromBlockHeight !== this.lastBlockHeightFetched), | ||||
|  | ||||
| @ -72,6 +72,7 @@ export class HashrateChartPoolsComponent implements OnInit { | ||||
|     let firstRun = true; | ||||
| 
 | ||||
|     this.seoService.setTitle($localize`:@@mining.pools-historical-dominance:Pools Historical Dominance`); | ||||
|     this.seoService.setDescription($localize`:@@meta.descriptions.bitcoin.graphs.hashrate-pools:See Bitcoin mining pool dominance visualized over time: see how top mining pools' share of total hashrate has fluctuated over time.`); | ||||
|     this.miningWindowPreference = this.miningService.getDefaultTimespan('6m'); | ||||
|     this.radioGroupForm = this.formBuilder.group({ dateSpan: this.miningWindowPreference }); | ||||
|     this.radioGroupForm.controls.dateSpan.setValue(this.miningWindowPreference); | ||||
|  | ||||
| @ -57,10 +57,10 @@ | ||||
|           <span class="badge badge-pill badge-warning beta" i18n="beta">beta</span> | ||||
|         </a> | ||||
|       </li> | ||||
|       <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-pools" *ngIf="stateService.env.MINING_DASHBOARD"> | ||||
|       <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-mining" *ngIf="stateService.env.MINING_DASHBOARD"> | ||||
|         <a class="nav-link" [routerLink]="['/mining' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'hammer']" [fixedWidth]="true" i18n-title="mining.mining-dashboard" title="Mining Dashboard"></fa-icon></a> | ||||
|       </li> | ||||
|       <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-pools" *ngIf="stateService.env.LIGHTNING"> | ||||
|       <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-lightning" *ngIf="stateService.env.LIGHTNING"> | ||||
|         <a class="nav-link" [routerLink]="['/lightning' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'bolt']" [fixedWidth]="true" i18n-title="master-page.lightning" title="Lightning Explorer"></fa-icon> | ||||
|         </a> | ||||
|       </li> | ||||
|  | ||||
| @ -20,15 +20,14 @@ export class MiningDashboardComponent implements OnInit, AfterViewInit { | ||||
|     private websocketService: WebsocketService, | ||||
|     private stateService: StateService, | ||||
|     private router: Router | ||||
|   ) { | ||||
|     this.seoService.setTitle($localize`:@@a681a4e2011bb28157689dbaa387de0dd0aa0c11:Mining Dashboard`); | ||||
|     this.seoService.setDescription($localize`:@@meta.description.mining.dashboard:Get real-time Bitcoin mining stats like hashrate, difficulty adjustment, block rewards, pool dominance, and more.`); | ||||
|     this.ogService.setManualOgImage('mining.jpg'); | ||||
|   } | ||||
|   ) { } | ||||
| 
 | ||||
|   ngOnInit(): void { | ||||
|     this.onResize(); | ||||
|     this.websocketService.want(['blocks', 'mempool-blocks', 'stats']); | ||||
|     this.seoService.setTitle($localize`:@@a681a4e2011bb28157689dbaa387de0dd0aa0c11:Mining Dashboard`); | ||||
|     this.seoService.setDescription($localize`:@@meta.description.mining.dashboard:Get real-time Bitcoin mining stats like hashrate, difficulty adjustment, block rewards, pool dominance, and more.`); | ||||
|     this.ogService.setManualOgImage('mining.jpg'); | ||||
|   } | ||||
| 
 | ||||
|   ngAfterViewInit(): void { | ||||
|  | ||||
| @ -211,23 +211,23 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy { | ||||
|       case 'before': | ||||
|       if (number === 1) { | ||||
|         switch (unit) { // singular (1 day)
 | ||||
|           case 'year': return $localize`:@@time-span:${dateStrings.i18nYear}:DATE: before`; break; | ||||
|           case 'month': return $localize`:@@time-span:${dateStrings.i18nMonth}:DATE: before`; break; | ||||
|           case 'week': return $localize`:@@time-span:${dateStrings.i18nWeek}:DATE: before`; break; | ||||
|           case 'day': return $localize`:@@time-span:${dateStrings.i18nDay}:DATE: before`; break; | ||||
|           case 'hour': return $localize`:@@time-span:${dateStrings.i18nHour}:DATE: before`; break; | ||||
|           case 'minute': return $localize`:@@time-span:${dateStrings.i18nMinute}:DATE: before`; break; | ||||
|           case 'second': return $localize`:@@time-span:${dateStrings.i18nSecond}:DATE: before`; break; | ||||
|           case 'year': return $localize`:@@time-before:${dateStrings.i18nYear}:DATE: before`; break; | ||||
|           case 'month': return $localize`:@@time-before:${dateStrings.i18nMonth}:DATE: before`; break; | ||||
|           case 'week': return $localize`:@@time-before:${dateStrings.i18nWeek}:DATE: before`; break; | ||||
|           case 'day': return $localize`:@@time-before:${dateStrings.i18nDay}:DATE: before`; break; | ||||
|           case 'hour': return $localize`:@@time-before:${dateStrings.i18nHour}:DATE: before`; break; | ||||
|           case 'minute': return $localize`:@@time-before:${dateStrings.i18nMinute}:DATE: before`; break; | ||||
|           case 'second': return $localize`:@@time-before:${dateStrings.i18nSecond}:DATE: before`; break; | ||||
|         } | ||||
|       } else { | ||||
|         switch (unit) { // plural (2 days)
 | ||||
|           case 'year': return $localize`:@@time-span:${dateStrings.i18nYears}:DATE: before`; break; | ||||
|           case 'month': return $localize`:@@time-span:${dateStrings.i18nMonths}:DATE: before`; break; | ||||
|           case 'week': return $localize`:@@time-span:${dateStrings.i18nWeeks}:DATE: before`; break; | ||||
|           case 'day': return $localize`:@@time-span:${dateStrings.i18nDays}:DATE: before`; break; | ||||
|           case 'hour': return $localize`:@@time-span:${dateStrings.i18nHours}:DATE: before`; break; | ||||
|           case 'minute': return $localize`:@@time-span:${dateStrings.i18nMinutes}:DATE: before`; break; | ||||
|           case 'second': return $localize`:@@time-span:${dateStrings.i18nSeconds}:DATE: before`; break; | ||||
|           case 'year': return $localize`:@@time-before:${dateStrings.i18nYears}:DATE: before`; break; | ||||
|           case 'month': return $localize`:@@time-before:${dateStrings.i18nMonths}:DATE: before`; break; | ||||
|           case 'week': return $localize`:@@time-before:${dateStrings.i18nWeeks}:DATE: before`; break; | ||||
|           case 'day': return $localize`:@@time-before:${dateStrings.i18nDays}:DATE: before`; break; | ||||
|           case 'hour': return $localize`:@@time-before:${dateStrings.i18nHours}:DATE: before`; break; | ||||
|           case 'minute': return $localize`:@@time-before:${dateStrings.i18nMinutes}:DATE: before`; break; | ||||
|           case 'second': return $localize`:@@time-before:${dateStrings.i18nSeconds}:DATE: before`; break; | ||||
|         } | ||||
|       } | ||||
|       break; | ||||
|  | ||||
| @ -51,6 +51,7 @@ export class NodesPerISPChartComponent implements OnInit { | ||||
|   ngOnInit(): void { | ||||
|     if (!this.widget) { | ||||
|       this.seoService.setTitle($localize`:@@8573a1576789bd2c4faeaed23037c4917812c6cf:Lightning Nodes Per ISP`); | ||||
|       this.seoService.setDescription($localize`:@@meta.description.lightning.nodes-per-isp:Browse the top 100 ISPs hosting Lightning nodes along with stats like total number of nodes per ISP, aggregate BTC capacity per ISP, and more`); | ||||
|     } | ||||
| 
 | ||||
|     this.nodesPerAsObservable$ = combineLatest([ | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user