From b8410f00d96f0924a2e94c0ad471bdcc6daf397e Mon Sep 17 00:00:00 2001 From: nymkappa Date: Wed, 19 Jan 2022 13:03:43 +0900 Subject: [PATCH] Fix xxxWindowPreference management --- backend/README.md | 35 +++++++------------ backend/src/repositories/BlocksRepository.ts | 17 --------- .../pool-ranking/pool-ranking.component.ts | 1 + frontend/src/app/services/storage.service.ts | 9 +++-- 4 files changed, 20 insertions(+), 42 deletions(-) diff --git a/backend/README.md b/backend/README.md index a6d0fb60f..1441319b9 100644 --- a/backend/README.md +++ b/backend/README.md @@ -2,32 +2,21 @@ The backend is static. Typescript scripts are compiled into the `dist` folder and served through a node web server. -You can avoid the manual shutdown/recompile/restart command line cycle by setting up watchers. +You can avoid the manual shutdown/recompile/restart command line cycle by using a watcher. Make sure you are in the `backend` directory `cd backend`. -1. Install nodemon +1. Install nodemon and ts-node + ``` -sudo npm install -g nodemon -``` -2. [Optional] Add the following configuration into `tsconfig.json`. You can find watch options here https://www.typescriptlang.org/docs/handbook/configuring-watch.html -``` - "watchOptions": { - "watchFile": "useFsEvents", - "watchDirectory": "useFsEvents", - "fallbackPolling": "dynamicPriority", - "synchronousWatchDirectory": true, - "excludeDirectories": ["**/node_modules", "_build"], - "excludeFiles": ["build/fileWhichChangesOften.ts"] - } -``` -3. In one terminal, watch typescript scripts -``` -./node_modules/typescript/bin/tsc --watch -``` -4. In another terminal, watch compiled javascript -``` -nodemon --max-old-space-size=2048 dist/index.js +sudo npm install -g ts-node nodemon +``` + +2. Run the watcher + +> Note: You can find your npm global binary folder using `npm -g bin`, where nodemon will be installed. + +``` +nodemon src/index.ts --ignore cache/ ``` -Everytime you save a backend `.ts` file, `tsc` will recompile it and genereate a new static `.js` file in the `dist` folder. `nodemon` will detect this new file and restart the node web server automatically. diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index bbc701215..9ae41f536 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -38,29 +38,12 @@ class BlocksRepository { await connection.query(query, params); } catch (e) { - console.log(e); logger.err('$updateBlocksDatabase() error' + (e instanceof Error ? e.message : e)); } connection.release(); } - /** - * Check if a block has already been indexed in the database. Query the databse directly. - * This can be cached/optimized if required later on to avoid too many db queries. - */ - public async $isBlockAlreadyIndexed(blockHeight: number) { - const connection = await DB.pool.getConnection(); - let exists = false; - - const query = `SELECT height from blocks where blocks.height = ${blockHeight}`; - const [rows]: any[] = await connection.query(query); - exists = rows.length === 1; - connection.release(); - - return exists; - } - /** * Get all block height that have not been indexed between [startHeight, endHeight] */ diff --git a/frontend/src/app/components/pool-ranking/pool-ranking.component.ts b/frontend/src/app/components/pool-ranking/pool-ranking.component.ts index b193c5690..ee2a597e3 100644 --- a/frontend/src/app/components/pool-ranking/pool-ranking.component.ts +++ b/frontend/src/app/components/pool-ranking/pool-ranking.component.ts @@ -78,6 +78,7 @@ export class PoolRankingComponent implements OnInit, OnDestroy { } onChangeWindowPreference(e) { + this.storageService.setValue('poolsWindowPreference', e.target.value); this.poolsWindowPreference = e.target.value; this.isLoading = true; this.refreshMiningStats(); diff --git a/frontend/src/app/services/storage.service.ts b/frontend/src/app/services/storage.service.ts index 6eff9d391..d4a24e790 100644 --- a/frontend/src/app/services/storage.service.ts +++ b/frontend/src/app/services/storage.service.ts @@ -13,12 +13,17 @@ export class StorageService { setDefaultValueIfNeeded(key: string, defaultValue: string) { let graphWindowPreference: string = this.getValue(key); if (graphWindowPreference === null) { // First visit to mempool.space - if (this.router.url.includes("graphs") || this.router.url.includes("pools")) { + if (this.router.url.includes('graphs') && key === 'graphWindowPreference' || + this.router.url.includes('pools') && key === 'poolsWindowPreference' + ) { this.setValue(key, this.route.snapshot.fragment ? this.route.snapshot.fragment : defaultValue); } else { this.setValue(key, defaultValue); } - } else if (this.router.url.includes("graphs") || this.router.url.includes("pools")) { // Visit a different graphs#fragment from last visit + } else if (this.router.url.includes('graphs') && key === 'graphWindowPreference' || + this.router.url.includes('pools') && key === 'poolsWindowPreference' + ) { + // Visit a different graphs#fragment from last visit if (this.route.snapshot.fragment !== null && graphWindowPreference !== this.route.snapshot.fragment) { this.setValue(key, this.route.snapshot.fragment); }