@keplr-wallet/stores 0.12.89 → 0.12.90

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.
@@ -5,19 +5,30 @@ export declare class ChainInfoImpl<C extends ChainInfo = ChainInfo> implements I
5
5
  getCurrencyRegistrar: CurrencyRegistrar;
6
6
  };
7
7
  protected _embedded: C;
8
- protected unknownDenoms: string[];
8
+ protected unknownDenoms: {
9
+ denom: string;
10
+ reaction: boolean;
11
+ }[];
9
12
  protected registeredCurrencies: AppCurrency[];
13
+ protected registeredCurrenciesNoReaction: AppCurrency[];
10
14
  protected registrationInProgressCurrencyMap: Map<string, boolean>;
11
15
  constructor(embedded: C, currencyRegistry: {
12
16
  getCurrencyRegistrar: CurrencyRegistrar;
13
17
  });
14
18
  addUnknownDenoms(...coinMinimalDenoms: string[]): void;
19
+ addUnknownDenomsWithoutReaction(...coinMinimalDenoms: string[]): void;
20
+ protected addUnknownDenomsImpl(coinMinimalDenoms: string[], reaction: boolean): void;
15
21
  get embedded(): C;
16
22
  get chainId(): string;
17
23
  get chainIdentifier(): string;
18
24
  get currencies(): AppCurrency[];
19
25
  protected get currencyMap(): Map<string, AppCurrency>;
20
- protected get unknownDenomMap(): Map<string, boolean>;
26
+ protected get currencyNoReactionMap(): Map<string, AppCurrency>;
27
+ protected moveNoReactionCurrencyToReaction(coinMinimalDenom: string): void;
28
+ protected get unknownDenomMap(): Map<string, {
29
+ denom: string;
30
+ reaction: boolean;
31
+ }>;
21
32
  addCurrencies(...currencies: AppCurrency[]): void;
22
33
  removeCurrencies(...coinMinimalDenoms: string[]): void;
23
34
  /**
@@ -26,13 +37,16 @@ export declare class ChainInfoImpl<C extends ChainInfo = ChainInfo> implements I
26
37
  * @param coinMinimalDenom
27
38
  */
28
39
  findCurrency(coinMinimalDenom: string): AppCurrency | undefined;
40
+ findCurrencyWithoutReaction(coinMinimalDenom: string): AppCurrency | undefined;
29
41
  findCurrencyAsync(coinMinimalDenom: string): Promise<AppCurrency | undefined>;
30
42
  /**
31
43
  * findCurrency와 비슷하지만 해당하는 currency가 존재하지 않을 경우 raw currency를 반환한다.
32
44
  * @param coinMinimalDenom
33
45
  */
34
46
  forceFindCurrency(coinMinimalDenom: string): AppCurrency;
47
+ forceFindCurrencyWithoutReaction(coinMinimalDenom: string): AppCurrency;
35
48
  protected addOrReplaceCurrency(currency: AppCurrency): void;
49
+ protected addOrReplaceCurrencyNoReaction(currency: AppCurrency): void;
36
50
  get stakeCurrency(): Currency | undefined;
37
51
  get alternativeBIP44s(): BIP44[] | undefined;
38
52
  get bech32Config(): Bech32Config;
@@ -16,6 +16,7 @@ class ChainInfoImpl {
16
16
  this.currencyRegistry = currencyRegistry;
17
17
  this.unknownDenoms = [];
18
18
  this.registeredCurrencies = [];
19
+ this.registeredCurrenciesNoReaction = [];
19
20
  this.registrationInProgressCurrencyMap = new Map();
20
21
  this._embedded = embedded;
21
22
  (0, mobx_1.makeObservable)(this);
@@ -31,21 +32,47 @@ class ChainInfoImpl {
31
32
  * 하지만 이 메소드를 action 안에서 호출하면 여전히 immediate로 실행되지 않으므로, 이 경우도 고려해야한다.
32
33
  */
33
34
  addUnknownDenoms(...coinMinimalDenoms) {
35
+ this.addUnknownDenomsImpl(coinMinimalDenoms, true);
36
+ }
37
+ addUnknownDenomsWithoutReaction(...coinMinimalDenoms) {
38
+ this.addUnknownDenomsImpl(coinMinimalDenoms, false);
39
+ }
40
+ addUnknownDenomsImpl(coinMinimalDenoms, reaction) {
34
41
  for (const coinMinimalDenom of coinMinimalDenoms) {
35
- if (this.unknownDenomMap.get(coinMinimalDenom)) {
36
- continue;
42
+ let found = false;
43
+ const prior = this.unknownDenomMap.get(coinMinimalDenom);
44
+ if (prior) {
45
+ if (prior.reaction === reaction) {
46
+ continue;
47
+ }
48
+ else if (reaction) {
49
+ found = true;
50
+ // 로직상 reaction은 reactive할 필요가 없기 때문에
51
+ // 그냥 여기서 바꾼다.
52
+ prior.reaction = reaction;
53
+ }
37
54
  }
38
55
  if (this.currencyMap.has(coinMinimalDenom)) {
39
56
  continue;
40
57
  }
41
- (0, mobx_1.runInAction)(() => {
42
- this.unknownDenoms.push(coinMinimalDenom);
43
- this.registrationInProgressCurrencyMap.set(coinMinimalDenom, true);
44
- });
58
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
59
+ continue;
60
+ }
61
+ if (!found) {
62
+ (0, mobx_1.runInAction)(() => {
63
+ this.unknownDenoms.push({
64
+ denom: coinMinimalDenom,
65
+ reaction,
66
+ });
67
+ this.registrationInProgressCurrencyMap.set(coinMinimalDenom, true);
68
+ });
69
+ }
45
70
  let i = 0;
71
+ let disposed = false;
46
72
  const disposer = (0, mobx_1.autorun)(() => {
47
73
  i++;
48
74
  const dispose = () => {
75
+ disposed = true;
49
76
  if (i === 1) {
50
77
  setTimeout(() => {
51
78
  if (disposer) {
@@ -59,6 +86,9 @@ class ChainInfoImpl {
59
86
  }
60
87
  }
61
88
  };
89
+ if (disposed) {
90
+ return;
91
+ }
62
92
  const generator = this.currencyRegistry.getCurrencyRegistrar(this.chainId, coinMinimalDenom);
63
93
  if (generator) {
64
94
  const currency = generator.value;
@@ -67,11 +97,20 @@ class ChainInfoImpl {
67
97
  this.registrationInProgressCurrencyMap.set(coinMinimalDenom, true);
68
98
  }
69
99
  if (currency) {
70
- const index = this.unknownDenoms.findIndex((denom) => denom === currency.coinMinimalDenom);
100
+ const index = this.unknownDenoms.findIndex((denom) => denom.denom === currency.coinMinimalDenom);
101
+ let prev;
71
102
  if (index >= 0) {
72
- this.unknownDenoms.splice(index, 1);
103
+ prev = this.unknownDenoms[index];
104
+ if (generator.done) {
105
+ this.unknownDenoms.splice(index, 1);
106
+ }
107
+ }
108
+ if (!prev || prev.reaction) {
109
+ this.addOrReplaceCurrency(currency);
110
+ }
111
+ else {
112
+ this.addOrReplaceCurrencyNoReaction(currency);
73
113
  }
74
- this.addOrReplaceCurrency(currency);
75
114
  }
76
115
  if (generator.done) {
77
116
  this.registrationInProgressCurrencyMap.delete(coinMinimalDenom);
@@ -111,10 +150,25 @@ class ChainInfoImpl {
111
150
  }
112
151
  return result;
113
152
  }
153
+ get currencyNoReactionMap() {
154
+ const result = new Map();
155
+ for (const currency of this.registeredCurrenciesNoReaction) {
156
+ result.set(currency.coinMinimalDenom, currency);
157
+ }
158
+ return result;
159
+ }
160
+ moveNoReactionCurrencyToReaction(coinMinimalDenom) {
161
+ const index = this.registeredCurrenciesNoReaction.findIndex((cur) => cur.coinMinimalDenom === coinMinimalDenom);
162
+ if (index >= 0) {
163
+ const currency = this.registeredCurrenciesNoReaction[index];
164
+ this.registeredCurrenciesNoReaction.splice(index, 1);
165
+ this.registeredCurrencies.push(currency);
166
+ }
167
+ }
114
168
  get unknownDenomMap() {
115
169
  const result = new Map();
116
170
  for (const denom of this.unknownDenoms) {
117
- result.set(denom, true);
171
+ result.set(denom.denom, denom);
118
172
  }
119
173
  return result;
120
174
  }
@@ -148,12 +202,37 @@ class ChainInfoImpl {
148
202
  if (this.currencyMap.has(coinMinimalDenom)) {
149
203
  return this.currencyMap.get(coinMinimalDenom);
150
204
  }
205
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
206
+ this.moveNoReactionCurrencyToReaction(coinMinimalDenom);
207
+ return this.currencyNoReactionMap.get(coinMinimalDenom);
208
+ }
151
209
  this.addUnknownDenoms(coinMinimalDenom);
152
210
  // Unknown denom can be registered synchronously in some cases.
153
211
  // For this case, re-try to get currency.
154
212
  if (this.currencyMap.has(coinMinimalDenom)) {
155
213
  return this.currencyMap.get(coinMinimalDenom);
156
214
  }
215
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
216
+ this.moveNoReactionCurrencyToReaction(coinMinimalDenom);
217
+ return this.currencyNoReactionMap.get(coinMinimalDenom);
218
+ }
219
+ }
220
+ findCurrencyWithoutReaction(coinMinimalDenom) {
221
+ if (this.currencyMap.has(coinMinimalDenom)) {
222
+ return this.currencyMap.get(coinMinimalDenom);
223
+ }
224
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
225
+ return this.currencyNoReactionMap.get(coinMinimalDenom);
226
+ }
227
+ this.addUnknownDenomsWithoutReaction(coinMinimalDenom);
228
+ // Unknown denom can be registered synchronously in some cases.
229
+ // For this case, re-try to get currency.
230
+ if (this.currencyMap.has(coinMinimalDenom)) {
231
+ return this.currencyMap.get(coinMinimalDenom);
232
+ }
233
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
234
+ return this.currencyNoReactionMap.get(coinMinimalDenom);
235
+ }
157
236
  }
158
237
  findCurrencyAsync(coinMinimalDenom) {
159
238
  if (this.currencyMap.has(coinMinimalDenom)) {
@@ -189,6 +268,17 @@ class ChainInfoImpl {
189
268
  }
190
269
  return currency;
191
270
  }
271
+ forceFindCurrencyWithoutReaction(coinMinimalDenom) {
272
+ const currency = this.findCurrencyWithoutReaction(coinMinimalDenom);
273
+ if (!currency) {
274
+ return {
275
+ coinMinimalDenom,
276
+ coinDenom: coinMinimalDenom,
277
+ coinDecimals: 0,
278
+ };
279
+ }
280
+ return currency;
281
+ }
192
282
  addOrReplaceCurrency(currency) {
193
283
  if (this.currencyMap.has(currency.coinMinimalDenom)) {
194
284
  const index = this.registeredCurrencies.findIndex((cur) => cur.coinMinimalDenom === currency.coinMinimalDenom);
@@ -205,6 +295,22 @@ class ChainInfoImpl {
205
295
  this.registeredCurrencies.push(currency);
206
296
  }
207
297
  }
298
+ addOrReplaceCurrencyNoReaction(currency) {
299
+ if (this.currencyNoReactionMap.has(currency.coinMinimalDenom)) {
300
+ const index = this.registeredCurrenciesNoReaction.findIndex((cur) => cur.coinMinimalDenom === currency.coinMinimalDenom);
301
+ if (index >= 0) {
302
+ const prev = this.registeredCurrenciesNoReaction[index];
303
+ if (
304
+ // If same, do nothing
305
+ (0, common_1.sortedJsonByKeyStringify)(prev) !== (0, common_1.sortedJsonByKeyStringify)(currency)) {
306
+ this.registeredCurrenciesNoReaction.splice(index, 1, currency);
307
+ }
308
+ }
309
+ }
310
+ else {
311
+ this.registeredCurrenciesNoReaction.push(currency);
312
+ }
313
+ }
208
314
  get stakeCurrency() {
209
315
  return this._embedded.stakeCurrency;
210
316
  }
@@ -270,6 +376,9 @@ __decorate([
270
376
  __decorate([
271
377
  mobx_1.observable.shallow
272
378
  ], ChainInfoImpl.prototype, "registeredCurrencies", void 0);
379
+ __decorate([
380
+ mobx_1.observable.shallow
381
+ ], ChainInfoImpl.prototype, "registeredCurrenciesNoReaction", void 0);
273
382
  __decorate([
274
383
  mobx_1.observable.shallow
275
384
  ], ChainInfoImpl.prototype, "registrationInProgressCurrencyMap", void 0);
@@ -282,6 +391,12 @@ __decorate([
282
391
  __decorate([
283
392
  mobx_1.computed
284
393
  ], ChainInfoImpl.prototype, "currencyMap", null);
394
+ __decorate([
395
+ mobx_1.computed
396
+ ], ChainInfoImpl.prototype, "currencyNoReactionMap", null);
397
+ __decorate([
398
+ mobx_1.action
399
+ ], ChainInfoImpl.prototype, "moveNoReactionCurrencyToReaction", null);
285
400
  __decorate([
286
401
  mobx_1.computed
287
402
  ], ChainInfoImpl.prototype, "unknownDenomMap", null);
@@ -294,6 +409,9 @@ __decorate([
294
409
  __decorate([
295
410
  mobx_1.action
296
411
  ], ChainInfoImpl.prototype, "addOrReplaceCurrency", null);
412
+ __decorate([
413
+ mobx_1.action
414
+ ], ChainInfoImpl.prototype, "addOrReplaceCurrencyNoReaction", null);
297
415
  __decorate([
298
416
  mobx_1.action
299
417
  ], ChainInfoImpl.prototype, "setEmbeddedChainInfo", null);
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/chain/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/chain/base.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,12 @@ export interface IChainStore<C extends ChainInfo = ChainInfo> extends ChainGette
12
12
  }
13
13
  export interface IChainInfoImpl<C extends ChainInfo = ChainInfo> {
14
14
  addUnknownDenoms(...coinMinimalDenoms: string[]): void;
15
+ addUnknownDenomsWithoutReaction(...coinMinimalDenoms: string[]): void;
15
16
  findCurrency(coinMinimalDenom: string | ((coinMinimalDenom: string) => boolean | null | undefined)): AppCurrency | undefined;
17
+ findCurrencyWithoutReaction(coinMinimalDenom: string): AppCurrency | undefined;
16
18
  findCurrencyAsync(coinMinimalDenom: string): Promise<AppCurrency | undefined>;
17
19
  forceFindCurrency(coinMinimalDenom: string): AppCurrency;
20
+ forceFindCurrencyWithoutReaction(coinMinimalDenom: string): AppCurrency;
18
21
  hasFeature(feature: string): boolean;
19
22
  removeCurrencies(...coinMinimalDenoms: string[]): void;
20
23
  addCurrencies(...currencies: AppCurrency[]): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/stores",
3
- "version": "0.12.89",
3
+ "version": "0.12.90",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -16,16 +16,16 @@
16
16
  "lint-fix": "eslint --fix \"src/**/*\" && prettier --write \"src/**/*\""
17
17
  },
18
18
  "devDependencies": {
19
- "@keplr-wallet/provider-mock": "0.12.89"
19
+ "@keplr-wallet/provider-mock": "0.12.90"
20
20
  },
21
21
  "dependencies": {
22
- "@keplr-wallet/common": "0.12.89",
23
- "@keplr-wallet/cosmos": "0.12.89",
24
- "@keplr-wallet/crypto": "0.12.89",
25
- "@keplr-wallet/proto-types": "0.12.89",
26
- "@keplr-wallet/simple-fetch": "0.12.89",
27
- "@keplr-wallet/types": "0.12.89",
28
- "@keplr-wallet/unit": "0.12.89",
22
+ "@keplr-wallet/common": "0.12.90",
23
+ "@keplr-wallet/cosmos": "0.12.90",
24
+ "@keplr-wallet/crypto": "0.12.90",
25
+ "@keplr-wallet/proto-types": "0.12.90",
26
+ "@keplr-wallet/simple-fetch": "0.12.90",
27
+ "@keplr-wallet/types": "0.12.90",
28
+ "@keplr-wallet/unit": "0.12.90",
29
29
  "buffer": "^6.0.3",
30
30
  "deepmerge": "^4.2.2",
31
31
  "eventemitter3": "^4.0.7",
@@ -37,5 +37,5 @@
37
37
  "mobx": "^6",
38
38
  "mobx-utils": "^6"
39
39
  },
40
- "gitHead": "5850a8944fa927ea2f718989973573f57a2dcc4d"
40
+ "gitHead": "120a7a32b54a0976ea3d386b3105e2c41eaf41bf"
41
41
  }
package/src/chain/base.ts CHANGED
@@ -27,10 +27,15 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
27
27
  protected _embedded: C;
28
28
 
29
29
  @observable.shallow
30
- protected unknownDenoms: string[] = [];
30
+ protected unknownDenoms: {
31
+ denom: string;
32
+ reaction: boolean;
33
+ }[] = [];
31
34
 
32
35
  @observable.shallow
33
36
  protected registeredCurrencies: AppCurrency[] = [];
37
+ @observable.shallow
38
+ protected registeredCurrenciesNoReaction: AppCurrency[] = [];
34
39
 
35
40
  @observable.shallow
36
41
  protected registrationInProgressCurrencyMap: Map<string, boolean> = new Map();
@@ -58,24 +63,56 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
58
63
  * 하지만 이 메소드를 action 안에서 호출하면 여전히 immediate로 실행되지 않으므로, 이 경우도 고려해야한다.
59
64
  */
60
65
  addUnknownDenoms(...coinMinimalDenoms: string[]) {
66
+ this.addUnknownDenomsImpl(coinMinimalDenoms, true);
67
+ }
68
+
69
+ addUnknownDenomsWithoutReaction(...coinMinimalDenoms: string[]) {
70
+ this.addUnknownDenomsImpl(coinMinimalDenoms, false);
71
+ }
72
+
73
+ protected addUnknownDenomsImpl(
74
+ coinMinimalDenoms: string[],
75
+ reaction: boolean
76
+ ) {
61
77
  for (const coinMinimalDenom of coinMinimalDenoms) {
62
- if (this.unknownDenomMap.get(coinMinimalDenom)) {
63
- continue;
78
+ let found = false;
79
+ const prior = this.unknownDenomMap.get(coinMinimalDenom);
80
+ if (prior) {
81
+ if (prior.reaction === reaction) {
82
+ continue;
83
+ } else if (reaction) {
84
+ found = true;
85
+ // 로직상 reaction은 reactive할 필요가 없기 때문에
86
+ // 그냥 여기서 바꾼다.
87
+ prior.reaction = reaction;
88
+ }
64
89
  }
65
90
 
66
91
  if (this.currencyMap.has(coinMinimalDenom)) {
67
92
  continue;
68
93
  }
69
94
 
70
- runInAction(() => {
71
- this.unknownDenoms.push(coinMinimalDenom);
72
- this.registrationInProgressCurrencyMap.set(coinMinimalDenom, true);
73
- });
95
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
96
+ continue;
97
+ }
98
+
99
+ if (!found) {
100
+ runInAction(() => {
101
+ this.unknownDenoms.push({
102
+ denom: coinMinimalDenom,
103
+ reaction,
104
+ });
105
+ this.registrationInProgressCurrencyMap.set(coinMinimalDenom, true);
106
+ });
107
+ }
74
108
 
75
109
  let i = 0;
110
+ let disposed = false;
76
111
  const disposer = autorun(() => {
77
112
  i++;
78
113
  const dispose = () => {
114
+ disposed = true;
115
+
79
116
  if (i === 1) {
80
117
  setTimeout(() => {
81
118
  if (disposer) {
@@ -89,6 +126,10 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
89
126
  }
90
127
  };
91
128
 
129
+ if (disposed) {
130
+ return;
131
+ }
132
+
92
133
  const generator = this.currencyRegistry.getCurrencyRegistrar(
93
134
  this.chainId,
94
135
  coinMinimalDenom
@@ -105,13 +146,26 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
105
146
 
106
147
  if (currency) {
107
148
  const index = this.unknownDenoms.findIndex(
108
- (denom) => denom === currency.coinMinimalDenom
149
+ (denom) => denom.denom === currency.coinMinimalDenom
109
150
  );
151
+ let prev:
152
+ | {
153
+ denom: string;
154
+ reaction: boolean;
155
+ }
156
+ | undefined;
110
157
  if (index >= 0) {
111
- this.unknownDenoms.splice(index, 1);
158
+ prev = this.unknownDenoms[index];
159
+ if (generator.done) {
160
+ this.unknownDenoms.splice(index, 1);
161
+ }
112
162
  }
113
163
 
114
- this.addOrReplaceCurrency(currency);
164
+ if (!prev || prev.reaction) {
165
+ this.addOrReplaceCurrency(currency);
166
+ } else {
167
+ this.addOrReplaceCurrencyNoReaction(currency);
168
+ }
115
169
  }
116
170
 
117
171
  if (generator.done) {
@@ -163,10 +217,40 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
163
217
  }
164
218
 
165
219
  @computed
166
- protected get unknownDenomMap(): Map<string, boolean> {
167
- const result: Map<string, boolean> = new Map();
220
+ protected get currencyNoReactionMap(): Map<string, AppCurrency> {
221
+ const result: Map<string, AppCurrency> = new Map();
222
+ for (const currency of this.registeredCurrenciesNoReaction) {
223
+ result.set(currency.coinMinimalDenom, currency);
224
+ }
225
+ return result;
226
+ }
227
+
228
+ @action
229
+ protected moveNoReactionCurrencyToReaction(coinMinimalDenom: string) {
230
+ const index = this.registeredCurrenciesNoReaction.findIndex(
231
+ (cur) => cur.coinMinimalDenom === coinMinimalDenom
232
+ );
233
+ if (index >= 0) {
234
+ const currency = this.registeredCurrenciesNoReaction[index];
235
+ this.registeredCurrenciesNoReaction.splice(index, 1);
236
+ this.registeredCurrencies.push(currency);
237
+ }
238
+ }
239
+
240
+ @computed
241
+ protected get unknownDenomMap(): Map<
242
+ string,
243
+ { denom: string; reaction: boolean }
244
+ > {
245
+ const result: Map<
246
+ string,
247
+ {
248
+ denom: string;
249
+ reaction: boolean;
250
+ }
251
+ > = new Map();
168
252
  for (const denom of this.unknownDenoms) {
169
- result.set(denom, true);
253
+ result.set(denom.denom, denom);
170
254
  }
171
255
  return result;
172
256
  }
@@ -210,6 +294,10 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
210
294
  if (this.currencyMap.has(coinMinimalDenom)) {
211
295
  return this.currencyMap.get(coinMinimalDenom);
212
296
  }
297
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
298
+ this.moveNoReactionCurrencyToReaction(coinMinimalDenom);
299
+ return this.currencyNoReactionMap.get(coinMinimalDenom);
300
+ }
213
301
  this.addUnknownDenoms(coinMinimalDenom);
214
302
 
215
303
  // Unknown denom can be registered synchronously in some cases.
@@ -217,6 +305,31 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
217
305
  if (this.currencyMap.has(coinMinimalDenom)) {
218
306
  return this.currencyMap.get(coinMinimalDenom);
219
307
  }
308
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
309
+ this.moveNoReactionCurrencyToReaction(coinMinimalDenom);
310
+ return this.currencyNoReactionMap.get(coinMinimalDenom);
311
+ }
312
+ }
313
+
314
+ findCurrencyWithoutReaction(
315
+ coinMinimalDenom: string
316
+ ): AppCurrency | undefined {
317
+ if (this.currencyMap.has(coinMinimalDenom)) {
318
+ return this.currencyMap.get(coinMinimalDenom);
319
+ }
320
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
321
+ return this.currencyNoReactionMap.get(coinMinimalDenom);
322
+ }
323
+ this.addUnknownDenomsWithoutReaction(coinMinimalDenom);
324
+
325
+ // Unknown denom can be registered synchronously in some cases.
326
+ // For this case, re-try to get currency.
327
+ if (this.currencyMap.has(coinMinimalDenom)) {
328
+ return this.currencyMap.get(coinMinimalDenom);
329
+ }
330
+ if (this.currencyNoReactionMap.has(coinMinimalDenom)) {
331
+ return this.currencyNoReactionMap.get(coinMinimalDenom);
332
+ }
220
333
  }
221
334
 
222
335
  findCurrencyAsync(
@@ -260,6 +373,18 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
260
373
  return currency;
261
374
  }
262
375
 
376
+ forceFindCurrencyWithoutReaction(coinMinimalDenom: string): AppCurrency {
377
+ const currency = this.findCurrencyWithoutReaction(coinMinimalDenom);
378
+ if (!currency) {
379
+ return {
380
+ coinMinimalDenom,
381
+ coinDenom: coinMinimalDenom,
382
+ coinDecimals: 0,
383
+ };
384
+ }
385
+ return currency;
386
+ }
387
+
263
388
  @action
264
389
  protected addOrReplaceCurrency(currency: AppCurrency) {
265
390
  if (this.currencyMap.has(currency.coinMinimalDenom)) {
@@ -280,6 +405,26 @@ export class ChainInfoImpl<C extends ChainInfo = ChainInfo>
280
405
  }
281
406
  }
282
407
 
408
+ @action
409
+ protected addOrReplaceCurrencyNoReaction(currency: AppCurrency) {
410
+ if (this.currencyNoReactionMap.has(currency.coinMinimalDenom)) {
411
+ const index = this.registeredCurrenciesNoReaction.findIndex(
412
+ (cur) => cur.coinMinimalDenom === currency.coinMinimalDenom
413
+ );
414
+ if (index >= 0) {
415
+ const prev = this.registeredCurrenciesNoReaction[index];
416
+ if (
417
+ // If same, do nothing
418
+ sortedJsonByKeyStringify(prev) !== sortedJsonByKeyStringify(currency)
419
+ ) {
420
+ this.registeredCurrenciesNoReaction.splice(index, 1, currency);
421
+ }
422
+ }
423
+ } else {
424
+ this.registeredCurrenciesNoReaction.push(currency);
425
+ }
426
+ }
427
+
283
428
  get stakeCurrency(): Currency | undefined {
284
429
  return this._embedded.stakeCurrency;
285
430
  }
@@ -29,13 +29,18 @@ export interface IChainStore<C extends ChainInfo = ChainInfo>
29
29
 
30
30
  export interface IChainInfoImpl<C extends ChainInfo = ChainInfo> {
31
31
  addUnknownDenoms(...coinMinimalDenoms: string[]): void;
32
+ addUnknownDenomsWithoutReaction(...coinMinimalDenoms: string[]): void;
32
33
  findCurrency(
33
34
  coinMinimalDenom:
34
35
  | string
35
36
  | ((coinMinimalDenom: string) => boolean | null | undefined)
36
37
  ): AppCurrency | undefined;
38
+ findCurrencyWithoutReaction(
39
+ coinMinimalDenom: string
40
+ ): AppCurrency | undefined;
37
41
  findCurrencyAsync(coinMinimalDenom: string): Promise<AppCurrency | undefined>;
38
42
  forceFindCurrency(coinMinimalDenom: string): AppCurrency;
43
+ forceFindCurrencyWithoutReaction(coinMinimalDenom: string): AppCurrency;
39
44
  hasFeature(feature: string): boolean;
40
45
  removeCurrencies(...coinMinimalDenoms: string[]): void;
41
46
  addCurrencies(...currencies: AppCurrency[]): void;