@keplr-wallet/background 0.12.308-rc.1 → 0.12.309-rc.0

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.
@@ -21,7 +21,15 @@ const mobx_1 = require("mobx");
21
21
  const simple_fetch_1 = require("@keplr-wallet/simple-fetch");
22
22
  const unit_1 = require("@keplr-wallet/unit");
23
23
  const cosmos_1 = require("@keplr-wallet/cosmos");
24
+ const common_1 = require("@keplr-wallet/common");
24
25
  const starknet_1 = require("starknet");
26
+ const thirdpartySupportedChainIdMap = {
27
+ "eip155:1": "eth",
28
+ "eip155:10": "opt",
29
+ "eip155:137": "polygon",
30
+ "eip155:8453": "base",
31
+ "eip155:42161": "arb",
32
+ };
25
33
  class TokenScanService {
26
34
  constructor(kvStore, eventMsgRequester, chainsService, chainsUIService, vaultService, keyRingService, keyRingCosmosService, keyRingStarknetService, keyRingBitcoinService) {
27
35
  this.kvStore = kvStore;
@@ -97,12 +105,12 @@ class TokenScanService {
97
105
  }
98
106
  });
99
107
  });
100
- this.chainsUIService.addChainUIEnabledChangedHandler((vaultId, chainIdentifiers) => {
108
+ this.chainsService.addChainRemovedHandler((chainInfo) => {
101
109
  (0, mobx_1.runInAction)(() => {
102
- let prevTokenScans = this.vaultToMap.get(vaultId);
103
- if (prevTokenScans) {
104
- prevTokenScans = prevTokenScans.filter((tokenScan) => {
105
- return !chainIdentifiers.includes(cosmos_1.ChainIdHelper.parse(tokenScan.chainId).identifier);
110
+ for (const [vaultId, tokenScans] of this.vaultToMap.entries()) {
111
+ let prevTokenScans = tokenScans;
112
+ prevTokenScans = prevTokenScans.filter((scan) => {
113
+ return scan.chainId !== chainInfo.chainId;
106
114
  });
107
115
  this.vaultToMap.set(vaultId, prevTokenScans);
108
116
  }
@@ -114,8 +122,9 @@ class TokenScanService {
114
122
  var _a;
115
123
  return ((_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [])
116
124
  .filter((tokenScan) => {
117
- return (this.chainsService.hasChainInfo(tokenScan.chainId) ||
118
- this.chainsService.hasModularChainInfo(tokenScan.chainId));
125
+ return ((this.chainsService.hasChainInfo(tokenScan.chainId) ||
126
+ this.chainsService.hasModularChainInfo(tokenScan.chainId)) &&
127
+ !this.chainsUIService.isEnabled(vaultId, tokenScan.chainId));
119
128
  })
120
129
  .sort((a, b) => {
121
130
  // Sort by chain name
@@ -182,11 +191,14 @@ class TokenScanService {
182
191
  var _a;
183
192
  let prevTokenScans = (_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [];
184
193
  const chainIdentifier = cosmos_1.ChainIdHelper.parse(tokenScan.chainId).identifier;
194
+ const prevTokenScan = prevTokenScans.find((scan) => {
195
+ return (cosmos_1.ChainIdHelper.parse(scan.chainId).identifier === chainIdentifier);
196
+ });
185
197
  prevTokenScans = prevTokenScans.filter((scan) => {
186
198
  const prevChainIdentifier = cosmos_1.ChainIdHelper.parse(scan.chainId).identifier;
187
199
  return chainIdentifier !== prevChainIdentifier;
188
200
  });
189
- prevTokenScans.push(tokenScan);
201
+ prevTokenScans.push(Object.assign(Object.assign({}, prevTokenScan), tokenScan));
190
202
  this.vaultToMap.set(vaultId, prevTokenScans);
191
203
  });
192
204
  }
@@ -203,6 +215,7 @@ class TokenScanService {
203
215
  const tokenScans = [];
204
216
  const processedLinkedChainKeys = new Set();
205
217
  const promises = [];
218
+ const logChains = [];
206
219
  for (const modularChainInfo of modularChainInfos) {
207
220
  if ("linkedChainKey" in modularChainInfo) {
208
221
  if (processedLinkedChainKeys.has(modularChainInfo.linkedChainKey)) {
@@ -216,31 +229,39 @@ class TokenScanService {
216
229
  tokenScans.push(tokenScan);
217
230
  }
218
231
  }))());
232
+ logChains.push(modularChainInfo.chainId);
219
233
  }
220
234
  // ignore error
221
- yield Promise.allSettled(promises);
235
+ const settled = yield Promise.allSettled(promises);
236
+ for (let i = 0; i < settled.length; i++) {
237
+ const s = settled[i];
238
+ if (s.status === "rejected") {
239
+ console.error("failed to calculateTokenScan", logChains[i]);
240
+ console.error(s.reason);
241
+ }
242
+ }
222
243
  if (tokenScans.length > 0) {
223
244
  (0, mobx_1.runInAction)(() => {
224
245
  var _a;
225
246
  let prevTokenScans = (_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [];
226
247
  for (const tokenScan of tokenScans) {
227
248
  const chainIdentifier = cosmos_1.ChainIdHelper.parse(tokenScan.chainId).identifier;
249
+ const prevTokenScan = prevTokenScans.find((scan) => {
250
+ return (cosmos_1.ChainIdHelper.parse(scan.chainId).identifier === chainIdentifier);
251
+ });
228
252
  prevTokenScans = prevTokenScans.filter((scan) => {
229
253
  const prevChainIdentifier = cosmos_1.ChainIdHelper.parse(scan.chainId).identifier;
230
254
  return chainIdentifier !== prevChainIdentifier;
231
255
  });
232
- prevTokenScans.push(tokenScan);
256
+ prevTokenScans.push(Object.assign(Object.assign({}, prevTokenScan), tokenScan));
233
257
  }
234
- prevTokenScans = prevTokenScans.filter((scan) => {
235
- return !this.chainsUIService.isEnabled(vaultId, scan.chainId);
236
- });
237
258
  this.vaultToMap.set(vaultId, prevTokenScans);
238
259
  });
239
260
  }
240
261
  });
241
262
  }
242
263
  calculateTokenScan(vaultId, chainId) {
243
- var _a, _b, _c;
264
+ var _a, _b, _c, _d, _e;
244
265
  return __awaiter(this, void 0, void 0, function* () {
245
266
  if (this.keyRingService.keyRingStatus !== "unlocked") {
246
267
  return;
@@ -268,6 +289,7 @@ class TokenScanService {
268
289
  const evmInfo = this.chainsService.getEVMInfoOrThrow(chainId);
269
290
  const pubkey = yield this.keyRingService.getPubKey(chainId, vaultId);
270
291
  const ethereumHexAddress = `0x${Buffer.from(pubkey.getEthAddress()).toString("hex")}`;
292
+ const assets = [];
271
293
  const res = yield (0, simple_fetch_1.simpleFetch)(evmInfo.rpc, {
272
294
  method: "POST",
273
295
  headers: Object.assign({ "content-type": "application/json" }, (() => {
@@ -287,16 +309,48 @@ class TokenScanService {
287
309
  });
288
310
  if (res.status === 200 &&
289
311
  BigInt(res.data.result).toString(10) !== "0") {
312
+ assets.push({
313
+ currency: (_a = chainInfo.stakeCurrency) !== null && _a !== void 0 ? _a : chainInfo.currencies[0],
314
+ amount: BigInt(res.data.result).toString(10),
315
+ });
316
+ }
317
+ if (thirdpartySupportedChainIdMap[chainId]) {
318
+ const tokenAPIURL = `https://evm-${chainId.replace("eip155:", "")}.keplr.app/api`;
319
+ const res = yield (0, simple_fetch_1.simpleFetch)(tokenAPIURL, {
320
+ method: "POST",
321
+ headers: Object.assign({ "content-type": "application/json" }, (() => {
322
+ if (typeof browser !== "undefined") {
323
+ return {
324
+ "request-source": new URL(browser.runtime.getURL("/"))
325
+ .origin,
326
+ };
327
+ }
328
+ return undefined;
329
+ })()),
330
+ body: JSON.stringify({
331
+ jsonrpc: "2.0",
332
+ method: "alchemy_getTokenBalances",
333
+ params: [ethereumHexAddress, "erc20"],
334
+ id: 1,
335
+ }),
336
+ });
337
+ if (res.status === 200) {
338
+ for (const tokenBalance of (_c = (_b = res.data.result) === null || _b === void 0 ? void 0 : _b.tokenBalances) !== null && _c !== void 0 ? _c : []) {
339
+ if (tokenBalance.tokenBalance && tokenBalance.error == null) {
340
+ assets.push({
341
+ coinMinimalDenom: common_1.DenomHelper.normalizeDenom(`erc20:${tokenBalance.contractAddress}`),
342
+ amount: BigInt(tokenBalance.tokenBalance).toString(10),
343
+ });
344
+ }
345
+ }
346
+ }
347
+ }
348
+ if (assets.length > 0) {
290
349
  tokenScan.infos.push({
291
350
  bech32Address: "",
292
351
  ethereumHexAddress,
293
352
  coinType: 60,
294
- assets: [
295
- {
296
- currency: (_a = chainInfo.stakeCurrency) !== null && _a !== void 0 ? _a : chainInfo.currencies[0],
297
- amount: BigInt(res.data.result).toString(10),
298
- },
299
- ],
353
+ assets,
300
354
  });
301
355
  }
302
356
  }
@@ -322,21 +376,20 @@ class TokenScanService {
322
376
  const res = yield (0, simple_fetch_1.simpleFetch)(chainInfo.rest, `/cosmos/bank/v1beta1/balances/${bech32Address.value}?pagination.limit=1000`);
323
377
  if (res.status === 200) {
324
378
  const assets = [];
325
- const balances = (_c = (_b = res.data) === null || _b === void 0 ? void 0 : _b.balances) !== null && _c !== void 0 ? _c : [];
379
+ const balances = (_e = (_d = res.data) === null || _d === void 0 ? void 0 : _d.balances) !== null && _e !== void 0 ? _e : [];
326
380
  for (const bal of balances) {
327
381
  const currency = chainInfo.currencies.find((cur) => cur.coinMinimalDenom === bal.denom);
328
- if (currency) {
329
- // validate
330
- if (typeof bal.amount !== "string") {
331
- throw new Error("Invalid amount");
332
- }
333
- const dec = new unit_1.Dec(bal.amount);
334
- if (dec.gt(new unit_1.Dec(0))) {
335
- assets.push({
336
- currency,
337
- amount: bal.amount,
338
- });
339
- }
382
+ // validate
383
+ if (typeof bal.amount !== "string") {
384
+ throw new Error("Invalid amount");
385
+ }
386
+ const dec = new unit_1.Dec(bal.amount);
387
+ if (dec.gte(new unit_1.Dec(0))) {
388
+ assets.push({
389
+ currency,
390
+ coinMinimalDenom: bal.denom,
391
+ amount: bal.amount,
392
+ });
340
393
  }
341
394
  }
342
395
  if (assets.length > 0) {
@@ -386,27 +439,25 @@ class TokenScanService {
386
439
  })
387
440
  .toBigInt()
388
441
  .toString(10);
389
- if (amount !== "0") {
390
- // XXX: Starknet의 경우는 여러 주소가 나올수가 없으므로
391
- // starknetHexAddress는 같은 값으로 나온다고 생각하고 처리한다.
392
- if (tokenScan.infos.length === 0) {
393
- tokenScan.infos.push({
394
- starknetHexAddress,
395
- assets: [
396
- {
397
- currency,
398
- amount,
399
- },
400
- ],
401
- });
402
- }
403
- else {
404
- if (tokenScan.infos[0].starknetHexAddress === starknetHexAddress) {
405
- tokenScan.infos[0].assets.push({
442
+ // XXX: Starknet의 경우는 여러 주소가 나올수가 없으므로
443
+ // starknetHexAddress는 같은 값으로 나온다고 생각하고 처리한다.
444
+ if (tokenScan.infos.length === 0) {
445
+ tokenScan.infos.push({
446
+ starknetHexAddress,
447
+ assets: [
448
+ {
406
449
  currency,
407
450
  amount,
408
- });
409
- }
451
+ },
452
+ ],
453
+ });
454
+ }
455
+ else {
456
+ if (tokenScan.infos[0].starknetHexAddress === starknetHexAddress) {
457
+ tokenScan.infos[0].assets.push({
458
+ currency,
459
+ amount,
460
+ });
410
461
  }
411
462
  }
412
463
  }
@@ -455,22 +506,10 @@ class TokenScanService {
455
506
  if (bitcoinScanInfos.length !== linkedBitcoinChains.length) {
456
507
  throw new Error("Invalid bitcoin scan info: length mismatch between linked bitcoin chains and bitcoin scan infos");
457
508
  }
458
- let hasNonZeroAmount = false;
459
- for (const bitcoinScanInfo of bitcoinScanInfos) {
460
- // 우선 main currency만 처리한다.
461
- if (bitcoinScanInfo.assets.length > 0 &&
462
- bitcoinScanInfo.assets[0].amount !== "0") {
463
- hasNonZeroAmount = true;
464
- break;
465
- }
466
- }
467
- // 하나라도 0이 아닌 값이 있으면 연결된 모든 체인에 대해 토큰 스캔 정보를 추가한다.
468
- if (hasNonZeroAmount) {
469
- tokenScan.infos.push(...bitcoinScanInfos);
470
- }
509
+ tokenScan.infos.push(...bitcoinScanInfos);
471
510
  }
472
511
  else {
473
- const bitcoinScanInfo = yield getBitcoinScanInfo(vaultId, chainId, false);
512
+ const bitcoinScanInfo = yield getBitcoinScanInfo(vaultId, chainId, true);
474
513
  if (bitcoinScanInfo) {
475
514
  tokenScan.infos.push(bitcoinScanInfo);
476
515
  }
@@ -482,9 +521,113 @@ class TokenScanService {
482
521
  return undefined;
483
522
  });
484
523
  }
524
+ dismissNewTokenFoundInHome(vaultId) {
525
+ var _a;
526
+ const prevTokenScans = (_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [];
527
+ for (const prevTokenScan of prevTokenScans) {
528
+ prevTokenScan.dismissedInfos = prevTokenScan.infos;
529
+ }
530
+ this.vaultToMap.set(vaultId, prevTokenScans);
531
+ }
532
+ resetDismiss(vaultId) {
533
+ var _a;
534
+ const prevTokenScans = (_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [];
535
+ for (const prevTokenScan of prevTokenScans) {
536
+ prevTokenScan.dismissedInfos = undefined;
537
+ }
538
+ this.vaultToMap.set(vaultId, prevTokenScans);
539
+ }
540
+ isMeaningfulTokenScanChangeBetweenDismissed(tokenScan) {
541
+ var _a, _b, _c;
542
+ if (!tokenScan.dismissedInfos || tokenScan.dismissedInfos.length === 0) {
543
+ return tokenScan.infos.length > 0;
544
+ }
545
+ const makeKey = (info) => {
546
+ var _a;
547
+ if (info.bech32Address)
548
+ return `bech32:${info.bech32Address}`;
549
+ if (info.ethereumHexAddress)
550
+ return `eth:${info.ethereumHexAddress}`;
551
+ if (info.starknetHexAddress)
552
+ return `stark:${info.starknetHexAddress}`;
553
+ if ((_a = info.bitcoinAddress) === null || _a === void 0 ? void 0 : _a.bech32Address)
554
+ return `btc:${info.bitcoinAddress.bech32Address}`;
555
+ if (info.coinType != null)
556
+ return `coin:${info.coinType}`;
557
+ return undefined;
558
+ };
559
+ const toBigIntSafe = (v) => {
560
+ try {
561
+ return BigInt(v);
562
+ }
563
+ catch (_a) {
564
+ return undefined;
565
+ }
566
+ };
567
+ const dismissedTokenInfosMap = new Map();
568
+ for (const info of (_a = tokenScan.dismissedInfos) !== null && _a !== void 0 ? _a : []) {
569
+ const key = makeKey(info);
570
+ if (key) {
571
+ dismissedTokenInfosMap.set(key, info);
572
+ }
573
+ }
574
+ for (const info of tokenScan.infos) {
575
+ const key = makeKey(info);
576
+ if (!key) {
577
+ continue;
578
+ }
579
+ const dismissedTokenInfo = dismissedTokenInfosMap.get(key);
580
+ if (!dismissedTokenInfo) {
581
+ if (info.assets.length > 0) {
582
+ return true;
583
+ }
584
+ continue;
585
+ }
586
+ const dismissedAssetMap = new Map();
587
+ for (const asset of dismissedTokenInfo.assets) {
588
+ const coinMinimalDenom = ((_b = asset.currency) === null || _b === void 0 ? void 0 : _b.coinMinimalDenom) || asset.coinMinimalDenom;
589
+ if (!coinMinimalDenom) {
590
+ continue;
591
+ }
592
+ dismissedAssetMap.set(coinMinimalDenom, asset);
593
+ }
594
+ for (const asset of info.assets) {
595
+ const coinMinimalDenom = ((_c = asset.currency) === null || _c === void 0 ? void 0 : _c.coinMinimalDenom) || asset.coinMinimalDenom;
596
+ if (!coinMinimalDenom) {
597
+ continue;
598
+ }
599
+ const prevAsset = dismissedAssetMap.get(coinMinimalDenom);
600
+ // 없던 토큰이 생긴경우
601
+ if (!prevAsset) {
602
+ return true;
603
+ }
604
+ const prevAmount = toBigIntSafe(prevAsset.amount);
605
+ const curAmount = toBigIntSafe(asset.amount);
606
+ if (prevAmount == null || curAmount == null) {
607
+ continue;
608
+ }
609
+ // 이전에 0이였다가 밸런스가 생긴경우.
610
+ if (prevAmount === BigInt(0) && curAmount > BigInt(0)) {
611
+ return true;
612
+ }
613
+ // 이전 밸런스에 배해서 10% 밸런스가 증가한 경우
614
+ if (prevAmount > BigInt(0) &&
615
+ curAmount * BigInt(10) >= prevAmount * BigInt(11)) {
616
+ return true;
617
+ }
618
+ }
619
+ }
620
+ return false;
621
+ }
485
622
  }
486
623
  __decorate([
487
624
  mobx_1.observable
488
625
  ], TokenScanService.prototype, "vaultToMap", void 0);
626
+ __decorate([
627
+ mobx_1.action
628
+ ], TokenScanService.prototype, "dismissNewTokenFoundInHome", null);
629
+ __decorate([
630
+ mobx_1.action
631
+ ], TokenScanService.prototype, "resetDismiss", null);
489
632
  exports.TokenScanService = TokenScanService;
490
633
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/token-scan/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/token-scan/service.ts"],"names":[],"mappings":"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"}
@@ -202,7 +202,7 @@ class BackgroundTxService {
202
202
  const starknet = modularChainInfo.starknet;
203
203
  const provider = new starknet_1.RpcProvider({
204
204
  nodeUrl: starknet.rpc,
205
- specVersion: "0.8.1",
205
+ specVersion: "0.9.0",
206
206
  });
207
207
  this.notification.create({
208
208
  iconRelativeUrl: "assets/logo-256.png",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/background",
3
- "version": "0.12.308-rc.1",
3
+ "version": "0.12.309-rc.0",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -32,17 +32,17 @@
32
32
  "@ethersproject/hash": "^5.7.0",
33
33
  "@ethersproject/transactions": "^5.7.0",
34
34
  "@ethersproject/wallet": "^5.7.0",
35
- "@keplr-wallet/chain-validator": "0.12.308-rc.1",
36
- "@keplr-wallet/common": "0.12.308-rc.1",
37
- "@keplr-wallet/cosmos": "0.12.308-rc.1",
38
- "@keplr-wallet/crypto": "0.12.308-rc.1",
39
- "@keplr-wallet/ledger-cosmos": "0.12.308-rc.1",
40
- "@keplr-wallet/popup": "0.12.308-rc.1",
41
- "@keplr-wallet/proto-types": "0.12.308-rc.1",
42
- "@keplr-wallet/router": "0.12.308-rc.1",
43
- "@keplr-wallet/simple-fetch": "0.12.308-rc.1",
44
- "@keplr-wallet/types": "0.12.308-rc.1",
45
- "@keplr-wallet/unit": "0.12.308-rc.1",
35
+ "@keplr-wallet/chain-validator": "0.12.309-rc.0",
36
+ "@keplr-wallet/common": "0.12.309-rc.0",
37
+ "@keplr-wallet/cosmos": "0.12.309-rc.0",
38
+ "@keplr-wallet/crypto": "0.12.309-rc.0",
39
+ "@keplr-wallet/ledger-cosmos": "0.12.309-rc.0",
40
+ "@keplr-wallet/popup": "0.12.309-rc.0",
41
+ "@keplr-wallet/proto-types": "0.12.309-rc.0",
42
+ "@keplr-wallet/router": "0.12.309-rc.0",
43
+ "@keplr-wallet/simple-fetch": "0.12.309-rc.0",
44
+ "@keplr-wallet/types": "0.12.309-rc.0",
45
+ "@keplr-wallet/unit": "0.12.309-rc.0",
46
46
  "@ledgerhq/hw-app-eth": "6.42.8",
47
47
  "@ledgerhq/hw-app-starknet": "^3.0.1",
48
48
  "@ledgerhq/hw-transport": "^6.31.4",
@@ -69,5 +69,5 @@
69
69
  "mobx-utils": "^6",
70
70
  "starknet": "^7"
71
71
  },
72
- "gitHead": "9a983872d0800c4f93094cee39325dc95e7f2fc8"
72
+ "gitHead": "0c2ce10e68678e3fe71f0f1fe9f9457ef83c53dc"
73
73
  }
@@ -1682,7 +1682,8 @@ Salt: ${salt}`;
1682
1682
  !chainId.startsWith("nim_") &&
1683
1683
  !chainId.startsWith("dimension_") &&
1684
1684
  !chainId.startsWith("zetachain_") &&
1685
- !chainId.startsWith("eip155:")
1685
+ !chainId.startsWith("eip155:") &&
1686
+ !chainId.startsWith("xrplevm_")
1686
1687
  ) {
1687
1688
  throw new KeplrError(
1688
1689
  "keyring",
@@ -90,7 +90,7 @@ export class KeyRingStarknetService {
90
90
  }
91
91
  return new RpcProvider({
92
92
  nodeUrl: modularChainInfo.starknet.rpc,
93
- specVersion: "0.8.1",
93
+ specVersion: "0.9.0",
94
94
  });
95
95
  }
96
96
 
@@ -5,7 +5,11 @@ import {
5
5
  KeplrError,
6
6
  Message,
7
7
  } from "@keplr-wallet/router";
8
- import { GetTokenScansMsg, RevalidateTokenScansMsg } from "./messages";
8
+ import {
9
+ DismissNewTokenFoundInMainMsg,
10
+ GetTokenScansMsg,
11
+ RevalidateTokenScansMsg,
12
+ } from "./messages";
9
13
  import { TokenScanService } from "./service";
10
14
 
11
15
  export const getHandler: (service: TokenScanService) => Handler = (
@@ -20,6 +24,11 @@ export const getHandler: (service: TokenScanService) => Handler = (
20
24
  env,
21
25
  msg as RevalidateTokenScansMsg
22
26
  );
27
+ case DismissNewTokenFoundInMainMsg:
28
+ return handleDismissNewTokenFoundInMainMsg(service)(
29
+ env,
30
+ msg as DismissNewTokenFoundInMainMsg
31
+ );
23
32
  default:
24
33
  throw new KeplrError("tx", 110, "Unknown msg type");
25
34
  }
@@ -30,7 +39,15 @@ const handleGetTokenScansMsg: (
30
39
  service: TokenScanService
31
40
  ) => InternalHandler<GetTokenScansMsg> = (service) => {
32
41
  return (_, msg) => {
33
- return service.getTokenScans(msg.vaultId);
42
+ const tokenScans = service.getTokenScans(msg.vaultId);
43
+
44
+ return {
45
+ vaultId: msg.vaultId,
46
+ tokenScans: tokenScans,
47
+ tokenScansWithoutDismissed: tokenScans.filter((scan) =>
48
+ service.isMeaningfulTokenScanChangeBetweenDismissed(scan)
49
+ ),
50
+ };
34
51
  };
35
52
  };
36
53
 
@@ -39,9 +56,33 @@ const handleRevalidateTokenScansMsg: (
39
56
  ) => InternalHandler<RevalidateTokenScansMsg> = (service) => {
40
57
  return async (_, msg) => {
41
58
  await service.scanAll(msg.vaultId);
59
+
60
+ const tokenScans = service.getTokenScans(msg.vaultId);
61
+
62
+ return {
63
+ vaultId: msg.vaultId,
64
+ tokenScans: tokenScans,
65
+ tokenScansWithoutDismissed: tokenScans.filter((scan) =>
66
+ service.isMeaningfulTokenScanChangeBetweenDismissed(scan)
67
+ ),
68
+ };
69
+ };
70
+ };
71
+
72
+ const handleDismissNewTokenFoundInMainMsg: (
73
+ service: TokenScanService
74
+ ) => InternalHandler<DismissNewTokenFoundInMainMsg> = (service) => {
75
+ return async (_, msg) => {
76
+ service.dismissNewTokenFoundInHome(msg.vaultId);
77
+
78
+ const tokenScans = service.getTokenScans(msg.vaultId);
79
+
42
80
  return {
43
81
  vaultId: msg.vaultId,
44
- tokenScans: service.getTokenScans(msg.vaultId),
82
+ tokenScans: tokenScans,
83
+ tokenScansWithoutDismissed: tokenScans.filter((scan) =>
84
+ service.isMeaningfulTokenScanChangeBetweenDismissed(scan)
85
+ ),
45
86
  };
46
87
  };
47
88
  };
@@ -1,5 +1,9 @@
1
1
  import { Router } from "@keplr-wallet/router";
2
- import { GetTokenScansMsg, RevalidateTokenScansMsg } from "./messages";
2
+ import {
3
+ DismissNewTokenFoundInMainMsg,
4
+ GetTokenScansMsg,
5
+ RevalidateTokenScansMsg,
6
+ } from "./messages";
3
7
  import { ROUTE } from "./constants";
4
8
  import { getHandler } from "./handler";
5
9
  import { TokenScanService } from "./service";
@@ -7,6 +11,7 @@ import { TokenScanService } from "./service";
7
11
  export function init(router: Router, service: TokenScanService): void {
8
12
  router.registerMessage(GetTokenScansMsg);
9
13
  router.registerMessage(RevalidateTokenScansMsg);
14
+ router.registerMessage(DismissNewTokenFoundInMainMsg);
10
15
 
11
16
  router.addHandler(ROUTE, getHandler(service));
12
17
  }