@keplr-wallet/background 0.12.30 → 0.12.31-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.
@@ -32,6 +32,7 @@ export declare class RecentSendHistoryService {
32
32
  denom: string;
33
33
  }, swapChannelIndex: number, swapReceiver: string[]): Promise<Uint8Array>;
34
34
  trackIBCPacketForwardingRecursive(id: string): void;
35
+ protected trackIBCPacketForwardingRecursiveInternal: (id: string, onFulfill: () => void, onClose: () => void, onError: () => void) => void;
35
36
  getRecentSendHistories(chainId: string, type: string): RecentSendHistory[];
36
37
  addRecentSendHistory(chainId: string, type: string, history: Omit<RecentSendHistory, "timestamp">): void;
37
38
  addRecentIBCTransferHistory(chainId: string, destinationChainId: string, sender: string, recipient: string, amount: {
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.RecentSendHistoryService = void 0;
19
19
  const cosmos_1 = require("@keplr-wallet/cosmos");
20
20
  const mobx_1 = require("mobx");
21
+ const common_1 = require("@keplr-wallet/common");
21
22
  const buffer_1 = require("buffer/");
22
23
  class RecentSendHistoryService {
23
24
  constructor(kvStore, chainsService, txService) {
@@ -29,6 +30,186 @@ class RecentSendHistoryService {
29
30
  this.recentIBCHistorySeq = 0;
30
31
  // Key: id (sequence, it should be increased by 1 for each)
31
32
  this.recentIBCHistoryMap = new Map();
33
+ // ibc packet forwarding을 위한 recursive function이면서
34
+ // 실패시 retry를 수행하기 위해서 분리되어 있음
35
+ // trackIBCPacketForwardingRecursive도 참고
36
+ // trackIBCPacketForwardingRecursive의 주석을 보면 알겠지만
37
+ // tx tracer가 close된 이후에는 동기적인 로직만 있어야함.
38
+ this.trackIBCPacketForwardingRecursiveInternal = (id, onFulfill, onClose, onError) => {
39
+ const history = this.getRecentIBCHistory(id);
40
+ if (!history) {
41
+ onFulfill();
42
+ return;
43
+ }
44
+ const needRewind = (() => {
45
+ if (!history.txFulfilled) {
46
+ return false;
47
+ }
48
+ if (history.ibcHistory.length === 0) {
49
+ return false;
50
+ }
51
+ return history.ibcHistory.find((h) => h.error != null) != null;
52
+ })();
53
+ if (needRewind) {
54
+ const lastRewoundChannelIndex = history.ibcHistory.findIndex((h) => {
55
+ if (h.rewound) {
56
+ return true;
57
+ }
58
+ });
59
+ const targetChannel = (() => {
60
+ if (lastRewoundChannelIndex >= 0) {
61
+ if (lastRewoundChannelIndex === 0) {
62
+ return undefined;
63
+ }
64
+ return history.ibcHistory[lastRewoundChannelIndex - 1];
65
+ }
66
+ return history.ibcHistory.find((h) => h.error != null);
67
+ })();
68
+ if (targetChannel && targetChannel.sequence) {
69
+ const prevChainInfo = (() => {
70
+ const targetChannelIndex = history.ibcHistory.findIndex((h) => h === targetChannel);
71
+ if (targetChannelIndex < 0) {
72
+ return undefined;
73
+ }
74
+ if (targetChannelIndex === 0) {
75
+ return this.chainsService.getChainInfo(history.chainId);
76
+ }
77
+ return this.chainsService.getChainInfo(history.ibcHistory[targetChannelIndex - 1].counterpartyChainId);
78
+ })();
79
+ if (prevChainInfo) {
80
+ const txTracer = new cosmos_1.TendermintTxTracer(prevChainInfo.rpc, "/websocket");
81
+ txTracer.addEventListener("close", onClose);
82
+ txTracer.addEventListener("error", onError);
83
+ txTracer
84
+ .traceTx({
85
+ "acknowledge_packet.packet_src_port": targetChannel.portId,
86
+ "acknowledge_packet.packet_src_channel": targetChannel.channelId,
87
+ "acknowledge_packet.packet_sequence": targetChannel.sequence,
88
+ })
89
+ .then(() => {
90
+ (0, mobx_1.runInAction)(() => {
91
+ targetChannel.rewound = true;
92
+ });
93
+ onFulfill();
94
+ this.trackIBCPacketForwardingRecursive(id);
95
+ });
96
+ }
97
+ }
98
+ }
99
+ else if (!history.txFulfilled) {
100
+ const chainId = history.chainId;
101
+ const chainInfo = this.chainsService.getChainInfo(chainId);
102
+ const txHash = buffer_1.Buffer.from(history.txHash, "hex");
103
+ if (chainInfo) {
104
+ const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
105
+ txTracer.addEventListener("close", onClose);
106
+ txTracer.addEventListener("error", onError);
107
+ txTracer.traceTx(txHash).then((tx) => {
108
+ txTracer.close();
109
+ (0, mobx_1.runInAction)(() => {
110
+ history.txFulfilled = true;
111
+ if (tx.code != null && tx.code !== 0) {
112
+ history.txError = tx.log || tx.raw_log || "Unknown error";
113
+ // TODO: In this case, it is not currently displayed in the UI. So, delete it for now.
114
+ // 어차피 tx 자체의 실패는 notification으로 알 수 있기 때문에 여기서 지우더라도 유저는 실패를 인지할 수 있다.
115
+ this.removeRecentIBCHistory(id);
116
+ }
117
+ else {
118
+ if ("swapReceiver" in history) {
119
+ const resAmount = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[0]);
120
+ history.resAmount.push(resAmount);
121
+ }
122
+ if (history.ibcHistory.length > 0) {
123
+ const firstChannel = history.ibcHistory[0];
124
+ firstChannel.sequence = this.getIBCPacketSequenceFromTx(tx, firstChannel.portId, firstChannel.channelId);
125
+ onFulfill();
126
+ this.trackIBCPacketForwardingRecursive(id);
127
+ }
128
+ }
129
+ });
130
+ });
131
+ }
132
+ }
133
+ else if (history.ibcHistory.length > 0) {
134
+ const targetChannelIndex = history.ibcHistory.findIndex((history) => {
135
+ return !history.completed;
136
+ });
137
+ const targetChannel = targetChannelIndex >= 0
138
+ ? history.ibcHistory[targetChannelIndex]
139
+ : undefined;
140
+ const nextChannel = targetChannelIndex >= 0 &&
141
+ targetChannelIndex + 1 < history.ibcHistory.length
142
+ ? history.ibcHistory[targetChannelIndex + 1]
143
+ : undefined;
144
+ if (targetChannel && targetChannel.sequence) {
145
+ const chainInfo = this.chainsService.getChainInfo(targetChannel.counterpartyChainId);
146
+ if (chainInfo) {
147
+ const queryEvents = {
148
+ "recv_packet.packet_src_port": targetChannel.portId,
149
+ "recv_packet.packet_src_channel": targetChannel.channelId,
150
+ "recv_packet.packet_sequence": targetChannel.sequence,
151
+ };
152
+ const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
153
+ txTracer.addEventListener("close", onClose);
154
+ txTracer.addEventListener("error", onError);
155
+ txTracer.traceTx(queryEvents).then((res) => {
156
+ txTracer.close();
157
+ if (!res) {
158
+ return;
159
+ }
160
+ const txs = res.txs
161
+ ? res.txs.map((res) => res.tx_result || res)
162
+ : [res];
163
+ if (txs && Array.isArray(txs)) {
164
+ (0, mobx_1.runInAction)(() => {
165
+ targetChannel.completed = true;
166
+ for (const tx of txs) {
167
+ try {
168
+ const ack = this.getIBCWriteAcknowledgementAckFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
169
+ if (ack && ack.length > 0) {
170
+ const str = buffer_1.Buffer.from(ack);
171
+ try {
172
+ const decoded = JSON.parse(str.toString());
173
+ if (decoded.error) {
174
+ // XXX: {key: 'packet_ack', value: '{"error":"ABCI code: 6: error handling packet: see events for details"}'}
175
+ // 오류가 있을 경우 이딴식으로 오류가 나오기 때문에 뭐 유저에게 보여줄 방법이 없다...
176
+ targetChannel.error = "Packet processing failed";
177
+ onFulfill();
178
+ this.trackIBCPacketForwardingRecursive(id);
179
+ break;
180
+ }
181
+ }
182
+ catch (e) {
183
+ // decode가 실패한 경우 사실 방법이 없다.
184
+ // 일단 packet이 성공했다고 치고 진행한다.
185
+ console.log(e);
186
+ }
187
+ }
188
+ // Because a tx can contain multiple messages, it's hard to know exactly which event we want.
189
+ // But logically, the events closest to the recv_packet event is the events we want.
190
+ const index = this.getIBCRecvPacketIndexFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
191
+ if ("swapReceiver" in history) {
192
+ const res = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[targetChannelIndex + 1], index);
193
+ history.resAmount.push(res);
194
+ }
195
+ if (nextChannel) {
196
+ nextChannel.sequence = this.getIBCPacketSequenceFromTx(tx, nextChannel.portId, nextChannel.channelId, index);
197
+ onFulfill();
198
+ this.trackIBCPacketForwardingRecursive(id);
199
+ break;
200
+ }
201
+ }
202
+ catch (_a) {
203
+ // noop
204
+ }
205
+ }
206
+ });
207
+ }
208
+ });
209
+ }
210
+ }
211
+ }
212
+ };
32
213
  this.onChainRemoved = (chainInfo) => {
33
214
  const chainIdentifier = cosmos_1.ChainIdHelper.parse(chainInfo.chainId).identifier;
34
215
  (0, mobx_1.runInAction)(() => {
@@ -155,168 +336,29 @@ class RecentSendHistoryService {
155
336
  });
156
337
  }
157
338
  trackIBCPacketForwardingRecursive(id) {
158
- const history = this.getRecentIBCHistory(id);
159
- if (!history) {
160
- return;
161
- }
162
- const needRewind = (() => {
163
- if (!history.txFulfilled) {
164
- return false;
165
- }
166
- if (history.ibcHistory.length === 0) {
167
- return false;
168
- }
169
- return history.ibcHistory.find((h) => h.error != null) != null;
170
- })();
171
- if (needRewind) {
172
- const lastRewoundChannelIndex = history.ibcHistory.findIndex((h) => {
173
- if (h.rewound) {
174
- return true;
175
- }
176
- });
177
- const targetChannel = (() => {
178
- if (lastRewoundChannelIndex >= 0) {
179
- if (lastRewoundChannelIndex === 0) {
180
- return undefined;
181
- }
182
- return history.ibcHistory[lastRewoundChannelIndex - 1];
183
- }
184
- return history.ibcHistory.find((h) => h.error != null);
185
- })();
186
- if (targetChannel && targetChannel.sequence) {
187
- const prevChainInfo = (() => {
188
- const targetChannelIndex = history.ibcHistory.findIndex((h) => h === targetChannel);
189
- if (targetChannelIndex < 0) {
190
- return undefined;
191
- }
192
- if (targetChannelIndex === 0) {
193
- return this.chainsService.getChainInfo(history.chainId);
194
- }
195
- return this.chainsService.getChainInfo(history.ibcHistory[targetChannelIndex - 1].counterpartyChainId);
196
- })();
197
- if (prevChainInfo) {
198
- const txTracer = new cosmos_1.TendermintTxTracer(prevChainInfo.rpc, "/websocket");
199
- txTracer
200
- .traceTx({
201
- "acknowledge_packet.packet_src_port": targetChannel.portId,
202
- "acknowledge_packet.packet_src_channel": targetChannel.channelId,
203
- "acknowledge_packet.packet_sequence": targetChannel.sequence,
204
- })
205
- .then(() => {
206
- (0, mobx_1.runInAction)(() => {
207
- targetChannel.rewound = true;
208
- });
209
- this.trackIBCPacketForwardingRecursive(id);
210
- });
211
- }
212
- }
213
- }
214
- else if (!history.txFulfilled) {
215
- const chainId = history.chainId;
216
- const chainInfo = this.chainsService.getChainInfo(chainId);
217
- const txHash = buffer_1.Buffer.from(history.txHash, "hex");
218
- if (chainInfo) {
219
- const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
220
- txTracer.traceTx(txHash).then((tx) => {
221
- txTracer.close();
222
- (0, mobx_1.runInAction)(() => {
223
- history.txFulfilled = true;
224
- if (tx.code != null && tx.code !== 0) {
225
- history.txError = tx.log || tx.raw_log || "Unknown error";
226
- // TODO: In this case, it is not currently displayed in the UI. So, delete it for now.
227
- // 어차피 tx 자체의 실패는 notification으로 알 수 있기 때문에 여기서 지우더라도 유저는 실패를 인지할 수 있다.
228
- this.removeRecentIBCHistory(id);
229
- }
230
- else {
231
- if ("swapReceiver" in history) {
232
- const resAmount = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[0]);
233
- history.resAmount.push(resAmount);
234
- }
235
- if (history.ibcHistory.length > 0) {
236
- const firstChannel = history.ibcHistory[0];
237
- firstChannel.sequence = this.getIBCPacketSequenceFromTx(tx, firstChannel.portId, firstChannel.channelId);
238
- this.trackIBCPacketForwardingRecursive(id);
239
- }
240
- }
241
- });
339
+ (0, common_1.retry)(() => {
340
+ return new Promise((resolve, reject) => {
341
+ this.trackIBCPacketForwardingRecursiveInternal(id, () => {
342
+ resolve();
343
+ }, () => {
344
+ // reject if ws closed before fulfilled
345
+ // 하지만 로직상 fulfill 되기 전에 ws가 닫히는게 되기 때문에
346
+ // delay를 좀 준다.
347
+ // 현재 trackIBCPacketForwardingRecursiveInternal에 ws close 이후에는 동기적인 로직밖에 없으므로
348
+ // 문제될게 없다.
349
+ setTimeout(() => {
350
+ reject();
351
+ }, 500);
352
+ }, () => {
353
+ // reject if ws error occurred before fulfilled
354
+ reject();
242
355
  });
243
- }
244
- }
245
- else if (history.ibcHistory.length > 0) {
246
- const targetChannelIndex = history.ibcHistory.findIndex((history) => {
247
- return !history.completed;
248
356
  });
249
- const targetChannel = targetChannelIndex >= 0
250
- ? history.ibcHistory[targetChannelIndex]
251
- : undefined;
252
- const nextChannel = targetChannelIndex >= 0 &&
253
- targetChannelIndex + 1 < history.ibcHistory.length
254
- ? history.ibcHistory[targetChannelIndex + 1]
255
- : undefined;
256
- if (targetChannel && targetChannel.sequence) {
257
- const chainInfo = this.chainsService.getChainInfo(targetChannel.counterpartyChainId);
258
- if (chainInfo) {
259
- const queryEvents = {
260
- "recv_packet.packet_src_port": targetChannel.portId,
261
- "recv_packet.packet_src_channel": targetChannel.channelId,
262
- "recv_packet.packet_sequence": targetChannel.sequence,
263
- };
264
- const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
265
- txTracer.traceTx(queryEvents).then((res) => {
266
- txTracer.close();
267
- if (!res) {
268
- return;
269
- }
270
- const txs = res.txs
271
- ? res.txs.map((res) => res.tx_result || res)
272
- : [res];
273
- if (txs && Array.isArray(txs)) {
274
- (0, mobx_1.runInAction)(() => {
275
- targetChannel.completed = true;
276
- for (const tx of txs) {
277
- try {
278
- const ack = this.getIBCWriteAcknowledgementAckFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
279
- if (ack && ack.length > 0) {
280
- const str = buffer_1.Buffer.from(ack);
281
- try {
282
- const decoded = JSON.parse(str.toString());
283
- if (decoded.error) {
284
- // XXX: {key: 'packet_ack', value: '{"error":"ABCI code: 6: error handling packet: see events for details"}'}
285
- // 오류가 있을 경우 이딴식으로 오류가 나오기 때문에 뭐 유저에게 보여줄 방법이 없다...
286
- targetChannel.error = "Packet processing failed";
287
- this.trackIBCPacketForwardingRecursive(id);
288
- break;
289
- }
290
- }
291
- catch (e) {
292
- // decode가 실패한 경우 사실 방법이 없다.
293
- // 일단 packet이 성공했다고 치고 진행한다.
294
- console.log(e);
295
- }
296
- }
297
- // Because a tx can contain multiple messages, it's hard to know exactly which event we want.
298
- // But logically, the events closest to the recv_packet event is the events we want.
299
- const index = this.getIBCRecvPacketIndexFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
300
- if ("swapReceiver" in history) {
301
- const res = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[targetChannelIndex + 1], index);
302
- history.resAmount.push(res);
303
- }
304
- if (nextChannel) {
305
- nextChannel.sequence = this.getIBCPacketSequenceFromTx(tx, nextChannel.portId, nextChannel.channelId, index);
306
- this.trackIBCPacketForwardingRecursive(id);
307
- break;
308
- }
309
- }
310
- catch (_a) {
311
- // noop
312
- }
313
- }
314
- });
315
- }
316
- });
317
- }
318
- }
319
- }
357
+ }, {
358
+ maxRetries: 10,
359
+ waitMsAfterError: 10 * 1000,
360
+ maxWaitMsAfterError: 5 * 60 * 1000, // 5min
361
+ });
320
362
  }
321
363
  getRecentSendHistories(chainId, type) {
322
364
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/recent-send-history/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/recent-send-history/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.30",
3
+ "version": "0.12.31-rc.0",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -28,17 +28,17 @@
28
28
  "@ethersproject/hash": "^5.7.0",
29
29
  "@ethersproject/transactions": "^5.7.0",
30
30
  "@ethersproject/wallet": "^5.7.0",
31
- "@keplr-wallet/chain-validator": "0.12.30",
32
- "@keplr-wallet/common": "0.12.30",
33
- "@keplr-wallet/cosmos": "0.12.30",
34
- "@keplr-wallet/crypto": "0.12.30",
35
- "@keplr-wallet/ledger-cosmos": "0.12.30",
36
- "@keplr-wallet/popup": "0.12.30",
37
- "@keplr-wallet/proto-types": "0.12.30",
38
- "@keplr-wallet/router": "0.12.30",
39
- "@keplr-wallet/simple-fetch": "0.12.30",
40
- "@keplr-wallet/types": "0.12.30",
41
- "@keplr-wallet/unit": "0.12.30",
31
+ "@keplr-wallet/chain-validator": "0.12.31-rc.0",
32
+ "@keplr-wallet/common": "0.12.31-rc.0",
33
+ "@keplr-wallet/cosmos": "0.12.31-rc.0",
34
+ "@keplr-wallet/crypto": "0.12.31-rc.0",
35
+ "@keplr-wallet/ledger-cosmos": "0.12.31-rc.0",
36
+ "@keplr-wallet/popup": "0.12.31-rc.0",
37
+ "@keplr-wallet/proto-types": "0.12.31-rc.0",
38
+ "@keplr-wallet/router": "0.12.31-rc.0",
39
+ "@keplr-wallet/simple-fetch": "0.12.31-rc.0",
40
+ "@keplr-wallet/types": "0.12.31-rc.0",
41
+ "@keplr-wallet/unit": "0.12.31-rc.0",
42
42
  "@ledgerhq/hw-app-eth": "^6.29.3",
43
43
  "@ledgerhq/hw-transport": "^6.20.0",
44
44
  "@ledgerhq/hw-transport-webhid": "^6.20.0",
@@ -58,5 +58,5 @@
58
58
  "pbkdf2": "^3.1.2",
59
59
  "utility-types": "^3.10.0"
60
60
  },
61
- "gitHead": "1bbf3366c918735099f8a22389cc49330b3c2ced"
61
+ "gitHead": "fe1668f13253f72f4adb21991527b616460014d3"
62
62
  }
@@ -13,7 +13,7 @@ import {
13
13
  runInAction,
14
14
  toJS,
15
15
  } from "mobx";
16
- import { KVStore } from "@keplr-wallet/common";
16
+ import { KVStore, retry } from "@keplr-wallet/common";
17
17
  import { IBCHistory, RecentSendHistory } from "./types";
18
18
  import { Buffer } from "buffer/";
19
19
  import { ChainInfo } from "@keplr-wallet/types";
@@ -236,9 +236,54 @@ export class RecentSendHistoryService {
236
236
  return txHash;
237
237
  }
238
238
 
239
- trackIBCPacketForwardingRecursive(id: string) {
239
+ trackIBCPacketForwardingRecursive(id: string): void {
240
+ retry(
241
+ () => {
242
+ return new Promise<void>((resolve, reject) => {
243
+ this.trackIBCPacketForwardingRecursiveInternal(
244
+ id,
245
+ () => {
246
+ resolve();
247
+ },
248
+ () => {
249
+ // reject if ws closed before fulfilled
250
+ // 하지만 로직상 fulfill 되기 전에 ws가 닫히는게 되기 때문에
251
+ // delay를 좀 준다.
252
+ // 현재 trackIBCPacketForwardingRecursiveInternal에 ws close 이후에는 동기적인 로직밖에 없으므로
253
+ // 문제될게 없다.
254
+ setTimeout(() => {
255
+ reject();
256
+ }, 500);
257
+ },
258
+ () => {
259
+ // reject if ws error occurred before fulfilled
260
+ reject();
261
+ }
262
+ );
263
+ });
264
+ },
265
+ {
266
+ maxRetries: 10,
267
+ waitMsAfterError: 10 * 1000, // 10sec
268
+ maxWaitMsAfterError: 5 * 60 * 1000, // 5min
269
+ }
270
+ );
271
+ }
272
+
273
+ // ibc packet forwarding을 위한 recursive function이면서
274
+ // 실패시 retry를 수행하기 위해서 분리되어 있음
275
+ // trackIBCPacketForwardingRecursive도 참고
276
+ // trackIBCPacketForwardingRecursive의 주석을 보면 알겠지만
277
+ // tx tracer가 close된 이후에는 동기적인 로직만 있어야함.
278
+ protected trackIBCPacketForwardingRecursiveInternal = (
279
+ id: string,
280
+ onFulfill: () => void,
281
+ onClose: () => void,
282
+ onError: () => void
283
+ ): void => {
240
284
  const history = this.getRecentIBCHistory(id);
241
285
  if (!history) {
286
+ onFulfill();
242
287
  return;
243
288
  }
244
289
 
@@ -291,6 +336,8 @@ export class RecentSendHistoryService {
291
336
  prevChainInfo.rpc,
292
337
  "/websocket"
293
338
  );
339
+ txTracer.addEventListener("close", onClose);
340
+ txTracer.addEventListener("error", onError);
294
341
  txTracer
295
342
  .traceTx({
296
343
  "acknowledge_packet.packet_src_port": targetChannel.portId,
@@ -301,6 +348,7 @@ export class RecentSendHistoryService {
301
348
  runInAction(() => {
302
349
  targetChannel.rewound = true;
303
350
  });
351
+ onFulfill();
304
352
  this.trackIBCPacketForwardingRecursive(id);
305
353
  });
306
354
  }
@@ -312,6 +360,8 @@ export class RecentSendHistoryService {
312
360
 
313
361
  if (chainInfo) {
314
362
  const txTracer = new TendermintTxTracer(chainInfo.rpc, "/websocket");
363
+ txTracer.addEventListener("close", onClose);
364
+ txTracer.addEventListener("error", onError);
315
365
  txTracer.traceTx(txHash).then((tx) => {
316
366
  txTracer.close();
317
367
 
@@ -342,6 +392,7 @@ export class RecentSendHistoryService {
342
392
  firstChannel.channelId
343
393
  );
344
394
 
395
+ onFulfill();
345
396
  this.trackIBCPacketForwardingRecursive(id);
346
397
  }
347
398
  }
@@ -374,6 +425,8 @@ export class RecentSendHistoryService {
374
425
  };
375
426
 
376
427
  const txTracer = new TendermintTxTracer(chainInfo.rpc, "/websocket");
428
+ txTracer.addEventListener("close", onClose);
429
+ txTracer.addEventListener("error", onError);
377
430
  txTracer.traceTx(queryEvents).then((res) => {
378
431
  txTracer.close();
379
432
 
@@ -405,6 +458,7 @@ export class RecentSendHistoryService {
405
458
  // XXX: {key: 'packet_ack', value: '{"error":"ABCI code: 6: error handling packet: see events for details"}'}
406
459
  // 오류가 있을 경우 이딴식으로 오류가 나오기 때문에 뭐 유저에게 보여줄 방법이 없다...
407
460
  targetChannel.error = "Packet processing failed";
461
+ onFulfill();
408
462
  this.trackIBCPacketForwardingRecursive(id);
409
463
  break;
410
464
  }
@@ -444,6 +498,7 @@ export class RecentSendHistoryService {
444
498
  nextChannel.channelId,
445
499
  index
446
500
  );
501
+ onFulfill();
447
502
  this.trackIBCPacketForwardingRecursive(id);
448
503
  break;
449
504
  }
@@ -457,7 +512,7 @@ export class RecentSendHistoryService {
457
512
  }
458
513
  }
459
514
  }
460
- }
515
+ };
461
516
 
462
517
  getRecentSendHistories(chainId: string, type: string): RecentSendHistory[] {
463
518
  const key = `${ChainIdHelper.parse(chainId).identifier}/${type}`;