@keplr-wallet/stores 0.13.35 → 0.13.37

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.
@@ -10,6 +10,7 @@ type Cache = {
10
10
  notFound: true;
11
11
  timestamp: number;
12
12
  };
13
+ export declare function isBlockedTokenFactoryAtomCurrency(currency: Pick<Currency, "coinDenom" | "coinMinimalDenom">): boolean;
13
14
  export declare class TokenFactoryCurrencyRegistrar {
14
15
  protected readonly kvStore: KVStore;
15
16
  protected readonly cacheDuration: number;
@@ -15,10 +15,47 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
15
15
  });
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.TokenFactoryCurrencyRegistrar = void 0;
18
+ exports.TokenFactoryCurrencyRegistrar = exports.isBlockedTokenFactoryAtomCurrency = void 0;
19
19
  const common_1 = require("@keplr-wallet/common");
20
20
  const mobx_1 = require("mobx");
21
21
  const cosmos_1 = require("@keplr-wallet/cosmos");
22
+ function getTokenFactorySubdenom(coinMinimalDenom) {
23
+ const prefix = "factory/";
24
+ if (!coinMinimalDenom.startsWith(prefix)) {
25
+ return;
26
+ }
27
+ const index = coinMinimalDenom.indexOf("/", prefix.length);
28
+ if (index < 0) {
29
+ return;
30
+ }
31
+ return coinMinimalDenom.slice(index + 1);
32
+ }
33
+ const ALLOWED_TOKEN_FACTORY_ATOM_DENOMS = new Set([
34
+ // Exact-denom allowlist for known legit ATOM-related token-factory assets,
35
+ // sourced from cosmos/chain-registry assetlists.
36
+ "factory/kujira1h9f3k54j060pzlnea8ep8qfymsmwl5yhwc5hqept5p2esqzve7tq2ghnm4/ulp",
37
+ "factory/kujira13my0qtm2a8jp0wg8uzg49tyn4zcea8scy3dc7ghn8z9eys08yzls49ymdm/ulp",
38
+ "factory/kujira1yncutssgh2vj9scaymtteg949hwcft07c6qmgarxnaf04yesq3jsn6g2uv/ulp",
39
+ "factory/neutron1shwxlkpdjd8h5wdtrykypwd2v62z5glr95yp0etdcspkkjwm5meq82ndxs/amatom",
40
+ "factory/neutron13lkh47msw28yynspc5rnmty3yktk43wc3dsv0l/ATOM1KLFG",
41
+ "factory/neutron1k6hr0f83e7un2wjf29cspk7j69jrnskk65k3ek2nj9dztrlzpj6q00rtsa/udatom",
42
+ "factory/neutron15lku24mqhvy4v4gryrqs4662n9v9q4ux9tayn89cmdzldjcgawushxvm76/amatom",
43
+ "factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqatom",
44
+ ]);
45
+ function isBlockedTokenFactoryAtomCurrency(currency) {
46
+ const denomHelper = new common_1.DenomHelper(currency.coinMinimalDenom);
47
+ if (denomHelper.type !== "native" ||
48
+ !denomHelper.denom.startsWith("factory/")) {
49
+ return false;
50
+ }
51
+ if (ALLOWED_TOKEN_FACTORY_ATOM_DENOMS.has(denomHelper.denom)) {
52
+ return false;
53
+ }
54
+ const subdenom = getTokenFactorySubdenom(denomHelper.denom);
55
+ return ((subdenom === null || subdenom === void 0 ? void 0 : subdenom.toLowerCase().includes("atom")) === true ||
56
+ currency.coinDenom.toLowerCase().includes("atom"));
57
+ }
58
+ exports.isBlockedTokenFactoryAtomCurrency = isBlockedTokenFactoryAtomCurrency;
22
59
  class TokenFactoryCurrencyRegistrar {
23
60
  constructor(kvStore, cacheDuration = 24 * 3600 * 1000, // 1 days
24
61
  failedCacheDuration = 1 * 3600 * 1000, // 1 hours
@@ -122,6 +159,14 @@ class TokenFactoryCurrencyRegistrar {
122
159
  notFound: true,
123
160
  };
124
161
  }
162
+ if (isBlockedTokenFactoryAtomCurrency(cached.currency)) {
163
+ return {
164
+ res: undefined,
165
+ isFetching: false,
166
+ fromCache: true,
167
+ notFound: true,
168
+ };
169
+ }
125
170
  if (!staled) {
126
171
  return {
127
172
  res: cached.currency,
@@ -148,6 +193,14 @@ class TokenFactoryCurrencyRegistrar {
148
193
  notFound: true,
149
194
  };
150
195
  }
196
+ if (isBlockedTokenFactoryAtomCurrency(queryCurrency.response.data)) {
197
+ return {
198
+ res: undefined,
199
+ isFetching: isGlobalFetching,
200
+ fromCache: false,
201
+ notFound: true,
202
+ };
203
+ }
151
204
  return {
152
205
  res: queryCurrency.response.data,
153
206
  isFetching: isGlobalFetching,
@@ -1 +1 @@
1
- {"version":3,"file":"currency-registrar.js","sourceRoot":"","sources":["../../src/token-factory/currency-registrar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"currency-registrar.js","sourceRoot":"","sources":["../../src/token-factory/currency-registrar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const currency_registrar_1 = require("./currency-registrar");
4
+ describe("TokenFactoryCurrencyRegistrar", () => {
5
+ describe("isBlockedTokenFactoryAtomCurrency", () => {
6
+ it("blocks token factory currencies with atom in the subdenom", () => {
7
+ expect((0, currency_registrar_1.isBlockedTokenFactoryAtomCurrency)({
8
+ coinDenom: "ATOMAP",
9
+ coinMinimalDenom: "factory/neutron1d59rkwmkt6f46aeyra6zfk6ghehlsqc2qevw96c6x4xfmyk4qxhsjh8ajn/ATOMAP",
10
+ })).toBe(true);
11
+ expect((0, currency_registrar_1.isBlockedTokenFactoryAtomCurrency)({
12
+ coinDenom: "REWARDATOM",
13
+ coinMinimalDenom: "factory/neutron1d59rkwmkt6f46aeyra6zfk6ghehlsqc2qevw96c6x4xfmyk4qxhsjh8ajn/REWARDATOM",
14
+ })).toBe(true);
15
+ });
16
+ it("blocks token factory currencies with atom in the display denom", () => {
17
+ expect((0, currency_registrar_1.isBlockedTokenFactoryAtomCurrency)({
18
+ coinDenom: "ATOMEREWARD",
19
+ coinMinimalDenom: "factory/neutron1d59rkwmkt6f46aeyra6zfk6ghehlsqc2qevw96c6x4xfmyk4qxhsjh8ajn/reward",
20
+ })).toBe(true);
21
+ });
22
+ it("does not block non-token-factory atom currencies", () => {
23
+ expect((0, currency_registrar_1.isBlockedTokenFactoryAtomCurrency)({
24
+ coinDenom: "stATOM",
25
+ coinMinimalDenom: "ibc/abc",
26
+ })).toBe(false);
27
+ });
28
+ it("does not block unrelated token factory currencies", () => {
29
+ expect((0, currency_registrar_1.isBlockedTokenFactoryAtomCurrency)({
30
+ coinDenom: "NTRN",
31
+ coinMinimalDenom: "factory/neutron1d59rkwmkt6f46aeyra6zfk6ghehlsqc2qevw96c6x4xfmyk4qxhsjh8ajn/NTRN",
32
+ })).toBe(false);
33
+ });
34
+ it("does not block chain-registry registered atom-related factory currencies", () => {
35
+ const allowedCurrencies = [
36
+ {
37
+ coinDenom: "LP-ATOM-MNTA",
38
+ coinMinimalDenom: "factory/kujira1h9f3k54j060pzlnea8ep8qfymsmwl5yhwc5hqept5p2esqzve7tq2ghnm4/ulp",
39
+ },
40
+ {
41
+ coinDenom: "LP-ATOM-USDC",
42
+ coinMinimalDenom: "factory/kujira13my0qtm2a8jp0wg8uzg49tyn4zcea8scy3dc7ghn8z9eys08yzls49ymdm/ulp",
43
+ },
44
+ {
45
+ coinDenom: "LP-ATOM-USK",
46
+ coinMinimalDenom: "factory/kujira1yncutssgh2vj9scaymtteg949hwcft07c6qmgarxnaf04yesq3jsn6g2uv/ulp",
47
+ },
48
+ {
49
+ coinDenom: "amATOM",
50
+ coinMinimalDenom: "factory/neutron1shwxlkpdjd8h5wdtrykypwd2v62z5glr95yp0etdcspkkjwm5meq82ndxs/amatom",
51
+ },
52
+ {
53
+ coinDenom: "ATOM1KLFG",
54
+ coinMinimalDenom: "factory/neutron13lkh47msw28yynspc5rnmty3yktk43wc3dsv0l/ATOM1KLFG",
55
+ },
56
+ {
57
+ coinDenom: "dATOM",
58
+ coinMinimalDenom: "factory/neutron1k6hr0f83e7un2wjf29cspk7j69jrnskk65k3ek2nj9dztrlzpj6q00rtsa/udatom",
59
+ },
60
+ {
61
+ coinDenom: "amATOM",
62
+ coinMinimalDenom: "factory/neutron15lku24mqhvy4v4gryrqs4662n9v9q4ux9tayn89cmdzldjcgawushxvm76/amatom",
63
+ },
64
+ {
65
+ coinDenom: "sqATOM",
66
+ coinMinimalDenom: "factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqatom",
67
+ },
68
+ ];
69
+ for (const currency of allowedCurrencies) {
70
+ expect((0, currency_registrar_1.isBlockedTokenFactoryAtomCurrency)(currency)).toBe(false);
71
+ }
72
+ });
73
+ });
74
+ });
75
+ //# sourceMappingURL=currency-registrar.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-registrar.spec.js","sourceRoot":"","sources":["../../src/token-factory/currency-registrar.spec.ts"],"names":[],"mappings":";;AAAA,6DAAyE;AAEzE,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,CACJ,IAAA,sDAAiC,EAAC;gBAChC,SAAS,EAAE,QAAQ;gBACnB,gBAAgB,EACd,mFAAmF;aACtF,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,MAAM,CACJ,IAAA,sDAAiC,EAAC;gBAChC,SAAS,EAAE,YAAY;gBACvB,gBAAgB,EACd,uFAAuF;aAC1F,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,CACJ,IAAA,sDAAiC,EAAC;gBAChC,SAAS,EAAE,aAAa;gBACxB,gBAAgB,EACd,mFAAmF;aACtF,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,CACJ,IAAA,sDAAiC,EAAC;gBAChC,SAAS,EAAE,QAAQ;gBACnB,gBAAgB,EAAE,SAAS;aAC5B,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,CACJ,IAAA,sDAAiC,EAAC;gBAChC,SAAS,EAAE,MAAM;gBACjB,gBAAgB,EACd,iFAAiF;aACpF,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;YAClF,MAAM,iBAAiB,GAAG;gBACxB;oBACE,SAAS,EAAE,cAAc;oBACzB,gBAAgB,EACd,+EAA+E;iBAClF;gBACD;oBACE,SAAS,EAAE,cAAc;oBACzB,gBAAgB,EACd,+EAA+E;iBAClF;gBACD;oBACE,SAAS,EAAE,aAAa;oBACxB,gBAAgB,EACd,+EAA+E;iBAClF;gBACD;oBACE,SAAS,EAAE,QAAQ;oBACnB,gBAAgB,EACd,mFAAmF;iBACtF;gBACD;oBACE,SAAS,EAAE,WAAW;oBACtB,gBAAgB,EACd,kEAAkE;iBACrE;gBACD;oBACE,SAAS,EAAE,OAAO;oBAClB,gBAAgB,EACd,mFAAmF;iBACtF;gBACD;oBACE,SAAS,EAAE,QAAQ;oBACnB,gBAAgB,EACd,mFAAmF;iBACtF;gBACD;oBACE,SAAS,EAAE,QAAQ;oBACnB,gBAAgB,EACd,4DAA4D;iBAC/D;aACF,CAAC;YAEF,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;gBACxC,MAAM,CAAC,IAAA,sDAAiC,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACjE;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/stores",
3
- "version": "0.13.35",
3
+ "version": "0.13.37",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -21,18 +21,18 @@
21
21
  "typecheck": "npx tsc -p tsconfig.check.json"
22
22
  },
23
23
  "devDependencies": {
24
- "@keplr-wallet/provider-mock": "0.13.35"
24
+ "@keplr-wallet/provider-mock": "0.13.37"
25
25
  },
26
26
  "dependencies": {
27
27
  "@ethersproject/address": "^5.7.0",
28
- "@keplr-wallet/common": "0.13.35",
29
- "@keplr-wallet/cosmos": "0.13.35",
30
- "@keplr-wallet/crypto": "0.13.35",
31
- "@keplr-wallet/mobx-utils": "0.13.35",
32
- "@keplr-wallet/proto-types": "0.13.35",
33
- "@keplr-wallet/simple-fetch": "0.13.35",
34
- "@keplr-wallet/types": "0.13.35",
35
- "@keplr-wallet/unit": "0.13.35",
28
+ "@keplr-wallet/common": "0.13.37",
29
+ "@keplr-wallet/cosmos": "0.13.37",
30
+ "@keplr-wallet/crypto": "0.13.37",
31
+ "@keplr-wallet/mobx-utils": "0.13.37",
32
+ "@keplr-wallet/proto-types": "0.13.37",
33
+ "@keplr-wallet/simple-fetch": "0.13.37",
34
+ "@keplr-wallet/types": "0.13.37",
35
+ "@keplr-wallet/unit": "0.13.37",
36
36
  "buffer": "^6.0.3",
37
37
  "deepmerge": "^4.2.2",
38
38
  "eventemitter3": "^4.0.7",
@@ -44,5 +44,5 @@
44
44
  "mobx": "^6",
45
45
  "mobx-utils": "^6"
46
46
  },
47
- "gitHead": "d6feb9514cc94558d0567593f426ea03c3cabaf0"
47
+ "gitHead": "128f19e42aa0fea5cff29c860d7fa7534a2aa955"
48
48
  }
@@ -0,0 +1,101 @@
1
+ import { isBlockedTokenFactoryAtomCurrency } from "./currency-registrar";
2
+
3
+ describe("TokenFactoryCurrencyRegistrar", () => {
4
+ describe("isBlockedTokenFactoryAtomCurrency", () => {
5
+ it("blocks token factory currencies with atom in the subdenom", () => {
6
+ expect(
7
+ isBlockedTokenFactoryAtomCurrency({
8
+ coinDenom: "ATOMAP",
9
+ coinMinimalDenom:
10
+ "factory/neutron1d59rkwmkt6f46aeyra6zfk6ghehlsqc2qevw96c6x4xfmyk4qxhsjh8ajn/ATOMAP",
11
+ })
12
+ ).toBe(true);
13
+
14
+ expect(
15
+ isBlockedTokenFactoryAtomCurrency({
16
+ coinDenom: "REWARDATOM",
17
+ coinMinimalDenom:
18
+ "factory/neutron1d59rkwmkt6f46aeyra6zfk6ghehlsqc2qevw96c6x4xfmyk4qxhsjh8ajn/REWARDATOM",
19
+ })
20
+ ).toBe(true);
21
+ });
22
+
23
+ it("blocks token factory currencies with atom in the display denom", () => {
24
+ expect(
25
+ isBlockedTokenFactoryAtomCurrency({
26
+ coinDenom: "ATOMEREWARD",
27
+ coinMinimalDenom:
28
+ "factory/neutron1d59rkwmkt6f46aeyra6zfk6ghehlsqc2qevw96c6x4xfmyk4qxhsjh8ajn/reward",
29
+ })
30
+ ).toBe(true);
31
+ });
32
+
33
+ it("does not block non-token-factory atom currencies", () => {
34
+ expect(
35
+ isBlockedTokenFactoryAtomCurrency({
36
+ coinDenom: "stATOM",
37
+ coinMinimalDenom: "ibc/abc",
38
+ })
39
+ ).toBe(false);
40
+ });
41
+
42
+ it("does not block unrelated token factory currencies", () => {
43
+ expect(
44
+ isBlockedTokenFactoryAtomCurrency({
45
+ coinDenom: "NTRN",
46
+ coinMinimalDenom:
47
+ "factory/neutron1d59rkwmkt6f46aeyra6zfk6ghehlsqc2qevw96c6x4xfmyk4qxhsjh8ajn/NTRN",
48
+ })
49
+ ).toBe(false);
50
+ });
51
+
52
+ it("does not block chain-registry registered atom-related factory currencies", () => {
53
+ const allowedCurrencies = [
54
+ {
55
+ coinDenom: "LP-ATOM-MNTA",
56
+ coinMinimalDenom:
57
+ "factory/kujira1h9f3k54j060pzlnea8ep8qfymsmwl5yhwc5hqept5p2esqzve7tq2ghnm4/ulp",
58
+ },
59
+ {
60
+ coinDenom: "LP-ATOM-USDC",
61
+ coinMinimalDenom:
62
+ "factory/kujira13my0qtm2a8jp0wg8uzg49tyn4zcea8scy3dc7ghn8z9eys08yzls49ymdm/ulp",
63
+ },
64
+ {
65
+ coinDenom: "LP-ATOM-USK",
66
+ coinMinimalDenom:
67
+ "factory/kujira1yncutssgh2vj9scaymtteg949hwcft07c6qmgarxnaf04yesq3jsn6g2uv/ulp",
68
+ },
69
+ {
70
+ coinDenom: "amATOM",
71
+ coinMinimalDenom:
72
+ "factory/neutron1shwxlkpdjd8h5wdtrykypwd2v62z5glr95yp0etdcspkkjwm5meq82ndxs/amatom",
73
+ },
74
+ {
75
+ coinDenom: "ATOM1KLFG",
76
+ coinMinimalDenom:
77
+ "factory/neutron13lkh47msw28yynspc5rnmty3yktk43wc3dsv0l/ATOM1KLFG",
78
+ },
79
+ {
80
+ coinDenom: "dATOM",
81
+ coinMinimalDenom:
82
+ "factory/neutron1k6hr0f83e7un2wjf29cspk7j69jrnskk65k3ek2nj9dztrlzpj6q00rtsa/udatom",
83
+ },
84
+ {
85
+ coinDenom: "amATOM",
86
+ coinMinimalDenom:
87
+ "factory/neutron15lku24mqhvy4v4gryrqs4662n9v9q4ux9tayn89cmdzldjcgawushxvm76/amatom",
88
+ },
89
+ {
90
+ coinDenom: "sqATOM",
91
+ coinMinimalDenom:
92
+ "factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqatom",
93
+ },
94
+ ];
95
+
96
+ for (const currency of allowedCurrencies) {
97
+ expect(isBlockedTokenFactoryAtomCurrency(currency)).toBe(false);
98
+ }
99
+ });
100
+ });
101
+ });
@@ -16,6 +16,55 @@ type Cache =
16
16
  timestamp: number;
17
17
  };
18
18
 
19
+ function getTokenFactorySubdenom(coinMinimalDenom: string): string | undefined {
20
+ const prefix = "factory/";
21
+ if (!coinMinimalDenom.startsWith(prefix)) {
22
+ return;
23
+ }
24
+
25
+ const index = coinMinimalDenom.indexOf("/", prefix.length);
26
+ if (index < 0) {
27
+ return;
28
+ }
29
+
30
+ return coinMinimalDenom.slice(index + 1);
31
+ }
32
+
33
+ const ALLOWED_TOKEN_FACTORY_ATOM_DENOMS = new Set<string>([
34
+ // Exact-denom allowlist for known legit ATOM-related token-factory assets,
35
+ // sourced from cosmos/chain-registry assetlists.
36
+ "factory/kujira1h9f3k54j060pzlnea8ep8qfymsmwl5yhwc5hqept5p2esqzve7tq2ghnm4/ulp",
37
+ "factory/kujira13my0qtm2a8jp0wg8uzg49tyn4zcea8scy3dc7ghn8z9eys08yzls49ymdm/ulp",
38
+ "factory/kujira1yncutssgh2vj9scaymtteg949hwcft07c6qmgarxnaf04yesq3jsn6g2uv/ulp",
39
+ "factory/neutron1shwxlkpdjd8h5wdtrykypwd2v62z5glr95yp0etdcspkkjwm5meq82ndxs/amatom",
40
+ "factory/neutron13lkh47msw28yynspc5rnmty3yktk43wc3dsv0l/ATOM1KLFG",
41
+ "factory/neutron1k6hr0f83e7un2wjf29cspk7j69jrnskk65k3ek2nj9dztrlzpj6q00rtsa/udatom",
42
+ "factory/neutron15lku24mqhvy4v4gryrqs4662n9v9q4ux9tayn89cmdzldjcgawushxvm76/amatom",
43
+ "factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqatom",
44
+ ]);
45
+
46
+ export function isBlockedTokenFactoryAtomCurrency(
47
+ currency: Pick<Currency, "coinDenom" | "coinMinimalDenom">
48
+ ): boolean {
49
+ const denomHelper = new DenomHelper(currency.coinMinimalDenom);
50
+ if (
51
+ denomHelper.type !== "native" ||
52
+ !denomHelper.denom.startsWith("factory/")
53
+ ) {
54
+ return false;
55
+ }
56
+
57
+ if (ALLOWED_TOKEN_FACTORY_ATOM_DENOMS.has(denomHelper.denom)) {
58
+ return false;
59
+ }
60
+
61
+ const subdenom = getTokenFactorySubdenom(denomHelper.denom);
62
+ return (
63
+ subdenom?.toLowerCase().includes("atom") === true ||
64
+ currency.coinDenom.toLowerCase().includes("atom")
65
+ );
66
+ }
67
+
19
68
  export class TokenFactoryCurrencyRegistrar {
20
69
  @observable
21
70
  public _isInitialized = false;
@@ -152,6 +201,14 @@ export class TokenFactoryCurrencyRegistrar {
152
201
  notFound: true,
153
202
  };
154
203
  }
204
+ if (isBlockedTokenFactoryAtomCurrency(cached.currency)) {
205
+ return {
206
+ res: undefined,
207
+ isFetching: false,
208
+ fromCache: true,
209
+ notFound: true,
210
+ };
211
+ }
155
212
  if (!staled) {
156
213
  return {
157
214
  res: cached.currency,
@@ -185,6 +242,15 @@ export class TokenFactoryCurrencyRegistrar {
185
242
  };
186
243
  }
187
244
 
245
+ if (isBlockedTokenFactoryAtomCurrency(queryCurrency.response.data)) {
246
+ return {
247
+ res: undefined,
248
+ isFetching: isGlobalFetching,
249
+ fromCache: false,
250
+ notFound: true,
251
+ };
252
+ }
253
+
188
254
  return {
189
255
  res: queryCurrency.response.data,
190
256
  isFetching: isGlobalFetching,