@keplr-wallet/background 0.12.307-rc.0 → 0.12.307

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.
@@ -19,8 +19,6 @@ const getHandler = (service) => {
19
19
  return handleGetTokenScansMsg(service)(env, msg);
20
20
  case messages_1.RevalidateTokenScansMsg:
21
21
  return handleRevalidateTokenScansMsg(service)(env, msg);
22
- case messages_1.DismissNewTokenFoundInMainMsg:
23
- return handleDismissNewTokenFoundInMainMsg(service)(env, msg);
24
22
  default:
25
23
  throw new router_1.KeplrError("tx", 110, "Unknown msg type");
26
24
  }
@@ -29,33 +27,15 @@ const getHandler = (service) => {
29
27
  exports.getHandler = getHandler;
30
28
  const handleGetTokenScansMsg = (service) => {
31
29
  return (_, msg) => {
32
- const tokenScans = service.getTokenScans(msg.vaultId);
33
- return {
34
- vaultId: msg.vaultId,
35
- tokenScans: tokenScans,
36
- tokenScansWithoutDismissed: tokenScans.filter((scan) => service.isMeaningfulTokenScanChangeBetweenDismissed(scan)),
37
- };
30
+ return service.getTokenScans(msg.vaultId);
38
31
  };
39
32
  };
40
33
  const handleRevalidateTokenScansMsg = (service) => {
41
34
  return (_, msg) => __awaiter(void 0, void 0, void 0, function* () {
42
35
  yield service.scanAll(msg.vaultId);
43
- const tokenScans = service.getTokenScans(msg.vaultId);
44
- return {
45
- vaultId: msg.vaultId,
46
- tokenScans: tokenScans,
47
- tokenScansWithoutDismissed: tokenScans.filter((scan) => service.isMeaningfulTokenScanChangeBetweenDismissed(scan)),
48
- };
49
- });
50
- };
51
- const handleDismissNewTokenFoundInMainMsg = (service) => {
52
- return (_, msg) => __awaiter(void 0, void 0, void 0, function* () {
53
- service.dismissNewTokenFoundInHome(msg.vaultId);
54
- const tokenScans = service.getTokenScans(msg.vaultId);
55
36
  return {
56
37
  vaultId: msg.vaultId,
57
- tokenScans: tokenScans,
58
- tokenScansWithoutDismissed: tokenScans.filter((scan) => service.isMeaningfulTokenScanChangeBetweenDismissed(scan)),
38
+ tokenScans: service.getTokenScans(msg.vaultId),
59
39
  };
60
40
  });
61
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/token-scan/handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAM8B;AAC9B,yCAIoB;AAGb,MAAM,UAAU,GAA2C,CAChE,OAAyB,EACzB,EAAE;IACF,OAAO,CAAC,GAAQ,EAAE,GAAqB,EAAE,EAAE;QACzC,QAAQ,GAAG,CAAC,WAAW,EAAE;YACvB,KAAK,2BAAgB;gBACnB,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAuB,CAAC,CAAC;YACvE,KAAK,kCAAuB;gBAC1B,OAAO,6BAA6B,CAAC,OAAO,CAAC,CAC3C,GAAG,EACH,GAA8B,CAC/B,CAAC;YACJ,KAAK,wCAA6B;gBAChC,OAAO,mCAAmC,CAAC,OAAO,CAAC,CACjD,GAAG,EACH,GAAoC,CACrC,CAAC;YACJ;gBACE,MAAM,IAAI,mBAAU,CAAC,IAAI,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;SACvD;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,UAAU,cAqBrB;AAEF,MAAM,sBAAsB,GAEa,CAAC,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAChB,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,UAAU;YACtB,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrD,OAAO,CAAC,2CAA2C,CAAC,IAAI,CAAC,CAC1D;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAEa,CAAC,OAAO,EAAE,EAAE;IAC1D,OAAO,CAAO,CAAC,EAAE,GAAG,EAAE,EAAE;QACtB,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,UAAU;YACtB,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrD,OAAO,CAAC,2CAA2C,CAAC,IAAI,CAAC,CAC1D;SACF,CAAC;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mCAAmC,GAEa,CAAC,OAAO,EAAE,EAAE;IAChE,OAAO,CAAO,CAAC,EAAE,GAAG,EAAE,EAAE;QACtB,OAAO,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,UAAU;YACtB,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrD,OAAO,CAAC,2CAA2C,CAAC,IAAI,CAAC,CAC1D;SACF,CAAC;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/token-scan/handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAM8B;AAC9B,yCAAuE;AAGhE,MAAM,UAAU,GAA2C,CAChE,OAAyB,EACzB,EAAE;IACF,OAAO,CAAC,GAAQ,EAAE,GAAqB,EAAE,EAAE;QACzC,QAAQ,GAAG,CAAC,WAAW,EAAE;YACvB,KAAK,2BAAgB;gBACnB,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAuB,CAAC,CAAC;YACvE,KAAK,kCAAuB;gBAC1B,OAAO,6BAA6B,CAAC,OAAO,CAAC,CAC3C,GAAG,EACH,GAA8B,CAC/B,CAAC;YACJ;gBACE,MAAM,IAAI,mBAAU,CAAC,IAAI,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;SACvD;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,UAAU,cAgBrB;AAEF,MAAM,sBAAsB,GAEa,CAAC,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAChB,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAEa,CAAC,OAAO,EAAE,EAAE;IAC1D,OAAO,CAAO,CAAC,EAAE,GAAG,EAAE,EAAE;QACtB,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;SAC/C,CAAC;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC"}
@@ -7,7 +7,6 @@ const handler_1 = require("./handler");
7
7
  function init(router, service) {
8
8
  router.registerMessage(messages_1.GetTokenScansMsg);
9
9
  router.registerMessage(messages_1.RevalidateTokenScansMsg);
10
- router.registerMessage(messages_1.DismissNewTokenFoundInMainMsg);
11
10
  router.addHandler(constants_1.ROUTE, (0, handler_1.getHandler)(service));
12
11
  }
13
12
  exports.init = init;
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/token-scan/init.ts"],"names":[],"mappings":";;;AACA,yCAIoB;AACpB,2CAAoC;AACpC,uCAAuC;AAGvC,SAAgB,IAAI,CAAC,MAAc,EAAE,OAAyB;IAC5D,MAAM,CAAC,eAAe,CAAC,2BAAgB,CAAC,CAAC;IACzC,MAAM,CAAC,eAAe,CAAC,kCAAuB,CAAC,CAAC;IAChD,MAAM,CAAC,eAAe,CAAC,wCAA6B,CAAC,CAAC;IAEtD,MAAM,CAAC,UAAU,CAAC,iBAAK,EAAE,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AAND,oBAMC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/token-scan/init.ts"],"names":[],"mappings":";;;AACA,yCAAuE;AACvE,2CAAoC;AACpC,uCAAuC;AAGvC,SAAgB,IAAI,CAAC,MAAc,EAAE,OAAyB;IAC5D,MAAM,CAAC,eAAe,CAAC,2BAAgB,CAAC,CAAC;IACzC,MAAM,CAAC,eAAe,CAAC,kCAAuB,CAAC,CAAC;IAEhD,MAAM,CAAC,UAAU,CAAC,iBAAK,EAAE,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AALD,oBAKC"}
@@ -1,10 +1,6 @@
1
1
  import { Message } from "@keplr-wallet/router";
2
2
  import { TokenScan } from "./service";
3
- export declare class GetTokenScansMsg extends Message<{
4
- vaultId: string;
5
- tokenScans: TokenScan[];
6
- tokenScansWithoutDismissed: TokenScan[];
7
- }> {
3
+ export declare class GetTokenScansMsg extends Message<TokenScan[]> {
8
4
  readonly vaultId: string;
9
5
  static type(): string;
10
6
  constructor(vaultId: string);
@@ -15,19 +11,6 @@ export declare class GetTokenScansMsg extends Message<{
15
11
  export declare class RevalidateTokenScansMsg extends Message<{
16
12
  vaultId: string;
17
13
  tokenScans: TokenScan[];
18
- tokenScansWithoutDismissed: TokenScan[];
19
- }> {
20
- readonly vaultId: string;
21
- static type(): string;
22
- constructor(vaultId: string);
23
- validateBasic(): void;
24
- route(): string;
25
- type(): string;
26
- }
27
- export declare class DismissNewTokenFoundInMainMsg extends Message<{
28
- vaultId: string;
29
- tokenScans: TokenScan[];
30
- tokenScansWithoutDismissed: TokenScan[];
31
14
  }> {
32
15
  readonly vaultId: string;
33
16
  static type(): string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DismissNewTokenFoundInMainMsg = exports.RevalidateTokenScansMsg = exports.GetTokenScansMsg = void 0;
3
+ exports.RevalidateTokenScansMsg = exports.GetTokenScansMsg = void 0;
4
4
  const router_1 = require("@keplr-wallet/router");
5
5
  const constants_1 = require("./constants");
6
6
  class GetTokenScansMsg extends router_1.Message {
@@ -45,25 +45,4 @@ class RevalidateTokenScansMsg extends router_1.Message {
45
45
  }
46
46
  }
47
47
  exports.RevalidateTokenScansMsg = RevalidateTokenScansMsg;
48
- class DismissNewTokenFoundInMainMsg extends router_1.Message {
49
- static type() {
50
- return "dismiss-new-token-found-in-main";
51
- }
52
- constructor(vaultId) {
53
- super();
54
- this.vaultId = vaultId;
55
- }
56
- validateBasic() {
57
- if (!this.vaultId) {
58
- throw new Error("Empty vault id");
59
- }
60
- }
61
- route() {
62
- return constants_1.ROUTE;
63
- }
64
- type() {
65
- return DismissNewTokenFoundInMainMsg.type();
66
- }
67
- }
68
- exports.DismissNewTokenFoundInMainMsg = DismissNewTokenFoundInMainMsg;
69
48
  //# sourceMappingURL=messages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/token-scan/messages.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAE/C,2CAAoC;AAEpC,MAAa,gBAAiB,SAAQ,gBAIpC;IACO,MAAM,CAAC,IAAI;QAChB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,YAA4B,OAAe;QACzC,KAAK,EAAE,CAAC;QADkB,YAAO,GAAP,OAAO,CAAQ;IAE3C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACnC;IACH,CAAC;IAED,KAAK;QACH,OAAO,iBAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;CACF;AA1BD,4CA0BC;AAED,MAAa,uBAAwB,SAAQ,gBAI3C;IACO,MAAM,CAAC,IAAI;QAChB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,YAA4B,OAAe;QACzC,KAAK,EAAE,CAAC;QADkB,YAAO,GAAP,OAAO,CAAQ;IAE3C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACnC;IACH,CAAC;IAED,KAAK;QACH,OAAO,iBAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,OAAO,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;CACF;AA1BD,0DA0BC;AAED,MAAa,6BAA8B,SAAQ,gBAIjD;IACO,MAAM,CAAC,IAAI;QAChB,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IAED,YAA4B,OAAe;QACzC,KAAK,EAAE,CAAC;QADkB,YAAO,GAAP,OAAO,CAAQ;IAE3C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACnC;IACH,CAAC;IAED,KAAK;QACH,OAAO,iBAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,OAAO,6BAA6B,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;CACF;AA1BD,sEA0BC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/token-scan/messages.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAE/C,2CAAoC;AAEpC,MAAa,gBAAiB,SAAQ,gBAAoB;IACjD,MAAM,CAAC,IAAI;QAChB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,YAA4B,OAAe;QACzC,KAAK,EAAE,CAAC;QADkB,YAAO,GAAP,OAAO,CAAQ;IAE3C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACnC;IACH,CAAC;IAED,KAAK;QACH,OAAO,iBAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;CACF;AAtBD,4CAsBC;AAED,MAAa,uBAAwB,SAAQ,gBAG3C;IACO,MAAM,CAAC,IAAI;QAChB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,YAA4B,OAAe;QACzC,KAAK,EAAE,CAAC;QADkB,YAAO,GAAP,OAAO,CAAQ;IAE3C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACnC;IACH,CAAC;IAED,KAAK;QACH,OAAO,iBAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,OAAO,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;CACF;AAzBD,0DAyBC"}
@@ -8,26 +8,23 @@ import { KVStore } from "@keplr-wallet/common";
8
8
  import { KeyRingStarknetService } from "../keyring-starknet";
9
9
  import { KeyRingBitcoinService } from "../keyring-bitcoin";
10
10
  import { MessageRequester } from "@keplr-wallet/router";
11
- type Asset = {
12
- currency: AppCurrency;
13
- amount: string;
14
- };
15
- export type TokenScanInfo = {
16
- bech32Address?: string;
17
- ethereumHexAddress?: string;
18
- starknetHexAddress?: string;
19
- bitcoinAddress?: {
20
- bech32Address: string;
21
- paymentType: SupportedPaymentType;
22
- };
23
- coinType?: number;
24
- assets: Asset[];
25
- };
26
11
  export type TokenScan = {
27
12
  chainId: string;
28
- infos: TokenScanInfo[];
13
+ infos: {
14
+ bech32Address?: string;
15
+ ethereumHexAddress?: string;
16
+ starknetHexAddress?: string;
17
+ bitcoinAddress?: {
18
+ bech32Address: string;
19
+ paymentType: SupportedPaymentType;
20
+ };
21
+ coinType?: number;
22
+ assets: {
23
+ currency: AppCurrency;
24
+ amount: string;
25
+ }[];
26
+ }[];
29
27
  linkedChainKey?: string;
30
- dismissedInfos?: TokenScanInfo[];
31
28
  };
32
29
  export declare class TokenScanService {
33
30
  protected readonly kvStore: KVStore;
@@ -47,8 +44,4 @@ export declare class TokenScanService {
47
44
  scan(vaultId: string, chainId: string): Promise<void>;
48
45
  scanAll(vaultId: string): Promise<void>;
49
46
  protected calculateTokenScan(vaultId: string, chainId: string): Promise<TokenScan | undefined>;
50
- dismissNewTokenFoundInHome(vaultId: string): void;
51
- resetDismiss(vaultId: string): void;
52
- isMeaningfulTokenScanChangeBetweenDismissed(tokenScan: TokenScan): boolean;
53
47
  }
54
- export {};
@@ -97,12 +97,12 @@ class TokenScanService {
97
97
  }
98
98
  });
99
99
  });
100
- this.chainsService.addChainRemovedHandler((chainInfo) => {
100
+ this.chainsUIService.addChainUIEnabledChangedHandler((vaultId, chainIdentifiers) => {
101
101
  (0, mobx_1.runInAction)(() => {
102
- for (const [vaultId, tokenScans] of this.vaultToMap.entries()) {
103
- let prevTokenScans = tokenScans;
104
- prevTokenScans = prevTokenScans.filter((scan) => {
105
- return scan.chainId !== chainInfo.chainId;
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);
106
106
  });
107
107
  this.vaultToMap.set(vaultId, prevTokenScans);
108
108
  }
@@ -114,9 +114,8 @@ class TokenScanService {
114
114
  var _a;
115
115
  return ((_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [])
116
116
  .filter((tokenScan) => {
117
- return ((this.chainsService.hasChainInfo(tokenScan.chainId) ||
118
- this.chainsService.hasModularChainInfo(tokenScan.chainId)) &&
119
- !this.chainsUIService.isEnabled(vaultId, tokenScan.chainId));
117
+ return (this.chainsService.hasChainInfo(tokenScan.chainId) ||
118
+ this.chainsService.hasModularChainInfo(tokenScan.chainId));
120
119
  })
121
120
  .sort((a, b) => {
122
121
  // Sort by chain name
@@ -183,14 +182,11 @@ class TokenScanService {
183
182
  var _a;
184
183
  let prevTokenScans = (_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [];
185
184
  const chainIdentifier = cosmos_1.ChainIdHelper.parse(tokenScan.chainId).identifier;
186
- const prevTokenScan = prevTokenScans.find((scan) => {
187
- return (cosmos_1.ChainIdHelper.parse(scan.chainId).identifier === chainIdentifier);
188
- });
189
185
  prevTokenScans = prevTokenScans.filter((scan) => {
190
186
  const prevChainIdentifier = cosmos_1.ChainIdHelper.parse(scan.chainId).identifier;
191
187
  return chainIdentifier !== prevChainIdentifier;
192
188
  });
193
- prevTokenScans.push(Object.assign(Object.assign({}, prevTokenScan), tokenScan));
189
+ prevTokenScans.push(tokenScan);
194
190
  this.vaultToMap.set(vaultId, prevTokenScans);
195
191
  });
196
192
  }
@@ -229,22 +225,22 @@ class TokenScanService {
229
225
  let prevTokenScans = (_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [];
230
226
  for (const tokenScan of tokenScans) {
231
227
  const chainIdentifier = cosmos_1.ChainIdHelper.parse(tokenScan.chainId).identifier;
232
- const prevTokenScan = prevTokenScans.find((scan) => {
233
- return (cosmos_1.ChainIdHelper.parse(scan.chainId).identifier === chainIdentifier);
234
- });
235
228
  prevTokenScans = prevTokenScans.filter((scan) => {
236
229
  const prevChainIdentifier = cosmos_1.ChainIdHelper.parse(scan.chainId).identifier;
237
230
  return chainIdentifier !== prevChainIdentifier;
238
231
  });
239
- prevTokenScans.push(Object.assign(Object.assign({}, prevTokenScan), tokenScan));
232
+ prevTokenScans.push(tokenScan);
240
233
  }
234
+ prevTokenScans = prevTokenScans.filter((scan) => {
235
+ return !this.chainsUIService.isEnabled(vaultId, scan.chainId);
236
+ });
241
237
  this.vaultToMap.set(vaultId, prevTokenScans);
242
238
  });
243
239
  }
244
240
  });
245
241
  }
246
242
  calculateTokenScan(vaultId, chainId) {
247
- var _a, _b, _c, _d, _e;
243
+ var _a, _b, _c;
248
244
  return __awaiter(this, void 0, void 0, function* () {
249
245
  if (this.keyRingService.keyRingStatus !== "unlocked") {
250
246
  return;
@@ -328,23 +324,14 @@ class TokenScanService {
328
324
  const assets = [];
329
325
  const balances = (_c = (_b = res.data) === null || _b === void 0 ? void 0 : _b.balances) !== null && _c !== void 0 ? _c : [];
330
326
  for (const bal of balances) {
331
- let currency = chainInfo.currencies.find((cur) => cur.coinMinimalDenom === bal.denom);
332
- // IBC 토큰의 경우 일단 여기서 반환하고
333
- // 사용하는 쪽에서 가공한다.
334
- if (!currency && bal.denom.startsWith("ibc/")) {
335
- currency = {
336
- coinMinimalDenom: bal.denom,
337
- coinDenom: bal.denom,
338
- coinDecimals: (_e = (_d = chainInfo.stakeCurrency) === null || _d === void 0 ? void 0 : _d.coinDecimals) !== null && _e !== void 0 ? _e : 6,
339
- };
340
- }
327
+ const currency = chainInfo.currencies.find((cur) => cur.coinMinimalDenom === bal.denom);
341
328
  if (currency) {
342
329
  // validate
343
330
  if (typeof bal.amount !== "string") {
344
331
  throw new Error("Invalid amount");
345
332
  }
346
333
  const dec = new unit_1.Dec(bal.amount);
347
- if (dec.gte(new unit_1.Dec(0))) {
334
+ if (dec.gt(new unit_1.Dec(0))) {
348
335
  assets.push({
349
336
  currency,
350
337
  amount: bal.amount,
@@ -399,25 +386,27 @@ class TokenScanService {
399
386
  })
400
387
  .toBigInt()
401
388
  .toString(10);
402
- // XXX: Starknet의 경우는 여러 주소가 나올수가 없으므로
403
- // starknetHexAddress는 같은 값으로 나온다고 생각하고 처리한다.
404
- if (tokenScan.infos.length === 0) {
405
- tokenScan.infos.push({
406
- starknetHexAddress,
407
- assets: [
408
- {
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({
409
406
  currency,
410
407
  amount,
411
- },
412
- ],
413
- });
414
- }
415
- else {
416
- if (tokenScan.infos[0].starknetHexAddress === starknetHexAddress) {
417
- tokenScan.infos[0].assets.push({
418
- currency,
419
- amount,
420
- });
408
+ });
409
+ }
421
410
  }
422
411
  }
423
412
  }
@@ -466,10 +455,22 @@ class TokenScanService {
466
455
  if (bitcoinScanInfos.length !== linkedBitcoinChains.length) {
467
456
  throw new Error("Invalid bitcoin scan info: length mismatch between linked bitcoin chains and bitcoin scan infos");
468
457
  }
469
- tokenScan.infos.push(...bitcoinScanInfos);
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
+ }
470
471
  }
471
472
  else {
472
- const bitcoinScanInfo = yield getBitcoinScanInfo(vaultId, chainId, true);
473
+ const bitcoinScanInfo = yield getBitcoinScanInfo(vaultId, chainId, false);
473
474
  if (bitcoinScanInfo) {
474
475
  tokenScan.infos.push(bitcoinScanInfo);
475
476
  }
@@ -481,96 +482,6 @@ class TokenScanService {
481
482
  return undefined;
482
483
  });
483
484
  }
484
- dismissNewTokenFoundInHome(vaultId) {
485
- var _a;
486
- const prevTokenScans = (_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [];
487
- for (const prevTokenScan of prevTokenScans) {
488
- prevTokenScan.dismissedInfos = prevTokenScan.infos;
489
- }
490
- this.vaultToMap.set(vaultId, prevTokenScans);
491
- }
492
- resetDismiss(vaultId) {
493
- var _a;
494
- const prevTokenScans = (_a = this.vaultToMap.get(vaultId)) !== null && _a !== void 0 ? _a : [];
495
- for (const prevTokenScan of prevTokenScans) {
496
- prevTokenScan.dismissedInfos = undefined;
497
- }
498
- this.vaultToMap.set(vaultId, prevTokenScans);
499
- }
500
- isMeaningfulTokenScanChangeBetweenDismissed(tokenScan) {
501
- var _a;
502
- if (!tokenScan.dismissedInfos || tokenScan.dismissedInfos.length === 0) {
503
- return tokenScan.infos.length > 0;
504
- }
505
- const makeKey = (info) => {
506
- var _a;
507
- if (info.bech32Address)
508
- return `bech32:${info.bech32Address}`;
509
- if (info.ethereumHexAddress)
510
- return `eth:${info.ethereumHexAddress}`;
511
- if (info.starknetHexAddress)
512
- return `stark:${info.starknetHexAddress}`;
513
- if ((_a = info.bitcoinAddress) === null || _a === void 0 ? void 0 : _a.bech32Address)
514
- return `btc:${info.bitcoinAddress.bech32Address}`;
515
- if (info.coinType != null)
516
- return `coin:${info.coinType}`;
517
- return undefined;
518
- };
519
- const toBigIntSafe = (v) => {
520
- try {
521
- return BigInt(v);
522
- }
523
- catch (_a) {
524
- return undefined;
525
- }
526
- };
527
- const dismissedTokenInfosMap = new Map();
528
- for (const info of (_a = tokenScan.dismissedInfos) !== null && _a !== void 0 ? _a : []) {
529
- const key = makeKey(info);
530
- if (key) {
531
- dismissedTokenInfosMap.set(key, info);
532
- }
533
- }
534
- for (const info of tokenScan.infos) {
535
- const key = makeKey(info);
536
- if (!key) {
537
- continue;
538
- }
539
- const dismissedTokenInfo = dismissedTokenInfosMap.get(key);
540
- if (!dismissedTokenInfo) {
541
- if (info.assets.length > 0) {
542
- return true;
543
- }
544
- continue;
545
- }
546
- const dismissedAssetMap = new Map();
547
- for (const asset of dismissedTokenInfo.assets) {
548
- dismissedAssetMap.set(asset.currency.coinMinimalDenom, asset);
549
- }
550
- for (const asset of info.assets) {
551
- const prevAsset = dismissedAssetMap.get(asset.currency.coinMinimalDenom);
552
- // 없던 토큰이 생긴경우
553
- if (!prevAsset) {
554
- return true;
555
- }
556
- const prevAmount = toBigIntSafe(prevAsset.amount);
557
- const curAmount = toBigIntSafe(asset.amount);
558
- if (prevAmount == null || curAmount == null) {
559
- continue;
560
- }
561
- // 이전에 0이였다가 밸런스가 생긴경우.
562
- if (prevAmount === BigInt(0) && curAmount > BigInt(0)) {
563
- return true;
564
- }
565
- // 이전 밸런스에 배해서 10% 밸런스가 증가한 경우
566
- if (prevAmount > BigInt(0) &&
567
- curAmount * BigInt(10) >= prevAmount * BigInt(11)) {
568
- return true;
569
- }
570
- }
571
- }
572
- return false;
573
- }
574
485
  }
575
486
  __decorate([
576
487
  mobx_1.observable
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/background",
3
- "version": "0.12.307-rc.0",
3
+ "version": "0.12.307",
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.307-rc.0",
36
- "@keplr-wallet/common": "0.12.307-rc.0",
37
- "@keplr-wallet/cosmos": "0.12.307-rc.0",
38
- "@keplr-wallet/crypto": "0.12.307-rc.0",
39
- "@keplr-wallet/ledger-cosmos": "0.12.307-rc.0",
40
- "@keplr-wallet/popup": "0.12.307-rc.0",
41
- "@keplr-wallet/proto-types": "0.12.307-rc.0",
42
- "@keplr-wallet/router": "0.12.307-rc.0",
43
- "@keplr-wallet/simple-fetch": "0.12.307-rc.0",
44
- "@keplr-wallet/types": "0.12.307-rc.0",
45
- "@keplr-wallet/unit": "0.12.307-rc.0",
35
+ "@keplr-wallet/chain-validator": "0.12.307",
36
+ "@keplr-wallet/common": "0.12.307",
37
+ "@keplr-wallet/cosmos": "0.12.307",
38
+ "@keplr-wallet/crypto": "0.12.307",
39
+ "@keplr-wallet/ledger-cosmos": "0.12.307",
40
+ "@keplr-wallet/popup": "0.12.307",
41
+ "@keplr-wallet/proto-types": "0.12.307",
42
+ "@keplr-wallet/router": "0.12.307",
43
+ "@keplr-wallet/simple-fetch": "0.12.307",
44
+ "@keplr-wallet/types": "0.12.307",
45
+ "@keplr-wallet/unit": "0.12.307",
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": "b10567552e9f974c1a9e01c9950f01dd3298b0cc"
72
+ "gitHead": "cd819653c3b98b2515e834140ba19b4851d5d936"
73
73
  }
@@ -5,11 +5,7 @@ import {
5
5
  KeplrError,
6
6
  Message,
7
7
  } from "@keplr-wallet/router";
8
- import {
9
- DismissNewTokenFoundInMainMsg,
10
- GetTokenScansMsg,
11
- RevalidateTokenScansMsg,
12
- } from "./messages";
8
+ import { GetTokenScansMsg, RevalidateTokenScansMsg } from "./messages";
13
9
  import { TokenScanService } from "./service";
14
10
 
15
11
  export const getHandler: (service: TokenScanService) => Handler = (
@@ -24,11 +20,6 @@ export const getHandler: (service: TokenScanService) => Handler = (
24
20
  env,
25
21
  msg as RevalidateTokenScansMsg
26
22
  );
27
- case DismissNewTokenFoundInMainMsg:
28
- return handleDismissNewTokenFoundInMainMsg(service)(
29
- env,
30
- msg as DismissNewTokenFoundInMainMsg
31
- );
32
23
  default:
33
24
  throw new KeplrError("tx", 110, "Unknown msg type");
34
25
  }
@@ -39,15 +30,7 @@ const handleGetTokenScansMsg: (
39
30
  service: TokenScanService
40
31
  ) => InternalHandler<GetTokenScansMsg> = (service) => {
41
32
  return (_, msg) => {
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
- };
33
+ return service.getTokenScans(msg.vaultId);
51
34
  };
52
35
  };
53
36
 
@@ -56,33 +39,9 @@ const handleRevalidateTokenScansMsg: (
56
39
  ) => InternalHandler<RevalidateTokenScansMsg> = (service) => {
57
40
  return async (_, msg) => {
58
41
  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
-
80
42
  return {
81
43
  vaultId: msg.vaultId,
82
- tokenScans: tokenScans,
83
- tokenScansWithoutDismissed: tokenScans.filter((scan) =>
84
- service.isMeaningfulTokenScanChangeBetweenDismissed(scan)
85
- ),
44
+ tokenScans: service.getTokenScans(msg.vaultId),
86
45
  };
87
46
  };
88
47
  };
@@ -1,9 +1,5 @@
1
1
  import { Router } from "@keplr-wallet/router";
2
- import {
3
- DismissNewTokenFoundInMainMsg,
4
- GetTokenScansMsg,
5
- RevalidateTokenScansMsg,
6
- } from "./messages";
2
+ import { GetTokenScansMsg, RevalidateTokenScansMsg } from "./messages";
7
3
  import { ROUTE } from "./constants";
8
4
  import { getHandler } from "./handler";
9
5
  import { TokenScanService } from "./service";
@@ -11,7 +7,6 @@ import { TokenScanService } from "./service";
11
7
  export function init(router: Router, service: TokenScanService): void {
12
8
  router.registerMessage(GetTokenScansMsg);
13
9
  router.registerMessage(RevalidateTokenScansMsg);
14
- router.registerMessage(DismissNewTokenFoundInMainMsg);
15
10
 
16
11
  router.addHandler(ROUTE, getHandler(service));
17
12
  }
@@ -2,11 +2,7 @@ import { Message } from "@keplr-wallet/router";
2
2
  import { TokenScan } from "./service";
3
3
  import { ROUTE } from "./constants";
4
4
 
5
- export class GetTokenScansMsg extends Message<{
6
- vaultId: string;
7
- tokenScans: TokenScan[];
8
- tokenScansWithoutDismissed: TokenScan[];
9
- }> {
5
+ export class GetTokenScansMsg extends Message<TokenScan[]> {
10
6
  public static type() {
11
7
  return "get-token-scans";
12
8
  }
@@ -33,7 +29,6 @@ export class GetTokenScansMsg extends Message<{
33
29
  export class RevalidateTokenScansMsg extends Message<{
34
30
  vaultId: string;
35
31
  tokenScans: TokenScan[];
36
- tokenScansWithoutDismissed: TokenScan[];
37
32
  }> {
38
33
  public static type() {
39
34
  return "revalidate-token-scans";
@@ -57,31 +52,3 @@ export class RevalidateTokenScansMsg extends Message<{
57
52
  return RevalidateTokenScansMsg.type();
58
53
  }
59
54
  }
60
-
61
- export class DismissNewTokenFoundInMainMsg extends Message<{
62
- vaultId: string;
63
- tokenScans: TokenScan[];
64
- tokenScansWithoutDismissed: TokenScan[];
65
- }> {
66
- public static type() {
67
- return "dismiss-new-token-found-in-main";
68
- }
69
-
70
- constructor(public readonly vaultId: string) {
71
- super();
72
- }
73
-
74
- validateBasic(): void {
75
- if (!this.vaultId) {
76
- throw new Error("Empty vault id");
77
- }
78
- }
79
-
80
- route(): string {
81
- return ROUTE;
82
- }
83
-
84
- type(): string {
85
- return DismissNewTokenFoundInMainMsg.type();
86
- }
87
- }
@@ -14,28 +14,23 @@ import { CairoUint256 } from "starknet";
14
14
  import { KeyRingBitcoinService } from "../keyring-bitcoin";
15
15
  import { MessageRequester } from "@keplr-wallet/router";
16
16
 
17
- type Asset = {
18
- currency: AppCurrency;
19
- amount: string;
20
- };
21
-
22
- export type TokenScanInfo = {
23
- bech32Address?: string;
24
- ethereumHexAddress?: string;
25
- starknetHexAddress?: string;
26
- bitcoinAddress?: {
27
- bech32Address: string;
28
- paymentType: SupportedPaymentType;
29
- };
30
- coinType?: number;
31
- assets: Asset[];
32
- };
33
-
34
17
  export type TokenScan = {
35
18
  chainId: string;
36
- infos: TokenScanInfo[];
19
+ infos: {
20
+ bech32Address?: string;
21
+ ethereumHexAddress?: string;
22
+ starknetHexAddress?: string;
23
+ bitcoinAddress?: {
24
+ bech32Address: string;
25
+ paymentType: SupportedPaymentType;
26
+ };
27
+ coinType?: number;
28
+ assets: {
29
+ currency: AppCurrency;
30
+ amount: string;
31
+ }[];
32
+ }[];
37
33
  linkedChainKey?: string;
38
- dismissedInfos?: TokenScanInfo[];
39
34
  };
40
35
 
41
36
  export class TokenScanService {
@@ -132,28 +127,29 @@ export class TokenScanService {
132
127
  });
133
128
  }
134
129
  );
135
-
136
- this.chainsService.addChainRemovedHandler((chainInfo) => {
137
- runInAction(() => {
138
- for (const [vaultId, tokenScans] of this.vaultToMap.entries()) {
139
- let prevTokenScans = tokenScans;
140
- prevTokenScans = prevTokenScans.filter((scan) => {
141
- return scan.chainId !== chainInfo.chainId;
142
- });
143
-
144
- this.vaultToMap.set(vaultId, prevTokenScans);
145
- }
146
- });
147
- });
130
+ this.chainsUIService.addChainUIEnabledChangedHandler(
131
+ (vaultId, chainIdentifiers) => {
132
+ runInAction(() => {
133
+ let prevTokenScans = this.vaultToMap.get(vaultId);
134
+ if (prevTokenScans) {
135
+ prevTokenScans = prevTokenScans.filter((tokenScan) => {
136
+ return !chainIdentifiers.includes(
137
+ ChainIdHelper.parse(tokenScan.chainId).identifier
138
+ );
139
+ });
140
+ this.vaultToMap.set(vaultId, prevTokenScans);
141
+ }
142
+ });
143
+ }
144
+ );
148
145
  }
149
146
 
150
147
  getTokenScans(vaultId: string): TokenScan[] {
151
148
  return (this.vaultToMap.get(vaultId) ?? [])
152
149
  .filter((tokenScan) => {
153
150
  return (
154
- (this.chainsService.hasChainInfo(tokenScan.chainId) ||
155
- this.chainsService.hasModularChainInfo(tokenScan.chainId)) &&
156
- !this.chainsUIService.isEnabled(vaultId, tokenScan.chainId)
151
+ this.chainsService.hasChainInfo(tokenScan.chainId) ||
152
+ this.chainsService.hasModularChainInfo(tokenScan.chainId)
157
153
  );
158
154
  })
159
155
  .sort((a, b) => {
@@ -229,13 +225,6 @@ export class TokenScanService {
229
225
  const chainIdentifier = ChainIdHelper.parse(
230
226
  tokenScan.chainId
231
227
  ).identifier;
232
-
233
- const prevTokenScan = prevTokenScans.find((scan) => {
234
- return (
235
- ChainIdHelper.parse(scan.chainId).identifier === chainIdentifier
236
- );
237
- });
238
-
239
228
  prevTokenScans = prevTokenScans.filter((scan) => {
240
229
  const prevChainIdentifier = ChainIdHelper.parse(
241
230
  scan.chainId
@@ -243,10 +232,7 @@ export class TokenScanService {
243
232
  return chainIdentifier !== prevChainIdentifier;
244
233
  });
245
234
 
246
- prevTokenScans.push({
247
- ...prevTokenScan,
248
- ...tokenScan,
249
- });
235
+ prevTokenScans.push(tokenScan);
250
236
 
251
237
  this.vaultToMap.set(vaultId, prevTokenScans);
252
238
  });
@@ -302,13 +288,6 @@ export class TokenScanService {
302
288
  const chainIdentifier = ChainIdHelper.parse(
303
289
  tokenScan.chainId
304
290
  ).identifier;
305
-
306
- const prevTokenScan = prevTokenScans.find((scan) => {
307
- return (
308
- ChainIdHelper.parse(scan.chainId).identifier === chainIdentifier
309
- );
310
- });
311
-
312
291
  prevTokenScans = prevTokenScans.filter((scan) => {
313
292
  const prevChainIdentifier = ChainIdHelper.parse(
314
293
  scan.chainId
@@ -316,12 +295,13 @@ export class TokenScanService {
316
295
  return chainIdentifier !== prevChainIdentifier;
317
296
  });
318
297
 
319
- prevTokenScans.push({
320
- ...prevTokenScan,
321
- ...tokenScan,
322
- });
298
+ prevTokenScans.push(tokenScan);
323
299
  }
324
300
 
301
+ prevTokenScans = prevTokenScans.filter((scan) => {
302
+ return !this.chainsUIService.isEnabled(vaultId, scan.chainId);
303
+ });
304
+
325
305
  this.vaultToMap.set(vaultId, prevTokenScans);
326
306
  });
327
307
  }
@@ -442,24 +422,13 @@ export class TokenScanService {
442
422
  );
443
423
 
444
424
  if (res.status === 200) {
445
- const assets: TokenScanInfo["assets"] = [];
425
+ const assets: TokenScan["infos"][number]["assets"] = [];
446
426
 
447
427
  const balances = res.data?.balances ?? [];
448
428
  for (const bal of balances) {
449
- let currency = chainInfo.currencies.find(
429
+ const currency = chainInfo.currencies.find(
450
430
  (cur) => cur.coinMinimalDenom === bal.denom
451
431
  );
452
-
453
- // IBC 토큰의 경우 일단 여기서 반환하고
454
- // 사용하는 쪽에서 가공한다.
455
- if (!currency && bal.denom.startsWith("ibc/")) {
456
- currency = {
457
- coinMinimalDenom: bal.denom,
458
- coinDenom: bal.denom,
459
- coinDecimals: chainInfo.stakeCurrency?.coinDecimals ?? 6,
460
- };
461
- }
462
-
463
432
  if (currency) {
464
433
  // validate
465
434
  if (typeof bal.amount !== "string") {
@@ -467,7 +436,7 @@ export class TokenScanService {
467
436
  }
468
437
 
469
438
  const dec = new Dec(bal.amount);
470
- if (dec.gte(new Dec(0))) {
439
+ if (dec.gt(new Dec(0))) {
471
440
  assets.push({
472
441
  currency,
473
442
  amount: bal.amount,
@@ -533,26 +502,28 @@ export class TokenScanService {
533
502
  .toBigInt()
534
503
  .toString(10);
535
504
 
536
- // XXX: Starknet의 경우는 여러 주소가 나올수가 없으므로
537
- // starknetHexAddress는 같은 값으로 나온다고 생각하고 처리한다.
538
- if (tokenScan.infos.length === 0) {
539
- tokenScan.infos.push({
540
- starknetHexAddress,
541
- assets: [
542
- {
505
+ if (amount !== "0") {
506
+ // XXX: Starknet의 경우는 여러 주소가 나올수가 없으므로
507
+ // starknetHexAddress는 같은 값으로 나온다고 생각하고 처리한다.
508
+ if (tokenScan.infos.length === 0) {
509
+ tokenScan.infos.push({
510
+ starknetHexAddress,
511
+ assets: [
512
+ {
513
+ currency,
514
+ amount,
515
+ },
516
+ ],
517
+ });
518
+ } else {
519
+ if (
520
+ tokenScan.infos[0].starknetHexAddress === starknetHexAddress
521
+ ) {
522
+ tokenScan.infos[0].assets.push({
543
523
  currency,
544
524
  amount,
545
- },
546
- ],
547
- });
548
- } else {
549
- if (
550
- tokenScan.infos[0].starknetHexAddress === starknetHexAddress
551
- ) {
552
- tokenScan.infos[0].assets.push({
553
- currency,
554
- amount,
555
- });
525
+ });
526
+ }
556
527
  }
557
528
  }
558
529
  }
@@ -642,125 +613,40 @@ export class TokenScanService {
642
613
  );
643
614
  }
644
615
 
645
- tokenScan.infos.push(...bitcoinScanInfos);
616
+ let hasNonZeroAmount = false;
617
+
618
+ for (const bitcoinScanInfo of bitcoinScanInfos) {
619
+ // 우선 main currency만 처리한다.
620
+ if (
621
+ bitcoinScanInfo.assets.length > 0 &&
622
+ bitcoinScanInfo.assets[0].amount !== "0"
623
+ ) {
624
+ hasNonZeroAmount = true;
625
+ break;
626
+ }
627
+ }
628
+
629
+ // 하나라도 0이 아닌 값이 있으면 연결된 모든 체인에 대해 토큰 스캔 정보를 추가한다.
630
+ if (hasNonZeroAmount) {
631
+ tokenScan.infos.push(...bitcoinScanInfos);
632
+ }
646
633
  } else {
647
634
  const bitcoinScanInfo = await getBitcoinScanInfo(
648
635
  vaultId,
649
636
  chainId,
650
- true
637
+ false
651
638
  );
639
+
652
640
  if (bitcoinScanInfo) {
653
641
  tokenScan.infos.push(bitcoinScanInfo);
654
642
  }
655
643
  }
656
644
  }
645
+
657
646
  if (tokenScan.infos.length > 0) {
658
647
  return tokenScan;
659
648
  }
660
649
 
661
650
  return undefined;
662
651
  }
663
-
664
- dismissNewTokenFoundInHome(vaultId: string) {
665
- const prevTokenScans = this.vaultToMap.get(vaultId) ?? [];
666
- for (const prevTokenScan of prevTokenScans) {
667
- prevTokenScan.dismissedInfos = prevTokenScan.infos;
668
- }
669
- this.vaultToMap.set(vaultId, prevTokenScans);
670
- }
671
-
672
- resetDismiss(vaultId: string) {
673
- const prevTokenScans = this.vaultToMap.get(vaultId) ?? [];
674
- for (const prevTokenScan of prevTokenScans) {
675
- prevTokenScan.dismissedInfos = undefined;
676
- }
677
- this.vaultToMap.set(vaultId, prevTokenScans);
678
- }
679
-
680
- public isMeaningfulTokenScanChangeBetweenDismissed(
681
- tokenScan: TokenScan
682
- ): boolean {
683
- if (!tokenScan.dismissedInfos || tokenScan.dismissedInfos.length === 0) {
684
- return tokenScan.infos.length > 0;
685
- }
686
-
687
- const makeKey = (info: TokenScanInfo): string | undefined => {
688
- if (info.bech32Address) return `bech32:${info.bech32Address}`;
689
- if (info.ethereumHexAddress) return `eth:${info.ethereumHexAddress}`;
690
- if (info.starknetHexAddress) return `stark:${info.starknetHexAddress}`;
691
- if (info.bitcoinAddress?.bech32Address)
692
- return `btc:${info.bitcoinAddress.bech32Address}`;
693
- if (info.coinType != null) return `coin:${info.coinType}`;
694
- return undefined;
695
- };
696
-
697
- const toBigIntSafe = (v: string): bigint | undefined => {
698
- try {
699
- return BigInt(v);
700
- } catch {
701
- return undefined;
702
- }
703
- };
704
-
705
- const dismissedTokenInfosMap = new Map<string, TokenScanInfo>();
706
- for (const info of tokenScan.dismissedInfos ?? []) {
707
- const key = makeKey(info);
708
- if (key) {
709
- dismissedTokenInfosMap.set(key, info);
710
- }
711
- }
712
-
713
- for (const info of tokenScan.infos) {
714
- const key = makeKey(info);
715
- if (!key) {
716
- continue;
717
- }
718
-
719
- const dismissedTokenInfo = dismissedTokenInfosMap.get(key);
720
-
721
- if (!dismissedTokenInfo) {
722
- if (info.assets.length > 0) {
723
- return true;
724
- }
725
- continue;
726
- }
727
-
728
- const dismissedAssetMap = new Map<string, Asset>();
729
- for (const asset of dismissedTokenInfo.assets) {
730
- dismissedAssetMap.set(asset.currency.coinMinimalDenom, asset);
731
- }
732
-
733
- for (const asset of info.assets) {
734
- const prevAsset = dismissedAssetMap.get(
735
- asset.currency.coinMinimalDenom
736
- );
737
-
738
- // 없던 토큰이 생긴경우
739
- if (!prevAsset) {
740
- return true;
741
- }
742
-
743
- const prevAmount = toBigIntSafe(prevAsset.amount);
744
- const curAmount = toBigIntSafe(asset.amount);
745
- if (prevAmount == null || curAmount == null) {
746
- continue;
747
- }
748
-
749
- // 이전에 0이였다가 밸런스가 생긴경우.
750
- if (prevAmount === BigInt(0) && curAmount > BigInt(0)) {
751
- return true;
752
- }
753
-
754
- // 이전 밸런스에 배해서 10% 밸런스가 증가한 경우
755
- if (
756
- prevAmount > BigInt(0) &&
757
- curAmount * BigInt(10) >= prevAmount * BigInt(11)
758
- ) {
759
- return true;
760
- }
761
- }
762
- }
763
-
764
- return false;
765
- }
766
652
  }