From 0148be2e132874c40365452bd7902de5b3318d0d Mon Sep 17 00:00:00 2001 From: Aleksandr Kraiz Date: Wed, 23 Aug 2023 19:31:54 +0400 Subject: [PATCH] Fix cache --- package.json | 2 +- src/Orion/bridge/index.ts | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index d149879..e76b4a5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.65", + "version": "0.19.66", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Orion/bridge/index.ts b/src/Orion/bridge/index.ts index 8a2c0b3..15fba2f 100644 --- a/src/Orion/bridge/index.ts +++ b/src/Orion/bridge/index.ts @@ -16,7 +16,7 @@ export const EXPIRATION_DAYS = 4; type ExternalAtomicsData = Awaited>; export default class Bridge { - readonly EXTERNAL_ATOMICS_DATA_CACHE_TIME = 5 * 1000; // 5 seconds + readonly EXTERNAL_ATOMICS_DATA_CACHE_TIME_MS = 5 * 1000; // 5 seconds private externalAtomicSwaps: Partial data lastUpdate: number data: ExternalAtomicsData @@ -212,15 +212,20 @@ export default class Bridge { } async getHistory(address: string, limit = 1000) { - const cached = this.externalAtomicSwaps[address]; - if (cached !== undefined && Date.now() - cached.lastUpdate < this.EXTERNAL_ATOMICS_DATA_CACHE_TIME) { - return cached.data; + const cachedData = this.externalAtomicSwaps[address]; + let data: ExternalAtomicsData | undefined; + if (cachedData !== undefined) { + const cacheIsExpired = cachedData.lastUpdate + this.EXTERNAL_ATOMICS_DATA_CACHE_TIME_MS < Date.now(); + if (!cacheIsExpired) data = cachedData.data; + } + + if (data === undefined) { + data = await getHistory(this.unitsArray, address, limit); + this.externalAtomicSwaps[address] = { + lastUpdate: Date.now(), + data, + }; } - const data = await getHistory(this.unitsArray, address, limit); - this.externalAtomicSwaps[address] = { - lastUpdate: Date.now(), - data, - }; return data; }