@rango-dev/queue-manager-rango-preset 0.1.10-next.83 → 0.1.10-next.86

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.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,oBAA4B,CAAC;AAE5D,eAAO,MAAM,qCAAqC,mDACA,CAAC;AACnD,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,sDAAsD,SAC3D,MAAM,GAAG,IAAI,WACV,MAAM,GAAG,IAAI,KACrB,MAGC,CAAC;AACL,eAAO,MAAM,yCAAyC,SAC9C,MAAM,GAAG,IAAI,KAClB,MAGqD,CAAC;AACzD,eAAO,MAAM,qCAAqC,YACvC,MAAM,GAAG,IAAI,KACrB,MAAqD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,oBAAgC,CAAC;AAEhE,eAAO,MAAM,qCAAqC,mDACA,CAAC;AACnD,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,sDAAsD,SAC3D,MAAM,GAAG,IAAI,WACV,MAAM,GAAG,IAAI,KACrB,MAGC,CAAC;AACL,eAAO,MAAM,yCAAyC,SAC9C,MAAM,GAAG,IAAI,KAClB,MAGqD,CAAC;AACzD,eAAO,MAAM,qCAAqC,YACvC,MAAM,GAAG,IAAI,KACrB,MAAqD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -9,5 +9,6 @@ import { SwapQueueDef } from './types';
9
9
  export declare const swapQueueDef: SwapQueueDef;
10
10
  export { SwapQueueContext, SwapStorage } from './types';
11
11
  export { PendingSwapWithQueueID } from './shared';
12
- export { updateSwapStatus } from './helpers';
12
+ export { updateSwapStatus, checkWaitingForNetworkChange, getCurrentStep, getEvmProvider, getRelatedWallet, } from './helpers';
13
+ export { useMigration, useQueueManager } from './hooks';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,YAAY,EAAE,MAAM,SAAS,CAAC;AAYrE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,YAmB1B,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,YAAY,EAAE,MAAM,SAAS,CAAC;AAYrE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,YAmB1B,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGlD,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,cAAc,EACd,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -8,6 +8,9 @@ var rangoSdk = require('rango-sdk');
8
8
  var queueManagerCore = require('@rango-dev/queue-manager-core');
9
9
  var rangoTypes = require('rango-types');
10
10
  var Sentry = require('@sentry/browser');
11
+ var queueManagerReact = require('@rango-dev/queue-manager-react');
12
+ var react = require('react');
13
+ var uuid = require('uuid');
11
14
 
12
15
  var SwapActionTypes;
13
16
  (function (SwapActionTypes) {
@@ -449,7 +452,7 @@ function _assertThisInitialized(self) {
449
452
  return self;
450
453
  }
451
454
 
452
- var RANGO_DAPP_API_KEY = process.env.REACT_API_KEY;
455
+ var RANGO_DAPP_API_KEY = process.env.REACT_APP_API_KEY;
453
456
  var ERROR_MESSAGE_WAIT_FOR_WALLET = 'Waiting for connecting wallet';
454
457
  var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET(type, address) {
455
458
  return "Please change your " + (type || 'wallet') + " account to " + (address || 'proper address');
@@ -1736,6 +1739,76 @@ function singTransaction(actions) {
1736
1739
  });
1737
1740
  }
1738
1741
  }
1742
+ function checkWaitingForConnectWalletChange(params) {
1743
+ var wallet_network = params.wallet_network,
1744
+ evmChains = params.evmChains,
1745
+ manager = params.manager;
1746
+ var _wallet_network$split = wallet_network.split('-'),
1747
+ wallet = _wallet_network$split[0],
1748
+ network = _wallet_network$split[1];
1749
+ // We only need change network for EVM chains.
1750
+ if (!evmChains.some(function (chain) {
1751
+ return chain.name == network;
1752
+ })) return;
1753
+ manager == null ? void 0 : manager.getAll().forEach(function (q) {
1754
+ var queueStorage = q.list.getStorage();
1755
+ var swap = queueStorage == null ? void 0 : queueStorage.swapDetails;
1756
+ if (swap) {
1757
+ var currentStep = getCurrentStep(swap);
1758
+ if (currentStep) {
1759
+ var _queueStorage$swapDet;
1760
+ var currentStepRequiredWallet = queueStorage == null ? void 0 : (_queueStorage$swapDet = queueStorage.swapDetails.wallets[currentStep.fromBlockchain]) == null ? void 0 : _queueStorage$swapDet.walletType;
1761
+ var hasWaitingForConnect = Object.keys(q.list.state.tasks).some(function (taskId) {
1762
+ var _task$blockedFor;
1763
+ var task = q.list.state.tasks[taskId];
1764
+ return task.status === queueManagerCore.Status.BLOCKED && [BlockReason.WAIT_FOR_CONNECT_WALLET].includes((_task$blockedFor = task.blockedFor) == null ? void 0 : _task$blockedFor.reason);
1765
+ });
1766
+ if (currentStepRequiredWallet === wallet && hasWaitingForConnect) {
1767
+ var _queueInstance$getSto;
1768
+ var queueInstance = q.list;
1769
+ var _swap = (_queueInstance$getSto = queueInstance.getStorage()) == null ? void 0 : _queueInstance$getSto.swapDetails;
1770
+ var _getRequiredWallet5 = getRequiredWallet(_swap),
1771
+ type = _getRequiredWallet5.type;
1772
+ var description = ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK(type);
1773
+ q.list.block({
1774
+ reason: {
1775
+ reason: BlockReason.WAIT_FOR_NETWORK_CHANGE,
1776
+ description: description
1777
+ },
1778
+ silent: true
1779
+ });
1780
+ markRunningSwapAsSwitchingNetwork({
1781
+ getStorage: queueInstance.getStorage.bind(queueInstance),
1782
+ setStorage: queueInstance.setStorage.bind(queueInstance)
1783
+ });
1784
+ }
1785
+ }
1786
+ }
1787
+ });
1788
+ }
1789
+ function checkWaitingForNetworkChange(manager) {
1790
+ manager == null ? void 0 : manager.getAll().forEach(function (q) {
1791
+ var hasWaitingForNetwork = Object.keys(q.list.state.tasks).some(function (taskId) {
1792
+ var _task$blockedFor2;
1793
+ var task = q.list.state.tasks[taskId];
1794
+ return task.status === queueManagerCore.Status.BLOCKED && [BlockReason.WAIT_FOR_NETWORK_CHANGE, BlockReason.DEPENDS_ON_OTHER_QUEUES].includes((_task$blockedFor2 = task.blockedFor) == null ? void 0 : _task$blockedFor2.reason);
1795
+ });
1796
+ if (hasWaitingForNetwork) {
1797
+ var _q$list$getStorage;
1798
+ var swap = (_q$list$getStorage = q.list.getStorage()) == null ? void 0 : _q$list$getStorage.swapDetails;
1799
+ var _getRequiredWallet6 = getRequiredWallet(swap),
1800
+ type = _getRequiredWallet6.type;
1801
+ var description = ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION(type);
1802
+ // Change the block reason to waiting for connecting wallet
1803
+ q.list.block({
1804
+ reason: {
1805
+ reason: BlockReason.WAIT_FOR_CONNECT_WALLET,
1806
+ description: description
1807
+ }
1808
+ });
1809
+ }
1810
+ });
1811
+ }
1739
1812
  /**
1740
1813
  *
1741
1814
  * Try to run blocked tasks by wallet and network name.
@@ -2280,6 +2353,183 @@ function start(_ref) {
2280
2353
  next();
2281
2354
  }
2282
2355
 
2356
+ var MIGRATED_KEY = 'migratedToQueueManager';
2357
+ /**
2358
+ *
2359
+ * If `MIGRATED_KEY` is set, it means we already migrated data from localstorage.
2360
+ *
2361
+ */
2362
+ function migrated() {
2363
+ return !!window.localStorage.getItem(MIGRATED_KEY);
2364
+ }
2365
+ /**
2366
+ *
2367
+ * By calling this function, we first check if the data already migrated or not,
2368
+ * If not, starting to migrating to IndexedDb with proper format that queue manager is understand.
2369
+ *
2370
+ */
2371
+ function migration() {
2372
+ return _migration.apply(this, arguments);
2373
+ }
2374
+ function _migration() {
2375
+ _migration = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
2376
+ var swapsFromStorage, swaps, convertedSwaps, persistor, promises;
2377
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
2378
+ while (1) switch (_context.prev = _context.next) {
2379
+ case 0:
2380
+ swapsFromStorage = window.localStorage.getItem('pendingSwaps'); // For new users or already migrated.
2381
+ if (!(!swapsFromStorage || migrated())) {
2382
+ _context.next = 3;
2383
+ break;
2384
+ }
2385
+ return _context.abrupt("return", true);
2386
+ case 3:
2387
+ // For old users, but they didn't do any swaps yet.
2388
+ swaps = JSON.parse(swapsFromStorage);
2389
+ convertedSwaps = [];
2390
+ swaps.forEach(function (swap) {
2391
+ /*
2392
+ For running task we need to add some more work
2393
+ We need to create a queue task to be run and resume the running task from queue manager.
2394
+ */
2395
+ if (swap.status === 'running') {
2396
+ var _tasks;
2397
+ var taskId = uuid.v4();
2398
+ var convertedSwap = {
2399
+ id: uuid.v4(),
2400
+ createdAt: Number(swap.creationTime),
2401
+ name: 'swap',
2402
+ status: queueManagerCore.Status.RUNNING,
2403
+ storage: {
2404
+ swapDetails: swap
2405
+ },
2406
+ state: {
2407
+ status: queueManagerCore.Status.RUNNING,
2408
+ activeTaskIndex: 0,
2409
+ tasks: (_tasks = {}, _tasks[taskId] = {
2410
+ blockedFor: null,
2411
+ status: queueManagerCore.Status.RUNNING
2412
+ }, _tasks)
2413
+ },
2414
+ tasks: [{
2415
+ id: taskId,
2416
+ action: SwapActionTypes.SCHEDULE_NEXT_STEP
2417
+ }]
2418
+ };
2419
+ convertedSwaps.push(convertedSwap);
2420
+ } else {
2421
+ /*
2422
+ * For failed or successful swaps, we only move it to IndexedDB,
2423
+ * And there is no need to consider them to be run.
2424
+ */
2425
+ var status = swap.status === 'success' ? queueManagerCore.Status.SUCCESS : queueManagerCore.Status.FAILED;
2426
+ var _convertedSwap = {
2427
+ id: uuid.v4(),
2428
+ createdAt: Number(swap.creationTime),
2429
+ name: 'swap',
2430
+ status: status,
2431
+ storage: {
2432
+ swapDetails: swap
2433
+ },
2434
+ state: {
2435
+ status: status,
2436
+ activeTaskIndex: 0,
2437
+ tasks: {}
2438
+ },
2439
+ tasks: []
2440
+ };
2441
+ convertedSwaps.push(_convertedSwap);
2442
+ }
2443
+ });
2444
+ // Getting an instance from persistor, so we can directly put our data inside it.
2445
+ persistor = new queueManagerCore.Persistor();
2446
+ promises = convertedSwaps.map(function (queue) {
2447
+ return persistor.insertQueue(queue);
2448
+ });
2449
+ _context.next = 10;
2450
+ return Promise.all(promises);
2451
+ case 10:
2452
+ // Mark as the data has been successfully migrated.
2453
+ window.localStorage.setItem(MIGRATED_KEY, '1');
2454
+ return _context.abrupt("return", true);
2455
+ case 12:
2456
+ case "end":
2457
+ return _context.stop();
2458
+ }
2459
+ }, _callee);
2460
+ }));
2461
+ return _migration.apply(this, arguments);
2462
+ }
2463
+
2464
+ var isCalled = 0;
2465
+ /**
2466
+ *
2467
+ * Runs a migration (old swaps from localstorage to queue manager's IndexedDB)
2468
+ * It will be run only once on page load.
2469
+ *
2470
+ */
2471
+ function useMigration() {
2472
+ var isMigrated = migrated();
2473
+ var _useState = react.useState(isMigrated),
2474
+ status = _useState[0],
2475
+ setStatus = _useState[1];
2476
+ react.useEffect(function () {
2477
+ _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
2478
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
2479
+ while (1) switch (_context.prev = _context.next) {
2480
+ case 0:
2481
+ if (!isCalled) {
2482
+ _context.next = 2;
2483
+ break;
2484
+ }
2485
+ return _context.abrupt("return");
2486
+ case 2:
2487
+ isCalled = 1;
2488
+ migration()["finally"](function () {
2489
+ setStatus(true);
2490
+ });
2491
+ case 4:
2492
+ case "end":
2493
+ return _context.stop();
2494
+ }
2495
+ }, _callee);
2496
+ }))();
2497
+ }, []);
2498
+ return {
2499
+ status: status
2500
+ };
2501
+ }
2502
+ /**
2503
+ *
2504
+ * On initial load and also connect/disconnet we may need to update swap's notified message.
2505
+ * And also if a new wallet is connected we will retry the queue to see we can resume it or not.
2506
+ *
2507
+ */
2508
+ function useQueueManager(params) {
2509
+ var _useManager = queueManagerReact.useManager(),
2510
+ manager = _useManager.manager;
2511
+ react.useEffect(function () {
2512
+ if (params.lastConnectedWallet) {
2513
+ checkWaitingForConnectWalletChange({
2514
+ evmChains: params.evmChains,
2515
+ wallet_network: params.lastConnectedWallet,
2516
+ manager: manager
2517
+ });
2518
+ retryOn(params.lastConnectedWallet, manager);
2519
+ }
2520
+ }, [params.lastConnectedWallet]);
2521
+ react.useEffect(function () {
2522
+ if (params.disconnectedWallet) {
2523
+ checkWaitingForNetworkChange(manager);
2524
+ /*
2525
+ We need to reset the state value, so if a wallet disconnected twice (after reconnect),
2526
+ this effect will be run properly.
2527
+ */
2528
+ params.clearDisconnectedWallet();
2529
+ }
2530
+ }, [params.disconnectedWallet]);
2531
+ }
2532
+
2283
2533
  var _actions;
2284
2534
  /**
2285
2535
  *
@@ -2303,6 +2553,12 @@ var swapQueueDef = {
2303
2553
  }
2304
2554
  };
2305
2555
 
2556
+ exports.checkWaitingForNetworkChange = checkWaitingForNetworkChange;
2557
+ exports.getCurrentStep = getCurrentStep;
2558
+ exports.getEvmProvider = getEvmProvider;
2559
+ exports.getRelatedWallet = getRelatedWallet$1;
2306
2560
  exports.swapQueueDef = swapQueueDef;
2307
2561
  exports.updateSwapStatus = updateSwapStatus;
2562
+ exports.useMigration = useMigration;
2563
+ exports.useQueueManager = useQueueManager;
2308
2564
  //# sourceMappingURL=queue-manager-rango-preset.cjs.development.js.map