diff --git a/backend/package-lock.json b/backend/package-lock.json index 570d825a3..04e15afa2 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -23,7 +23,7 @@ "rust-gbt": "file:./rust-gbt", "socks-proxy-agent": "~7.0.0", "typescript": "~4.9.3", - "ws": "~8.17.1" + "ws": "~8.18.0" }, "devDependencies": { "@babel/code-frame": "^7.18.6", @@ -7690,9 +7690,9 @@ } }, "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, @@ -13424,9 +13424,9 @@ } }, "ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "requires": {} }, "y18n": { diff --git a/backend/package.json b/backend/package.json index 906b97523..24e76e3dd 100644 --- a/backend/package.json +++ b/backend/package.json @@ -52,7 +52,7 @@ "redis": "^4.6.6", "socks-proxy-agent": "~7.0.0", "typescript": "~4.9.3", - "ws": "~8.17.1" + "ws": "~8.18.0" }, "devDependencies": { "@babel/code-frame": "^7.18.6", diff --git a/backend/src/api/mempool-blocks.ts b/backend/src/api/mempool-blocks.ts index 51f9a1618..e655601e5 100644 --- a/backend/src/api/mempool-blocks.ts +++ b/backend/src/api/mempool-blocks.ts @@ -353,6 +353,9 @@ class MempoolBlocks { for (const txid of Object.keys(candidates?.txs ?? mempool)) { if (txid in mempool) { mempool[txid].cpfpDirty = false; + mempool[txid].ancestors = []; + mempool[txid].descendants = []; + mempool[txid].bestDescendant = null; } } for (const [txid, rate] of rates) { diff --git a/frontend/src/app/components/block/block.component.html b/frontend/src/app/components/block/block.component.html index 6c8693d22..79151ecc3 100644 --- a/frontend/src/app/components/block/block.component.html +++ b/frontend/src/app/components/block/block.component.html @@ -364,7 +364,7 @@ - Error loading data. + Error loading block data. diff --git a/frontend/src/app/components/blocks-list/blocks-list.component.ts b/frontend/src/app/components/blocks-list/blocks-list.component.ts index 9bf4e9814..5270ee7be 100644 --- a/frontend/src/app/components/blocks-list/blocks-list.component.ts +++ b/frontend/src/app/components/blocks-list/blocks-list.component.ts @@ -81,11 +81,13 @@ export class BlocksList implements OnInit { }) ).subscribe(); + const prevKey = this.dir === 'ltr' ? 'ArrowLeft' : 'ArrowRight'; + const nextKey = this.dir === 'ltr' ? 'ArrowRight' : 'ArrowLeft'; + this.keyNavigationSubscription = this.stateService.keyNavigation$ .pipe( + filter((event) => event.key === prevKey || event.key === nextKey), tap((event) => { - const prevKey = this.dir === 'ltr' ? 'ArrowLeft' : 'ArrowRight'; - const nextKey = this.dir === 'ltr' ? 'ArrowRight' : 'ArrowLeft'; if (event.key === prevKey && this.page > 1) { this.page--; this.isLoading = true; diff --git a/frontend/src/app/components/graphs/graphs.component.html b/frontend/src/app/components/graphs/graphs.component.html index 03dd6e0b3..c11a0dc96 100644 --- a/frontend/src/app/components/graphs/graphs.component.html +++ b/frontend/src/app/components/graphs/graphs.component.html @@ -45,7 +45,7 @@ -
+
event.key === prevKey || event.key === nextKey), tap((event) => { - const prevKey = this.dir === 'ltr' ? 'ArrowLeft' : 'ArrowRight'; - const nextKey = this.dir === 'ltr' ? 'ArrowRight' : 'ArrowLeft'; if (event.key === prevKey && this.page > 1) { this.page--; this.isLoading = true; diff --git a/frontend/src/app/components/master-page/master-page.component.html b/frontend/src/app/components/master-page/master-page.component.html index 25843bb28..dae0df8e3 100644 --- a/frontend/src/app/components/master-page/master-page.component.html +++ b/frontend/src/app/components/master-page/master-page.component.html @@ -71,7 +71,6 @@ Signet Testnet3 Testnet4 beta - Liquid Liquid Testnet
diff --git a/frontend/src/app/components/pool/pool.component.html b/frontend/src/app/components/pool/pool.component.html index bd4f3bbee..b74ecdf81 100644 --- a/frontend/src/app/components/pool/pool.component.html +++ b/frontend/src/app/components/pool/pool.component.html @@ -1,6 +1,6 @@ -
+
@@ -459,4 +459,11 @@ + + + +
+ + Error loading pool data. +
\ No newline at end of file diff --git a/frontend/src/app/components/pool/pool.component.ts b/frontend/src/app/components/pool/pool.component.ts index 2648bc4ca..6564a5dd9 100644 --- a/frontend/src/app/components/pool/pool.component.ts +++ b/frontend/src/app/components/pool/pool.component.ts @@ -9,6 +9,7 @@ import { StateService } from '../../services/state.service'; import { selectPowerOfTen } from '../../bitcoin.utils'; import { formatNumber } from '@angular/common'; import { SeoService } from '../../services/seo.service'; +import { HttpErrorResponse } from '@angular/common/http'; interface AccelerationTotal { cost: number, @@ -33,6 +34,7 @@ export class PoolComponent implements OnInit { blocks$: Observable; oobFees$: Observable; isLoading = true; + error: HttpErrorResponse | null = null; chartOptions: EChartsOption = {}; chartInitOptions = { @@ -105,6 +107,10 @@ export class PoolComponent implements OnInit { } return this.apiService.getPoolBlocks$(this.slug, this.blocks[this.blocks.length - 1]?.height); }), + catchError((err) => { + this.error = err; + return of([]); + }), tap((newBlocks) => { this.blocks = this.blocks.concat(newBlocks); }), diff --git a/frontend/src/app/services/state.service.ts b/frontend/src/app/services/state.service.ts index 647e5a972..860ff15df 100644 --- a/frontend/src/app/services/state.service.ts +++ b/frontend/src/app/services/state.service.ts @@ -410,6 +410,10 @@ export class StateService { return this.network === 'liquid' || this.network === 'liquidtestnet'; } + isMainnet(): boolean { + return this.env.ROOT_NETWORK === '' && this.network === ''; + } + isAnyTestnet(): boolean { return ['testnet', 'testnet4', 'signet', 'liquidtestnet'].includes(this.network); } diff --git a/frontend/src/app/shared/pipes/http-error-pipe/http-error.pipe.ts b/frontend/src/app/shared/pipes/http-error-pipe/http-error.pipe.ts index 3cbb16df6..51e9c4c0b 100644 --- a/frontend/src/app/shared/pipes/http-error-pipe/http-error.pipe.ts +++ b/frontend/src/app/shared/pipes/http-error-pipe/http-error.pipe.ts @@ -4,6 +4,6 @@ import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'httpErrorMsg' }) export class HttpErrorPipe implements PipeTransform { transform(e: HttpErrorResponse | null): string { - return e ? `${e.status}: ${e.statusText}` : ''; + return e ? `${e.status} ${e.statusText}: ${e.error}` : ''; } } diff --git a/production/mempool-frontend-config.mainnet.json b/production/mempool-frontend-config.mainnet.json index fbbfc60cd..0465cb7d3 100644 --- a/production/mempool-frontend-config.mainnet.json +++ b/production/mempool-frontend-config.mainnet.json @@ -2,8 +2,8 @@ "OFFICIAL_MEMPOOL_SPACE": true, "TESTNET_ENABLED": true, "TESTNET4_ENABLED": true, - "LIQUID_ENABLED": true, - "LIQUID_TESTNET_ENABLED": true, + "LIQUID_ENABLED": false, + "LIQUID_TESTNET_ENABLED": false, "BISQ_ENABLED": true, "BISQ_SEPARATE_BACKEND": true, "SIGNET_ENABLED": true,