@sundaeswap/wallet-lite 0.0.86 → 0.0.88-dev.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.
Files changed (23) hide show
  1. package/dist/cjs/classes/WalletObserver.class.js +76 -66
  2. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  3. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +47 -39
  4. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  5. package/dist/cjs/react-components/hooks/useWalletObserver.js +2 -1
  6. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
  7. package/dist/esm/classes/WalletObserver.class.js +59 -50
  8. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  9. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +9 -3
  10. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  11. package/dist/esm/react-components/hooks/useWalletObserver.js +2 -1
  12. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
  13. package/dist/types/classes/WalletObserver.class.d.ts +2 -2
  14. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  15. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +1 -0
  16. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  17. package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
  18. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  19. package/package.json +4 -3
  20. package/src/classes/WalletObserver.class.ts +68 -57
  21. package/src/classes/__tests__/WalletObserver.test.ts +15 -4
  22. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +10 -3
  23. package/src/react-components/hooks/useWalletObserver.ts +2 -0
@@ -93,7 +93,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
93
93
  * @returns {Promise<IWalletObserverSync<AssetMetadata>>} - A promise that resolves to the wallet sync data.
94
94
  */
95
95
  _defineProperty(_this, "sync", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
96
- var start, newNetwork, _yield$Promise$all, _yield$Promise$all2, newBalanceMap, newUsedAddresses, newUnusedAddresses, newOutputs, newCollateral, newFeeAddress, result, end;
96
+ var start, newBalanceMap, _yield$Promise$all, _yield$Promise$all2, newNetwork, newUsedAddresses, newUnusedAddresses, newOutputs, newCollateral, newFeeAddress, result, end;
97
97
  return _regeneratorRuntime().wrap(function _callee$(_context) {
98
98
  while (1) switch (_context.prev = _context.next) {
99
99
  case 0:
@@ -107,11 +107,13 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
107
107
  _context.prev = 3;
108
108
  _this._performingSync = true;
109
109
  _this.dispatch(_events.EWalletObserverEvents.SYNCING_WALLET_START);
110
+
111
+ // Check if account has changed.
110
112
  _context.next = 8;
111
- return _this.getNetwork();
113
+ return _this.getBalanceMap();
112
114
  case 8:
113
- newNetwork = _context.sent;
114
- if (!(newNetwork instanceof Error)) {
115
+ newBalanceMap = _context.sent;
116
+ if (!(newBalanceMap instanceof Error)) {
115
117
  _context.next = 19;
116
118
  break;
117
119
  }
@@ -119,23 +121,23 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
119
121
  return _this.syncApi();
120
122
  case 12:
121
123
  _context.next = 14;
122
- return _this.getNetwork();
124
+ return _this.getBalanceMap();
123
125
  case 14:
124
- newNetwork = _context.sent;
125
- if (!(newNetwork instanceof Error)) {
126
+ newBalanceMap = _context.sent;
127
+ if (!(newBalanceMap instanceof Error)) {
126
128
  _context.next = 19;
127
129
  break;
128
130
  }
129
131
  _this.dispatch(_events.EWalletObserverEvents.SYNCING_WALLET_END);
130
132
  _this._performingSync = false;
131
- throw newNetwork;
133
+ throw newBalanceMap;
132
134
  case 19:
133
135
  _context.next = 21;
134
- return Promise.all([_this.getBalanceMap(), _this.getUsedAddresses(), _this.getUnusedAddresses(), _this.getUtxos(), _this.getCollateral(), _this.getFeeAddress()]);
136
+ return Promise.all([_this.getNetwork(), _this.getUsedAddresses(), _this.getUnusedAddresses(), _this.getUtxos(), _this.getCollateral(), _this.getFeeAddress()]);
135
137
  case 21:
136
138
  _yield$Promise$all = _context.sent;
137
139
  _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 6);
138
- newBalanceMap = _yield$Promise$all2[0];
140
+ newNetwork = _yield$Promise$all2[0];
139
141
  newUsedAddresses = _yield$Promise$all2[1];
140
142
  newUnusedAddresses = _yield$Promise$all2[2];
141
143
  newOutputs = _yield$Promise$all2[3];
@@ -179,7 +181,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
179
181
  * @returns {Promise<Cip30WalletApi | undefined>} - A promise that resolves to the API instance.
180
182
  */
181
183
  _defineProperty(_this, "syncApi", /*#__PURE__*/function () {
182
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(activeWallet) {
184
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(activeWallet, abortSignal) {
183
185
  var selectedWallet, attempts, shouldContinue, _window, _window2, _cardano$selectedWall, cardano, api;
184
186
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
185
187
  while (1) switch (_context2.prev = _context2.next) {
@@ -193,65 +195,62 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
193
195
  selectedWallet = activeWallet || _this.activeWallet;
194
196
  attempts = 0;
195
197
  shouldContinue = true;
196
- case 5:
198
+ abortSignal === null || abortSignal === void 0 || abortSignal.addEventListener("abort", function () {
199
+ shouldContinue = false;
200
+ });
201
+ case 6:
197
202
  if (!shouldContinue) {
198
- _context2.next = 32;
203
+ _context2.next = 31;
199
204
  break;
200
205
  }
201
206
  if (!(attempts === 10)) {
202
- _context2.next = 8;
207
+ _context2.next = 9;
203
208
  break;
204
209
  }
205
210
  throw new Error("Could not reconnect to the selected wallet. Please check your extension.");
206
- case 8:
207
- _context2.prev = 8;
211
+ case 9:
212
+ _context2.prev = 9;
208
213
  cardano = ((_window = window) === null || _window === void 0 ? void 0 : _window.cardano) || ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.parent) === null || _window2 === void 0 ? void 0 : _window2.cardano);
209
- _context2.next = 12;
214
+ _context2.next = 13;
210
215
  return cardano === null || cardano === void 0 || (_cardano$selectedWall = cardano[selectedWallet]) === null || _cardano$selectedWall === void 0 ? void 0 : _cardano$selectedWall.enable();
211
- case 12:
216
+ case 13:
212
217
  api = _context2.sent;
213
- if (api) {
214
- _context2.next = 15;
215
- break;
216
- }
217
- throw Error;
218
- case 15:
219
218
  _this.api = api;
220
- _context2.next = 18;
219
+ _context2.next = 17;
221
220
  return api.getNetworkId();
222
- case 18:
221
+ case 17:
223
222
  _this.network = _context2.sent;
224
223
  shouldContinue = false;
225
- _context2.next = 30;
224
+ _context2.next = 29;
226
225
  break;
227
- case 22:
228
- _context2.prev = 22;
229
- _context2.t0 = _context2["catch"](8);
230
- if (!(["user canceled connection", "User declined to sign the data."].includes(_context2.t0 === null || _context2.t0 === void 0 ? void 0 : _context2.t0.message) || (_context2.t0 === null || _context2.t0 === void 0 ? void 0 : _context2.t0.code) === _dappConnector.APIErrorCode.Refused)) {
231
- _context2.next = 27;
226
+ case 21:
227
+ _context2.prev = 21;
228
+ _context2.t0 = _context2["catch"](9);
229
+ if (!(["user canceled connection", "User declined to sign the data.", "Attempt to connect timed out after 10 seconds"].includes(_context2.t0 === null || _context2.t0 === void 0 ? void 0 : _context2.t0.message) || (_context2.t0 === null || _context2.t0 === void 0 ? void 0 : _context2.t0.code) === _dappConnector.APIErrorCode.Refused)) {
230
+ _context2.next = 26;
232
231
  break;
233
232
  }
234
233
  shouldContinue = false;
235
234
  return _context2.abrupt("return", undefined);
236
- case 27:
237
- _context2.next = 29;
235
+ case 26:
236
+ _context2.next = 28;
238
237
  return new Promise(function (res) {
239
238
  return setTimeout(res, 200);
240
239
  });
241
- case 29:
240
+ case 28:
242
241
  attempts++;
243
- case 30:
244
- _context2.next = 5;
242
+ case 29:
243
+ _context2.next = 6;
245
244
  break;
246
- case 32:
245
+ case 31:
247
246
  return _context2.abrupt("return", _this.api);
248
- case 33:
247
+ case 32:
249
248
  case "end":
250
249
  return _context2.stop();
251
250
  }
252
- }, _callee2, null, [[8, 22]]);
251
+ }, _callee2, null, [[9, 21]]);
253
252
  }));
254
- return function (_x) {
253
+ return function (_x, _x2) {
255
254
  return _ref2.apply(this, arguments);
256
255
  };
257
256
  }());
@@ -272,72 +271,78 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
272
271
  * @return {Promise<IWalletObserverSync<AssetMetadata> | Error>}
273
272
  */
274
273
  _defineProperty(_this, "connectWallet", /*#__PURE__*/function () {
275
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(extension) {
276
- var _window$cardano;
277
- var start, attempts, extensionObject, _this$peerConnectInst, _window$cardano2, data, seed, end;
274
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(extension, abortSignal) {
275
+ var start, _window$cardano, attempts, extensionObject, _this$peerConnectInst, _window$cardano2, api, data, seed, end;
278
276
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
279
277
  while (1) switch (_context3.prev = _context3.next) {
280
278
  case 0:
281
279
  start = performance.now();
282
280
  _this.dispatch(_events.EWalletObserverEvents.CONNECT_WALLET_START);
281
+ _context3.prev = 2;
283
282
  attempts = 0;
284
283
  extensionObject = (_window$cardano = window.cardano) === null || _window$cardano === void 0 ? void 0 : _window$cardano[extension]; // Disconnect any CIP45 connections.
285
284
  if (!(extension !== null && extension !== void 0 && extension.includes("p2p"))) {
286
285
  (_this$peerConnectInst = _this.peerConnectInstance) === null || _this$peerConnectInst === void 0 || _this$peerConnectInst.shutdownServer();
287
286
  }
288
- case 5:
287
+ case 6:
289
288
  if (!(typeof extensionObject === "undefined")) {
290
- _context3.next = 14;
289
+ _context3.next = 15;
291
290
  break;
292
291
  }
293
292
  if (!(attempts === 40)) {
294
- _context3.next = 8;
293
+ _context3.next = 9;
295
294
  break;
296
295
  }
297
- return _context3.abrupt("break", 14);
298
- case 8:
299
- _context3.next = 10;
296
+ return _context3.abrupt("break", 15);
297
+ case 9:
298
+ _context3.next = 11;
300
299
  return new Promise(function (res) {
301
300
  return setTimeout(res, _this._options.connectTimeout / 40);
302
301
  });
303
- case 10:
302
+ case 11:
304
303
  extensionObject = (_window$cardano2 = window.cardano) === null || _window$cardano2 === void 0 ? void 0 : _window$cardano2[extension];
305
304
  attempts++;
306
- _context3.next = 5;
305
+ _context3.next = 6;
307
306
  break;
308
- case 14:
307
+ case 15:
309
308
  if (extensionObject) {
310
309
  _context3.next = 17;
311
310
  break;
312
311
  }
313
- _this.dispatch(_events.EWalletObserverEvents.CONNECT_WALLET_END);
314
312
  throw new Error("Wallet extension not found in the global context.");
315
313
  case 17:
316
314
  _this.activeWallet = extension;
317
315
  _context3.next = 20;
318
- return _this.syncApi(extension);
316
+ return _this.syncApi(extension, abortSignal);
319
317
  case 20:
320
- _context3.next = 22;
318
+ api = _context3.sent;
319
+ if (api) {
320
+ _context3.next = 23;
321
+ break;
322
+ }
323
+ throw new Error("API could not be found.");
324
+ case 23:
325
+ _context3.next = 25;
321
326
  return _this.sync();
322
- case 22:
327
+ case 25:
323
328
  data = _context3.sent;
324
329
  if (!_this._options.persistence) {
325
- _context3.next = 29;
330
+ _context3.next = 32;
326
331
  break;
327
332
  }
328
333
  if (!(data.usedAddresses instanceof Error)) {
329
- _context3.next = 27;
334
+ _context3.next = 30;
330
335
  break;
331
336
  }
332
337
  data.usedAddresses.cause = "Could not get a list of used addresses from the wallet when trying to save the connection.";
333
338
  throw data.usedAddresses;
334
- case 27:
339
+ case 30:
335
340
  seed = {
336
341
  activeWallet: extension,
337
342
  mainAddress: data.usedAddresses[0]
338
343
  };
339
344
  window.localStorage.setItem(WalletObserver.PERSISTENCE_CACHE_KEY, JSON.stringify(seed));
340
- case 29:
345
+ case 32:
341
346
  _this.dispatch(_events.EWalletObserverEvents.CONNECT_WALLET_END, _objectSpread(_objectSpread({}, data), {}, {
342
347
  activeWallet: extension
343
348
  }));
@@ -346,13 +351,18 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
346
351
  console.log("connectWallet: ".concat(end - start, "ms"));
347
352
  }
348
353
  return _context3.abrupt("return", data);
349
- case 33:
354
+ case 38:
355
+ _context3.prev = 38;
356
+ _context3.t0 = _context3["catch"](2);
357
+ _this.dispatch(_events.EWalletObserverEvents.CONNECT_WALLET_END);
358
+ throw _context3.t0;
359
+ case 42:
350
360
  case "end":
351
361
  return _context3.stop();
352
362
  }
353
- }, _callee3);
363
+ }, _callee3, null, [[2, 38]]);
354
364
  }));
355
- return function (_x2) {
365
+ return function (_x3, _x4) {
356
366
  return _ref3.apply(this, arguments);
357
367
  };
358
368
  }());
@@ -859,7 +869,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
859
869
  }
860
870
  }, _callee12, null, [[10, 16]]);
861
871
  }));
862
- return function (_x3) {
872
+ return function (_x5) {
863
873
  return _ref12.apply(this, arguments);
864
874
  };
865
875
  }());
@@ -889,7 +899,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
889
899
  }
890
900
  }, _callee13);
891
901
  }));
892
- return function (_x4) {
902
+ return function (_x6) {
893
903
  return _ref14.apply(this, arguments);
894
904
  };
895
905
  }());