@keplr-wallet/stores-eth 0.12.229 → 0.12.230
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="lodash" />
|
|
1
2
|
import { AppCurrency } from "@keplr-wallet/types";
|
|
2
3
|
import { ChainStore, IQueriesStore } from "@keplr-wallet/stores";
|
|
3
4
|
import { KVStore } from "@keplr-wallet/common";
|
|
@@ -23,6 +24,7 @@ export declare class ERC20CurrencyRegistrar {
|
|
|
23
24
|
_isInitialized: boolean;
|
|
24
25
|
protected cacheERC20Metadata: Map<string, CurrencyCache>;
|
|
25
26
|
protected staledERC20Metadata: Map<string, CurrencyCache>;
|
|
27
|
+
protected debouncedSetCacheERC20MetadataToDB: import("lodash").DebouncedFunc<() => void>;
|
|
26
28
|
constructor(kvStore: KVStore, cacheDuration: number, // 1 days
|
|
27
29
|
failedCacheDuration: number, // 1 hours
|
|
28
30
|
chainStore: ChainStore, queriesStore: IQueriesStore<EthereumQueries & KeplrETCQueries>);
|
|
@@ -48,5 +50,6 @@ export declare class ERC20CurrencyRegistrar {
|
|
|
48
50
|
staled: boolean;
|
|
49
51
|
};
|
|
50
52
|
protected setCacheERC20Metadata(chainId: string, contractAddress: string, cache: CurrencyCache): void;
|
|
53
|
+
protected setCacheERC20MetadataToDB(): void;
|
|
51
54
|
}
|
|
52
55
|
export {};
|
|
@@ -14,10 +14,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
14
14
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
15
|
});
|
|
16
16
|
};
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
17
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
21
|
exports.ERC20CurrencyRegistrar = void 0;
|
|
19
22
|
const common_1 = require("@keplr-wallet/common");
|
|
20
23
|
const mobx_1 = require("mobx");
|
|
24
|
+
const lodash_debounce_1 = __importDefault(require("lodash.debounce"));
|
|
21
25
|
class ERC20CurrencyRegistrar {
|
|
22
26
|
constructor(kvStore, cacheDuration = 24 * 3600 * 1000, // 1 days
|
|
23
27
|
failedCacheDuration = 1 * 3600 * 1000, // 1 hours
|
|
@@ -30,6 +34,7 @@ class ERC20CurrencyRegistrar {
|
|
|
30
34
|
this._isInitialized = false;
|
|
31
35
|
this.cacheERC20Metadata = new Map();
|
|
32
36
|
this.staledERC20Metadata = new Map();
|
|
37
|
+
this.debouncedSetCacheERC20MetadataToDB = (0, lodash_debounce_1.default)(this.setCacheERC20MetadataToDB.bind(this), 1000);
|
|
33
38
|
this.chainStore.registerCurrencyRegistrar(this.currencyRegistrar.bind(this));
|
|
34
39
|
(0, mobx_1.makeObservable)(this);
|
|
35
40
|
this.init();
|
|
@@ -235,11 +240,7 @@ class ERC20CurrencyRegistrar {
|
|
|
235
240
|
if (res.notFound) {
|
|
236
241
|
if (Date.now() - res.timestamp > this.failedCacheDuration) {
|
|
237
242
|
this.cacheERC20Metadata.delete(key);
|
|
238
|
-
|
|
239
|
-
const dbKey = `cacheERC20Metadata-v2`;
|
|
240
|
-
const obj = Object.fromEntries(this.cacheERC20Metadata);
|
|
241
|
-
this.kvStore.set(dbKey, obj);
|
|
242
|
-
}
|
|
243
|
+
this.debouncedSetCacheERC20MetadataToDB();
|
|
243
244
|
res = undefined;
|
|
244
245
|
staled = false;
|
|
245
246
|
}
|
|
@@ -248,9 +249,7 @@ class ERC20CurrencyRegistrar {
|
|
|
248
249
|
this.cacheERC20Metadata.delete(key);
|
|
249
250
|
const savedStaled = this.staledERC20Metadata.has(key);
|
|
250
251
|
if (!savedStaled) {
|
|
251
|
-
|
|
252
|
-
const obj = Object.fromEntries(this.cacheERC20Metadata);
|
|
253
|
-
this.kvStore.set(dbKey, obj);
|
|
252
|
+
this.debouncedSetCacheERC20MetadataToDB();
|
|
254
253
|
this.staledERC20Metadata.set(key, res);
|
|
255
254
|
}
|
|
256
255
|
staled = true;
|
|
@@ -264,15 +263,16 @@ class ERC20CurrencyRegistrar {
|
|
|
264
263
|
setCacheERC20Metadata(chainId, contractAddress, cache) {
|
|
265
264
|
const key = `${chainId}/${contractAddress}`;
|
|
266
265
|
this.cacheERC20Metadata.set(key, cache);
|
|
267
|
-
|
|
268
|
-
const dbKey = `cacheERC20Metadata-v2`;
|
|
269
|
-
const obj = Object.fromEntries(this.cacheERC20Metadata);
|
|
270
|
-
this.kvStore.set(dbKey, obj);
|
|
271
|
-
}
|
|
266
|
+
this.debouncedSetCacheERC20MetadataToDB();
|
|
272
267
|
if (this.staledERC20Metadata.has(key)) {
|
|
273
268
|
this.staledERC20Metadata.set(key, cache);
|
|
274
269
|
}
|
|
275
270
|
}
|
|
271
|
+
setCacheERC20MetadataToDB() {
|
|
272
|
+
const dbKey = `cacheERC20Metadata-v2`;
|
|
273
|
+
const obj = Object.fromEntries(this.cacheERC20Metadata);
|
|
274
|
+
this.kvStore.set(dbKey, obj);
|
|
275
|
+
}
|
|
276
276
|
}
|
|
277
277
|
__decorate([
|
|
278
278
|
mobx_1.observable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency-registrar.js","sourceRoot":"","sources":["../src/currency-registrar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"currency-registrar.js","sourceRoot":"","sources":["../src/currency-registrar.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keplr-wallet/stores-eth",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.230",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"author": "chainapsis",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -21,18 +21,22 @@
|
|
|
21
21
|
"@ethersproject/bytes": "^5.7.0",
|
|
22
22
|
"@ethersproject/transactions": "^5.7.0",
|
|
23
23
|
"@ethersproject/units": "^5.7.0",
|
|
24
|
-
"@keplr-wallet/common": "0.12.
|
|
25
|
-
"@keplr-wallet/simple-fetch": "0.12.
|
|
26
|
-
"@keplr-wallet/stores": "0.12.
|
|
27
|
-
"@keplr-wallet/stores-etc": "0.12.
|
|
28
|
-
"@keplr-wallet/types": "0.12.
|
|
29
|
-
"@keplr-wallet/unit": "0.12.
|
|
24
|
+
"@keplr-wallet/common": "0.12.230",
|
|
25
|
+
"@keplr-wallet/simple-fetch": "0.12.230",
|
|
26
|
+
"@keplr-wallet/stores": "0.12.230",
|
|
27
|
+
"@keplr-wallet/stores-etc": "0.12.230",
|
|
28
|
+
"@keplr-wallet/types": "0.12.230",
|
|
29
|
+
"@keplr-wallet/unit": "0.12.230",
|
|
30
30
|
"big-integer": "^1.6.48",
|
|
31
|
+
"lodash.debounce": "^4.0.8",
|
|
31
32
|
"utility-types": "^3.10.0"
|
|
32
33
|
},
|
|
33
34
|
"peerDependencies": {
|
|
34
35
|
"mobx": "^6",
|
|
35
36
|
"mobx-utils": "^6"
|
|
36
37
|
},
|
|
37
|
-
"
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/lodash.debounce": "^4"
|
|
40
|
+
},
|
|
41
|
+
"gitHead": "000cab79065eb25adc8d5906f7ddf552a5e657d8"
|
|
38
42
|
}
|
|
@@ -4,6 +4,7 @@ import { DenomHelper, KVStore } from "@keplr-wallet/common";
|
|
|
4
4
|
import { makeObservable, observable, runInAction } from "mobx";
|
|
5
5
|
import { EthereumQueries } from "./queries";
|
|
6
6
|
import { KeplrETCQueries } from "@keplr-wallet/stores-etc";
|
|
7
|
+
import debounce from "lodash.debounce";
|
|
7
8
|
|
|
8
9
|
type CurrencyCache =
|
|
9
10
|
| {
|
|
@@ -26,6 +27,11 @@ export class ERC20CurrencyRegistrar {
|
|
|
26
27
|
protected cacheERC20Metadata: Map<string, CurrencyCache> = new Map();
|
|
27
28
|
protected staledERC20Metadata: Map<string, CurrencyCache> = new Map();
|
|
28
29
|
|
|
30
|
+
protected debouncedSetCacheERC20MetadataToDB = debounce(
|
|
31
|
+
this.setCacheERC20MetadataToDB.bind(this),
|
|
32
|
+
1000
|
|
33
|
+
);
|
|
34
|
+
|
|
29
35
|
constructor(
|
|
30
36
|
protected readonly kvStore: KVStore,
|
|
31
37
|
protected readonly cacheDuration: number = 24 * 3600 * 1000, // 1 days
|
|
@@ -296,11 +302,9 @@ export class ERC20CurrencyRegistrar {
|
|
|
296
302
|
if (res.notFound) {
|
|
297
303
|
if (Date.now() - res.timestamp > this.failedCacheDuration) {
|
|
298
304
|
this.cacheERC20Metadata.delete(key);
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
this.kvStore.set<Record<string, CurrencyCache>>(dbKey, obj);
|
|
303
|
-
}
|
|
305
|
+
|
|
306
|
+
this.debouncedSetCacheERC20MetadataToDB();
|
|
307
|
+
|
|
304
308
|
res = undefined;
|
|
305
309
|
staled = false;
|
|
306
310
|
}
|
|
@@ -309,9 +313,7 @@ export class ERC20CurrencyRegistrar {
|
|
|
309
313
|
|
|
310
314
|
const savedStaled = this.staledERC20Metadata.has(key);
|
|
311
315
|
if (!savedStaled) {
|
|
312
|
-
|
|
313
|
-
const obj = Object.fromEntries(this.cacheERC20Metadata);
|
|
314
|
-
this.kvStore.set<Record<string, CurrencyCache>>(dbKey, obj);
|
|
316
|
+
this.debouncedSetCacheERC20MetadataToDB();
|
|
315
317
|
|
|
316
318
|
this.staledERC20Metadata.set(key, res);
|
|
317
319
|
}
|
|
@@ -334,14 +336,17 @@ export class ERC20CurrencyRegistrar {
|
|
|
334
336
|
const key = `${chainId}/${contractAddress}`;
|
|
335
337
|
|
|
336
338
|
this.cacheERC20Metadata.set(key, cache);
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
const obj = Object.fromEntries(this.cacheERC20Metadata);
|
|
340
|
-
this.kvStore.set<Record<string, CurrencyCache>>(dbKey, obj);
|
|
341
|
-
}
|
|
339
|
+
|
|
340
|
+
this.debouncedSetCacheERC20MetadataToDB();
|
|
342
341
|
|
|
343
342
|
if (this.staledERC20Metadata.has(key)) {
|
|
344
343
|
this.staledERC20Metadata.set(key, cache);
|
|
345
344
|
}
|
|
346
345
|
}
|
|
346
|
+
|
|
347
|
+
protected setCacheERC20MetadataToDB() {
|
|
348
|
+
const dbKey = `cacheERC20Metadata-v2`;
|
|
349
|
+
const obj = Object.fromEntries(this.cacheERC20Metadata);
|
|
350
|
+
this.kvStore.set<Record<string, CurrencyCache>>(dbKey, obj);
|
|
351
|
+
}
|
|
347
352
|
}
|