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

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,28 +1,13 @@
1
+ import { SignerError, isAPIErrorCode, isSignerErrorCode, SignerErrorCode } from 'rango-types';
1
2
  import { WalletType, Network, getBlockChainNameFromId } from '@rango-dev/wallets-shared';
2
3
  import { readAccountAddress } from '@rango-dev/wallets-core';
3
4
  import { RangoClient, TransactionType } from 'rango-sdk';
4
5
  import { Status, Persistor, DB_NAME } from '@rango-dev/queue-manager-core';
5
- import { isSignerErrorCode, SignerErrorCode, SignerError } from 'rango-types';
6
6
  import { captureException } from '@sentry/browser';
7
7
  import { useManager } from '@rango-dev/queue-manager-react';
8
8
  import { useState, useEffect } from 'react';
9
9
  import { v4 } from 'uuid';
10
10
 
11
- var SwapActionTypes;
12
- (function (SwapActionTypes) {
13
- SwapActionTypes["START"] = "START";
14
- SwapActionTypes["SCHEDULE_NEXT_STEP"] = "SCHEDULE_NEXT_STEP";
15
- SwapActionTypes["CREATE_TRANSACTION"] = "CREATE_TRANSACTION";
16
- SwapActionTypes["EXECUTE_TRANSACTION"] = "EXECUTE_TRANSACTION";
17
- SwapActionTypes["CHECK_TRANSACTION_STATUS"] = "CHECK_TRANSACTION_STATUS";
18
- })(SwapActionTypes || (SwapActionTypes = {}));
19
- var BlockReason;
20
- (function (BlockReason) {
21
- BlockReason["WAIT_FOR_CONNECT_WALLET"] = "waiting_for_connecting_wallet";
22
- BlockReason["WAIT_FOR_NETWORK_CHANGE"] = "waiting_for_network_change";
23
- BlockReason["DEPENDS_ON_OTHER_QUEUES"] = "depends_on_other_queues";
24
- })(BlockReason || (BlockReason = {}));
25
-
26
11
  function _regeneratorRuntime() {
27
12
  _regeneratorRuntime = function () {
28
13
  return exports;
@@ -448,46 +433,6 @@ function _assertThisInitialized(self) {
448
433
  return self;
449
434
  }
450
435
 
451
- var RANGO_DAPP_API_KEY = process.env.REACT_APP_API_KEY;
452
- var RANGO_DAPP_API_BASE_URL = process.env.REACT_APP_API_BASE_URL;
453
- var ERROR_MESSAGE_WAIT_FOR_WALLET = 'Waiting for connecting wallet';
454
- var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET(type, address) {
455
- return "Please change your " + (type || 'wallet') + " account to " + (address || 'proper address');
456
- };
457
- var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION(type) {
458
- return "Please connect to " + (type || 'your wallet') + " by using bellow button or top right button on page.";
459
- };
460
- var ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK = function ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK(network) {
461
- return "Please change your network to " + network + ".";
462
- };
463
-
464
- var APIErrorCode;
465
- (function (APIErrorCode) {
466
- APIErrorCode["TX_FAIL"] = "TX_FAIL";
467
- APIErrorCode["FETCH_TX_FAILED"] = "FETCH_TX_FAILED";
468
- APIErrorCode["USER_REJECT"] = "USER_REJECT";
469
- APIErrorCode["CALL_WALLET_FAILED"] = "CALL_WALLET_FAILED";
470
- APIErrorCode["SEND_TX_FAILED"] = "SEND_TX_FAILED";
471
- APIErrorCode["CALL_OR_SEND_FAILED"] = "CALL_OR_SEND_FAILED";
472
- APIErrorCode["USER_CANCEL"] = "USER_CANCEL";
473
- APIErrorCode["CLIENT_UNEXPECTED_BEHAVIOUR"] = "CLIENT_UNEXPECTED_BEHAVIOUR";
474
- })(APIErrorCode || (APIErrorCode = {}));
475
- var ApiMethodName;
476
- (function (ApiMethodName) {
477
- ApiMethodName["RequestingSwapTransaction"] = "Requesting Swap Transaction";
478
- ApiMethodName["CreatingSwap"] = "Creating Swap";
479
- ApiMethodName["CheckingTransactionStatus"] = "Checking transaction status";
480
- ApiMethodName["CreateTransaction"] = "Create Transaction";
481
- ApiMethodName["CheckApproval"] = "Check TX Approval";
482
- ApiMethodName["GettingSwapDetail"] = "Getting Swap Detail";
483
- ApiMethodName["GettingUserLimits"] = "Getting user limits";
484
- })(ApiMethodName || (ApiMethodName = {}));
485
- var TransactionName;
486
- (function (TransactionName) {
487
- TransactionName["GenericTransaction"] = "transaction";
488
- TransactionName["SendingOneInchTransaction"] = "1inch transaction";
489
- TransactionName["Approval"] = "approve transaction";
490
- })(TransactionName || (TransactionName = {}));
491
436
  var ERROR_ASSERTION_FAILED = 'Assertion failed (Unexpected behaviour)';
492
437
  var ERROR_CREATE_TRANSACTION = 'Create transaction failed in Rango Server';
493
438
  var ERROR_INPUT_WALLET_NOT_FOUND = 'Input wallet not found';
@@ -496,12 +441,17 @@ var PrettyError = /*#__PURE__*/function (_Error) {
496
441
  function PrettyError(code, m, root, detail) {
497
442
  var _this;
498
443
  _this = _Error.call(this, m) || this;
444
+ _this._isPrettyError = true;
499
445
  Object.setPrototypeOf(_assertThisInitialized(_this), PrettyError.prototype);
446
+ PrettyError.prototype._isPrettyError = true;
500
447
  _this.code = code;
501
448
  _this.detail = detail;
502
449
  _this.root = root;
503
450
  return _this;
504
451
  }
452
+ PrettyError.isPrettyError = function isPrettyError(obj) {
453
+ return obj instanceof PrettyError || Object.prototype.hasOwnProperty('_isPrettyError');
454
+ };
505
455
  var _proto = PrettyError.prototype;
506
456
  _proto.getErrorDetail = function getErrorDetail() {
507
457
  var rawMessage = typeof this.root === 'object' && this.root && this.root.error ? this.root.error : JSON.stringify(this.root);
@@ -513,33 +463,30 @@ var PrettyError = /*#__PURE__*/function (_Error) {
513
463
  };
514
464
  };
515
465
  PrettyError.AssertionFailed = function AssertionFailed(m) {
516
- return new PrettyError(APIErrorCode.CLIENT_UNEXPECTED_BEHAVIOUR, ERROR_ASSERTION_FAILED, m);
466
+ return new PrettyError('CLIENT_UNEXPECTED_BEHAVIOUR', ERROR_ASSERTION_FAILED, m);
517
467
  };
518
468
  PrettyError.BadStatusCode = function BadStatusCode(message, statusCode) {
519
- return new PrettyError(APIErrorCode.TX_FAIL, message, null, "status code = " + statusCode);
469
+ return new PrettyError('TX_FAIL', message, null, "status code = " + statusCode);
520
470
  };
521
471
  PrettyError.CreateTransaction = function CreateTransaction(detail) {
522
- return new PrettyError(APIErrorCode.FETCH_TX_FAILED, ERROR_CREATE_TRANSACTION, null, detail);
472
+ return new PrettyError('FETCH_TX_FAILED', ERROR_CREATE_TRANSACTION, null, detail);
523
473
  };
524
474
  PrettyError.WalletMissing = function WalletMissing() {
525
- return new PrettyError(APIErrorCode.CLIENT_UNEXPECTED_BEHAVIOUR, ERROR_INPUT_WALLET_NOT_FOUND, null, 'Server requested for a blockchain or address not selected by user');
475
+ return new PrettyError('CLIENT_UNEXPECTED_BEHAVIOUR', ERROR_INPUT_WALLET_NOT_FOUND, null, 'Server requested for a blockchain or address not selected by user');
526
476
  };
527
477
  PrettyError.BlockchainMissing = function BlockchainMissing() {
528
- return new PrettyError(APIErrorCode.CLIENT_UNEXPECTED_BEHAVIOUR, ERROR_INPUT_WALLET_NOT_FOUND, null, 'Server requested for a blockchain or address not selected by user');
478
+ return new PrettyError('CLIENT_UNEXPECTED_BEHAVIOUR', ERROR_INPUT_WALLET_NOT_FOUND, null, 'Server requested for a blockchain or address not selected by user');
529
479
  };
530
480
  return PrettyError;
531
481
  }( /*#__PURE__*/_wrapNativeSuper(Error));
532
- function isAPIErrorCode(value) {
533
- return Object.values(APIErrorCode).includes(value);
534
- }
535
482
  function mapAppErrorCodesToAPIErrorCode(errorCode) {
536
- var defaultErrorCode = APIErrorCode.CLIENT_UNEXPECTED_BEHAVIOUR;
483
+ var defaultErrorCode = 'CLIENT_UNEXPECTED_BEHAVIOUR';
537
484
  try {
538
485
  if (!errorCode) return defaultErrorCode;
539
486
  if (isAPIErrorCode(errorCode)) return errorCode;
540
487
  if (isSignerErrorCode(errorCode)) {
541
488
  var _t;
542
- var t = (_t = {}, _t[SignerErrorCode.REJECTED_BY_USER] = APIErrorCode.USER_REJECT, _t[SignerErrorCode.SIGN_TX_ERROR] = APIErrorCode.CALL_WALLET_FAILED, _t[SignerErrorCode.SEND_TX_ERROR] = APIErrorCode.SEND_TX_FAILED, _t[SignerErrorCode.NOT_IMPLEMENTED] = defaultErrorCode, _t[SignerErrorCode.OPERATION_UNSUPPORTED] = defaultErrorCode, _t[SignerErrorCode.UNEXPECTED_BEHAVIOUR] = defaultErrorCode, _t);
489
+ var t = (_t = {}, _t[SignerErrorCode.REJECTED_BY_USER] = 'USER_REJECT', _t[SignerErrorCode.SIGN_TX_ERROR] = 'CALL_WALLET_FAILED', _t[SignerErrorCode.SEND_TX_ERROR] = 'SEND_TX_FAILED', _t[SignerErrorCode.NOT_IMPLEMENTED] = defaultErrorCode, _t[SignerErrorCode.OPERATION_UNSUPPORTED] = defaultErrorCode, _t[SignerErrorCode.UNEXPECTED_BEHAVIOUR] = defaultErrorCode, _t);
543
490
  return t[errorCode];
544
491
  }
545
492
  return defaultErrorCode;
@@ -547,6 +494,33 @@ function mapAppErrorCodesToAPIErrorCode(errorCode) {
547
494
  return defaultErrorCode;
548
495
  }
549
496
  }
497
+ var prettifyErrorMessage = function prettifyErrorMessage(obj) {
498
+ if (!obj) return {
499
+ extraMessage: '',
500
+ extraMessageErrorCode: null
501
+ };
502
+ if (PrettyError.isPrettyError(obj)) return obj.getErrorDetail();
503
+ if (SignerError.isSignerError(obj)) {
504
+ var t = obj.getErrorDetail();
505
+ return {
506
+ extraMessage: t.message,
507
+ extraMessageDetail: t.detail,
508
+ extraMessageErrorCode: t.code
509
+ };
510
+ }
511
+ if (obj instanceof Error) return {
512
+ extraMessage: obj.toString(),
513
+ extraMessageErrorCode: null
514
+ };
515
+ if (typeof obj !== 'string') return {
516
+ extraMessage: JSON.stringify(obj),
517
+ extraMessageErrorCode: null
518
+ };
519
+ return {
520
+ extraMessage: obj,
521
+ extraMessageErrorCode: null
522
+ };
523
+ };
550
524
 
551
525
  var PendingSwapNetworkStatus;
552
526
  (function (PendingSwapNetworkStatus) {
@@ -599,48 +573,22 @@ var getStarknetApproveUrl = function getStarknetApproveUrl(tx) {
599
573
  var getTronApproveUrl = function getTronApproveUrl(tx) {
600
574
  return 'https://tronscan.org/#/transaction/{txHash}'.replace('{txHash}', tx.toLowerCase());
601
575
  };
602
- var prettifyErrorMessage = function prettifyErrorMessage(obj) {
603
- if (!obj) return {
604
- extraMessage: '',
605
- extraMessageErrorCode: null
606
- };
607
- if (obj instanceof PrettyError) return obj.getErrorDetail();
608
- if (obj instanceof SignerError) {
609
- var t = obj.getErrorDetail();
610
- return {
611
- extraMessage: t.message,
612
- extraMessageDetail: t.detail,
613
- extraMessageErrorCode: t.code
614
- };
615
- }
616
- if (obj instanceof Error) return {
617
- extraMessage: obj.toString(),
618
- extraMessageErrorCode: null
619
- };
620
- if (typeof obj !== 'string') return {
621
- extraMessage: JSON.stringify(obj),
622
- extraMessageErrorCode: null
623
- };
624
- return {
625
- extraMessage: obj,
626
- extraMessageErrorCode: null
627
- };
628
- };
629
576
  function getNextStep(swap, currentStep) {
630
577
  return swap.steps.find(function (step) {
631
578
  return step.status !== 'failed' && step.status !== 'success' && step.id !== currentStep.id;
632
579
  }) || null;
633
580
  }
634
- // TODO: we have samething in `helpers`, for fixing circular dependency, we copied and should be removed eventually.
581
+ /**
582
+ * Returns the wallet address, based on the current step of `PendingSwap`.
583
+ */
635
584
  var getCurrentAddressOf = function getCurrentAddressOf(swap, step) {
636
- var _step$evmTransaction2, _step$evmApprovalTran2, _step$cosmosTransacti2, _step$solanaTransacti2, _step$transferTransac2, _step$transferTransac3;
637
- var result = swap.wallets[((_step$evmTransaction2 = step.evmTransaction) == null ? void 0 : _step$evmTransaction2.blockChain) || ''] || swap.wallets[((_step$evmApprovalTran2 = step.evmApprovalTransaction) == null ? void 0 : _step$evmApprovalTran2.blockChain) || ''] || swap.wallets[((_step$cosmosTransacti2 = step.cosmosTransaction) == null ? void 0 : _step$cosmosTransacti2.blockChain) || ''] || swap.wallets[((_step$solanaTransacti2 = step.solanaTransaction) == null ? void 0 : _step$solanaTransacti2.blockChain) || ''] || ((_step$transferTransac2 = step.transferTransaction) != null && _step$transferTransac2.fromWalletAddress ? {
585
+ var _step$evmTransaction2, _step$evmApprovalTran2, _step$tronTransaction2, _step$tronApprovalTra2, _step$starknetTransac2, _step$starknetApprova2, _step$cosmosTransacti2, _step$solanaTransacti2, _step$transferTransac2, _step$transferTransac3;
586
+ var result = swap.wallets[((_step$evmTransaction2 = step.evmTransaction) == null ? void 0 : _step$evmTransaction2.blockChain) || ''] || swap.wallets[((_step$evmApprovalTran2 = step.evmApprovalTransaction) == null ? void 0 : _step$evmApprovalTran2.blockChain) || ''] || swap.wallets[((_step$tronTransaction2 = step.tronTransaction) == null ? void 0 : _step$tronTransaction2.blockChain) || ''] || swap.wallets[((_step$tronApprovalTra2 = step.tronApprovalTransaction) == null ? void 0 : _step$tronApprovalTra2.blockChain) || ''] || swap.wallets[((_step$starknetTransac2 = step.starknetTransaction) == null ? void 0 : _step$starknetTransac2.blockChain) || ''] || swap.wallets[((_step$starknetApprova2 = step.starknetApprovalTransaction) == null ? void 0 : _step$starknetApprova2.blockChain) || ''] || swap.wallets[((_step$cosmosTransacti2 = step.cosmosTransaction) == null ? void 0 : _step$cosmosTransacti2.blockChain) || ''] || swap.wallets[((_step$solanaTransacti2 = step.solanaTransaction) == null ? void 0 : _step$solanaTransacti2.blockChain) || ''] || ((_step$transferTransac2 = step.transferTransaction) != null && _step$transferTransac2.fromWalletAddress ? {
638
587
  address: (_step$transferTransac3 = step.transferTransaction) == null ? void 0 : _step$transferTransac3.fromWalletAddress
639
588
  } : null) || null;
640
589
  if (result == null) throw PrettyError.WalletMissing();
641
590
  return result.address;
642
591
  };
643
- // TODO: we have samething in `helpers`, for fixing circular dependency, we copied and should be removed eventually.
644
592
  function getRelatedWallet(swap, currentStep) {
645
593
  var walletAddress = getCurrentAddressOf(swap, currentStep);
646
594
  var walletKV = Object.keys(swap.wallets).map(function (k) {
@@ -666,6 +614,34 @@ function getRelatedWalletOrNull(swap, currentStep) {
666
614
  }
667
615
  }
668
616
 
617
+ var SwapActionTypes;
618
+ (function (SwapActionTypes) {
619
+ SwapActionTypes["START"] = "START";
620
+ SwapActionTypes["SCHEDULE_NEXT_STEP"] = "SCHEDULE_NEXT_STEP";
621
+ SwapActionTypes["CREATE_TRANSACTION"] = "CREATE_TRANSACTION";
622
+ SwapActionTypes["EXECUTE_TRANSACTION"] = "EXECUTE_TRANSACTION";
623
+ SwapActionTypes["CHECK_TRANSACTION_STATUS"] = "CHECK_TRANSACTION_STATUS";
624
+ })(SwapActionTypes || (SwapActionTypes = {}));
625
+ var BlockReason;
626
+ (function (BlockReason) {
627
+ BlockReason["WAIT_FOR_CONNECT_WALLET"] = "waiting_for_connecting_wallet";
628
+ BlockReason["WAIT_FOR_NETWORK_CHANGE"] = "waiting_for_network_change";
629
+ BlockReason["DEPENDS_ON_OTHER_QUEUES"] = "depends_on_other_queues";
630
+ })(BlockReason || (BlockReason = {}));
631
+
632
+ var RANGO_DAPP_API_KEY = process.env.REACT_APP_API_KEY;
633
+ var RANGO_DAPP_API_BASE_URL = process.env.REACT_APP_API_BASE_URL;
634
+ var ERROR_MESSAGE_WAIT_FOR_WALLET = 'Waiting for connecting wallet';
635
+ var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET(type, address) {
636
+ return "Please change your " + (type || 'wallet') + " account to " + (address || 'proper address');
637
+ };
638
+ var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION(type) {
639
+ return "Please connect to " + (type || 'your wallet') + " by using bellow button or top right button on page.";
640
+ };
641
+ var ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK = function ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK(network) {
642
+ return "Please change your network to " + network + ".";
643
+ };
644
+
669
645
  function logRPCError(error, swap, currentStep, walletType) {
670
646
  try {
671
647
  captureException(error, {
@@ -709,12 +685,23 @@ function claimQueue() {
709
685
  };
710
686
  }
711
687
  /**
712
- *
688
+ * Sample inputs are:
689
+ * - "metamask-ETH"
690
+ * - "metamask-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
691
+ * - "token-pocket-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
713
692
  * Returns "wallet and network" separately, even if the wallet is dashed inside.
714
693
  *
715
694
  */
716
695
  function splitWalletNetwork(input) {
717
- return input == null ? void 0 : input.split(/-(?=[^-]*$)/);
696
+ var removedAddressInput = (input == null ? void 0 : input.split(':')[0]) || '';
697
+ var splittedInput = removedAddressInput.split('-');
698
+ var network = splittedInput[splittedInput.length - 1];
699
+ var walletNetwork = splittedInput.slice(0, -1);
700
+ if (walletNetwork[walletNetwork.length - 1] === network) {
701
+ walletNetwork.pop();
702
+ }
703
+ var wallet = walletNetwork.join('-');
704
+ return [wallet, network];
718
705
  }
719
706
  /**
720
707
  *
@@ -747,8 +734,10 @@ function updateSwapStatus(_ref) {
747
734
  if (!!nextStatus) swap.status = nextStatus;
748
735
  swap.hasAlreadyProceededToSign = hasAlreadyProceededToSign;
749
736
  if (!!nextStatus && ['failed', 'success'].includes(nextStatus)) swap.finishTime = new Date().getTime().toString();
750
- if (!!message) swap.extraMessage = message;
751
- if (!!details) swap.extraMessageDetail = details;
737
+ if (!!message || !!details) {
738
+ swap.extraMessage = message || '';
739
+ swap.extraMessageDetail = details || '';
740
+ }
752
741
  if (!!nextStepStatus && ['failed'].includes(nextStepStatus)) {
753
742
  var _getRelatedWalletOrNu;
754
743
  //if user cancel the swap, we should pass relevant reason to the server.
@@ -758,7 +747,7 @@ function updateSwapStatus(_ref) {
758
747
  httpService.reportFailure({
759
748
  requestId: swap.requestId,
760
749
  step: (currentStep == null ? void 0 : currentStep.id) || 1,
761
- eventType: mapAppErrorCodesToAPIErrorCode(hasAlreadyProceededToSign ? APIErrorCode.TX_FAIL : errorCode),
750
+ eventType: mapAppErrorCodesToAPIErrorCode(errorCode),
762
751
  reason: errorReason || '',
763
752
  data: walletType ? {
764
753
  wallet: walletType
@@ -774,18 +763,32 @@ function updateSwapStatus(_ref) {
774
763
  step: currentStep
775
764
  };
776
765
  }
777
- function setStepTransactionIds(_ref2, txId, eventType, notifier) {
766
+ function setStepTransactionIds(_ref2, txId, notifier, eventType, approveUrl) {
778
767
  var getStorage = _ref2.getStorage,
779
768
  setStorage = _ref2.setStorage;
780
769
  var swap = getStorage().swapDetails;
781
770
  swap.hasAlreadyProceededToSign = null;
782
771
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
783
772
  var currentStep = getCurrentStep(swap);
784
- currentStep.executedTransactionId = txId || currentStep.executedTransactionId;
773
+ currentStep.executedTransactionId = txId;
774
+ currentStep.executedTransactionTime = new Date().getTime().toString();
775
+ if (!!approveUrl) currentStep.explorerUrl = [].concat(currentStep.explorerUrl || [], [{
776
+ url: approveUrl,
777
+ description: "approve"
778
+ }]);
779
+ if (eventType === 'check_tx_status') {
780
+ swap.extraMessage = 'Checking transaction status ...';
781
+ swap.extraMessageDetail = '';
782
+ swap.extraMessageSeverity = MessageSeverity.info;
783
+ } else if (eventType === 'check_approve_tx_status') {
784
+ swap.extraMessage = 'Checking approve transaction status ...';
785
+ swap.extraMessageDetail = '';
786
+ swap.extraMessageSeverity = MessageSeverity.info;
787
+ }
785
788
  setStorage(_extends({}, getStorage(), {
786
789
  swapDetails: swap
787
790
  }));
788
- notifier({
791
+ if (!!eventType) notifier({
789
792
  eventType: eventType,
790
793
  swap: swap,
791
794
  step: currentStep
@@ -860,13 +863,19 @@ function markRunningSwapAsSwitchingNetwork(_ref4) {
860
863
  */
861
864
  function markRunningSwapAsDependsOnOtherQueues(_ref5) {
862
865
  var getStorage = _ref5.getStorage,
863
- setStorage = _ref5.setStorage;
866
+ setStorage = _ref5.setStorage,
867
+ notifier = _ref5.notifier;
864
868
  var swap = getStorage().swapDetails;
865
869
  var currentStep = getCurrentStep(swap);
866
870
  if (!currentStep) return;
867
871
  swap.networkStatusExtraMessage = '';
868
872
  swap.networkStatusExtraMessageDetail = '';
869
873
  currentStep.networkStatus = PendingSwapNetworkStatus.WaitingForQueue;
874
+ notifier({
875
+ eventType: 'waiting_for_queue',
876
+ swap: swap,
877
+ step: currentStep
878
+ });
870
879
  setStorage(_extends({}, getStorage(), {
871
880
  swapDetails: swap
872
881
  }));
@@ -998,9 +1007,6 @@ function _getChainId() {
998
1007
  function isNetworkMatchedForTransaction(_x2, _x3, _x4, _x5, _x6) {
999
1008
  return _isNetworkMatchedForTransaction.apply(this, arguments);
1000
1009
  }
1001
- /**
1002
- * Returns the wallet address, based on the current step of `PendingSwap`.
1003
- */
1004
1010
  function _isNetworkMatchedForTransaction() {
1005
1011
  _isNetworkMatchedForTransaction = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(swap, step, wallet, meta, providers) {
1006
1012
  var fromBlockChain, sourceWallet, provider, chainId, blockChain;
@@ -1008,112 +1014,85 @@ function _isNetworkMatchedForTransaction() {
1008
1014
  while (1) switch (_context2.prev = _context2.next) {
1009
1015
  case 0:
1010
1016
  if (!isWalletNull(wallet)) {
1011
- _context2.next = 3;
1017
+ _context2.next = 2;
1012
1018
  break;
1013
1019
  }
1014
- console.warn('wallet object is null');
1015
1020
  return _context2.abrupt("return", false);
1016
- case 3:
1021
+ case 2:
1017
1022
  fromBlockChain = getCurrentBlockchainOfOrNull(swap, step);
1018
1023
  if (fromBlockChain) {
1019
- _context2.next = 6;
1024
+ _context2.next = 5;
1020
1025
  break;
1021
1026
  }
1022
1027
  return _context2.abrupt("return", false);
1023
- case 6:
1028
+ case 5:
1024
1029
  if (!meta.evmBasedChains.find(function (evmBlochain) {
1025
1030
  return evmBlochain.name === fromBlockChain;
1026
1031
  })) {
1027
- _context2.next = 30;
1032
+ _context2.next = 29;
1028
1033
  break;
1029
1034
  }
1030
- _context2.prev = 7;
1035
+ _context2.prev = 6;
1031
1036
  sourceWallet = swap.wallets[fromBlockChain];
1032
1037
  if (!sourceWallet) {
1033
- _context2.next = 24;
1038
+ _context2.next = 23;
1034
1039
  break;
1035
1040
  }
1036
1041
  if (![WalletType.META_MASK, WalletType.BINANCE_CHAIN, WalletType.XDEFI, WalletType.WALLET_CONNECT, WalletType.TRUST_WALLET, WalletType.COIN98, WalletType.EXODUS, WalletType.OKX, WalletType.COINBASE, WalletType.TOKEN_POCKET, WalletType.MATH, WalletType.SAFEPAL, WalletType.COSMOSTATION, WalletType.CLOVER, WalletType.BRAVE, WalletType.FRONTIER, WalletType.KUCOIN].includes(sourceWallet.walletType)) {
1037
- _context2.next = 23;
1042
+ _context2.next = 22;
1038
1043
  break;
1039
1044
  }
1040
1045
  provider = getEvmProvider(providers, sourceWallet.walletType);
1041
- _context2.next = 14;
1046
+ _context2.next = 13;
1042
1047
  return getChainId(provider);
1043
- case 14:
1048
+ case 13:
1044
1049
  chainId = _context2.sent;
1045
1050
  if (!chainId) {
1046
- _context2.next = 21;
1051
+ _context2.next = 20;
1047
1052
  break;
1048
1053
  }
1049
- blockChain = getBlockChainNameFromId(chainId, Object.entries(meta.blockchains).map(function (_ref7) {
1050
- var blockchainMeta = _ref7[1];
1054
+ blockChain = getBlockChainNameFromId(chainId, Object.entries(meta.blockchains).map(function (_ref6) {
1055
+ var blockchainMeta = _ref6[1];
1051
1056
  return blockchainMeta;
1052
1057
  }));
1053
1058
  if (!(blockChain && blockChain.toLowerCase() === fromBlockChain.toLowerCase())) {
1054
- _context2.next = 19;
1059
+ _context2.next = 18;
1055
1060
  break;
1056
1061
  }
1057
1062
  return _context2.abrupt("return", true);
1058
- case 19:
1063
+ case 18:
1059
1064
  if (!(blockChain && blockChain.toLowerCase() !== fromBlockChain.toLowerCase())) {
1060
- _context2.next = 21;
1065
+ _context2.next = 20;
1061
1066
  break;
1062
1067
  }
1063
1068
  return _context2.abrupt("return", false);
1064
- case 21:
1065
- _context2.next = 24;
1069
+ case 20:
1070
+ _context2.next = 23;
1066
1071
  break;
1067
- case 23:
1072
+ case 22:
1068
1073
  return _context2.abrupt("return", true);
1069
- case 24:
1070
- _context2.next = 29;
1074
+ case 23:
1075
+ _context2.next = 28;
1071
1076
  break;
1072
- case 26:
1073
- _context2.prev = 26;
1074
- _context2.t0 = _context2["catch"](7);
1077
+ case 25:
1078
+ _context2.prev = 25;
1079
+ _context2.t0 = _context2["catch"](6);
1075
1080
  console.log(_context2.t0);
1076
- case 29:
1081
+ case 28:
1077
1082
  return _context2.abrupt("return", false);
1078
- case 30:
1083
+ case 29:
1079
1084
  return _context2.abrupt("return", true);
1080
- case 31:
1085
+ case 30:
1081
1086
  case "end":
1082
1087
  return _context2.stop();
1083
1088
  }
1084
- }, _callee2, null, [[7, 26]]);
1089
+ }, _callee2, null, [[6, 25]]);
1085
1090
  }));
1086
1091
  return _isNetworkMatchedForTransaction.apply(this, arguments);
1087
1092
  }
1088
- var getCurrentAddressOf$1 = function getCurrentAddressOf(swap, step) {
1089
- var _step$evmTransaction, _step$evmApprovalTran, _step$tronTransaction, _step$tronApprovalTra, _step$starknetTransac, _step$starknetApprova, _step$cosmosTransacti, _step$solanaTransacti, _step$transferTransac, _step$transferTransac2;
1090
- var result = swap.wallets[((_step$evmTransaction = step.evmTransaction) == null ? void 0 : _step$evmTransaction.blockChain) || ''] || swap.wallets[((_step$evmApprovalTran = step.evmApprovalTransaction) == null ? void 0 : _step$evmApprovalTran.blockChain) || ''] || swap.wallets[((_step$tronTransaction = step.tronTransaction) == null ? void 0 : _step$tronTransaction.blockChain) || ''] || swap.wallets[((_step$tronApprovalTra = step.tronApprovalTransaction) == null ? void 0 : _step$tronApprovalTra.blockChain) || ''] || swap.wallets[((_step$starknetTransac = step.starknetTransaction) == null ? void 0 : _step$starknetTransac.blockChain) || ''] || swap.wallets[((_step$starknetApprova = step.starknetApprovalTransaction) == null ? void 0 : _step$starknetApprova.blockChain) || ''] || swap.wallets[((_step$cosmosTransacti = step.cosmosTransaction) == null ? void 0 : _step$cosmosTransacti.blockChain) || ''] || swap.wallets[((_step$solanaTransacti = step.solanaTransaction) == null ? void 0 : _step$solanaTransacti.blockChain) || ''] || ((_step$transferTransac = step.transferTransaction) != null && _step$transferTransac.fromWalletAddress ? {
1091
- address: (_step$transferTransac2 = step.transferTransaction) == null ? void 0 : _step$transferTransac2.fromWalletAddress
1092
- } : null) || null;
1093
- if (result == null) throw PrettyError.WalletMissing();
1094
- return result.address;
1095
- };
1096
- // Todo: Is it same with `getRequiredWallet`?
1097
- function getRelatedWallet$1(swap, currentStep) {
1098
- var walletAddress = getCurrentAddressOf$1(swap, currentStep);
1099
- var walletKV = Object.keys(swap.wallets).map(function (k) {
1100
- return {
1101
- k: k,
1102
- v: swap.wallets[k]
1103
- };
1104
- }).find(function (_ref6) {
1105
- var v = _ref6.v;
1106
- return v.address === walletAddress;
1107
- }) || null;
1108
- var blockchain = (walletKV == null ? void 0 : walletKV.k) || null;
1109
- var wallet = (walletKV == null ? void 0 : walletKV.v) || null;
1110
- var walletType = wallet == null ? void 0 : wallet.walletType;
1111
- if (walletType === WalletType.UNKNOWN || wallet === null) throw PrettyError.AssertionFailed("Wallet for source " + blockchain + " not passed: walletType: " + walletType);
1112
- return wallet;
1113
- }
1114
1093
  var isTxAlreadyCreated = function isTxAlreadyCreated(swap, step) {
1115
- var _step$evmTransaction2, _step$evmApprovalTran2, _step$tronTransaction2, _step$tronApprovalTra2, _step$starknetTransac2, _step$starknetApprova2, _step$cosmosTransacti2, _step$solanaTransacti2, _step$transferTransac3;
1116
- var result = swap.wallets[((_step$evmTransaction2 = step.evmTransaction) == null ? void 0 : _step$evmTransaction2.blockChain) || ''] || swap.wallets[((_step$evmApprovalTran2 = step.evmApprovalTransaction) == null ? void 0 : _step$evmApprovalTran2.blockChain) || ''] || swap.wallets[((_step$tronTransaction2 = step.tronTransaction) == null ? void 0 : _step$tronTransaction2.blockChain) || ''] || swap.wallets[((_step$tronApprovalTra2 = step.tronApprovalTransaction) == null ? void 0 : _step$tronApprovalTra2.blockChain) || ''] || swap.wallets[((_step$starknetTransac2 = step.starknetTransaction) == null ? void 0 : _step$starknetTransac2.blockChain) || ''] || swap.wallets[((_step$starknetApprova2 = step.starknetApprovalTransaction) == null ? void 0 : _step$starknetApprova2.blockChain) || ''] || swap.wallets[((_step$cosmosTransacti2 = step.cosmosTransaction) == null ? void 0 : _step$cosmosTransacti2.blockChain) || ''] || swap.wallets[((_step$solanaTransacti2 = step.solanaTransaction) == null ? void 0 : _step$solanaTransacti2.blockChain) || ''] || ((_step$transferTransac3 = step.transferTransaction) == null ? void 0 : _step$transferTransac3.fromWalletAddress) || null;
1094
+ var _step$evmTransaction, _step$evmApprovalTran, _step$tronTransaction, _step$tronApprovalTra, _step$starknetTransac, _step$starknetApprova, _step$cosmosTransacti, _step$solanaTransacti, _step$transferTransac;
1095
+ var result = swap.wallets[((_step$evmTransaction = step.evmTransaction) == null ? void 0 : _step$evmTransaction.blockChain) || ''] || swap.wallets[((_step$evmApprovalTran = step.evmApprovalTransaction) == null ? void 0 : _step$evmApprovalTran.blockChain) || ''] || swap.wallets[((_step$tronTransaction = step.tronTransaction) == null ? void 0 : _step$tronTransaction.blockChain) || ''] || swap.wallets[((_step$tronApprovalTra = step.tronApprovalTransaction) == null ? void 0 : _step$tronApprovalTra.blockChain) || ''] || swap.wallets[((_step$starknetTransac = step.starknetTransaction) == null ? void 0 : _step$starknetTransac.blockChain) || ''] || swap.wallets[((_step$starknetApprova = step.starknetApprovalTransaction) == null ? void 0 : _step$starknetApprova.blockChain) || ''] || swap.wallets[((_step$cosmosTransacti = step.cosmosTransaction) == null ? void 0 : _step$cosmosTransacti.blockChain) || ''] || swap.wallets[((_step$solanaTransacti = step.solanaTransaction) == null ? void 0 : _step$solanaTransacti.blockChain) || ''] || ((_step$transferTransac = step.transferTransaction) == null ? void 0 : _step$transferTransac.fromWalletAddress) || null;
1117
1096
  return result !== null;
1118
1097
  };
1119
1098
  function resetNetworkStatus(actions) {
@@ -1155,7 +1134,7 @@ function updateNetworkStatus(actions, data) {
1155
1134
  }
1156
1135
  /**
1157
1136
  * Event handler for blocked tasks.
1158
- * If a transcation execution is manually blocked (like for parallel or waiting for walle),
1137
+ * If a transcation execution is manually blocked (like for parallel or waiting for wallet),
1159
1138
  * This function will be called by queue manager using `queue definition`.
1160
1139
  *
1161
1140
  * It checks if the required wallet is connected, unblock the queue to be run.
@@ -1164,11 +1143,14 @@ function onBlockForConnectWallet(event, meta) {
1164
1143
  var context = meta.context,
1165
1144
  queue = meta.queue;
1166
1145
  var swap = queue.getStorage().swapDetails;
1167
- if (!isRequiredWalletConnected(swap, context.state)) {
1146
+ var _isRequiredWalletConn = isRequiredWalletConnected(swap, context.state),
1147
+ ok = _isRequiredWalletConn.ok,
1148
+ reason = _isRequiredWalletConn.reason;
1149
+ if (!ok) {
1168
1150
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1169
1151
  var currentStep = getCurrentStep(swap);
1170
1152
  context.notifier({
1171
- eventType: 'waiting_for_connecting_wallet',
1153
+ eventType: reason === 'account_miss_match' ? 'waiting_for_change_wallet_account' : 'waiting_for_connecting_wallet',
1172
1154
  swap: swap,
1173
1155
  step: currentStep
1174
1156
  });
@@ -1220,7 +1202,7 @@ function onBlockForChangeNetwork(_event, meta) {
1220
1202
  }
1221
1203
  /**
1222
1204
  * Event handler for blocked tasks. (Parallel mode)
1223
- * If a transcation execution is manually blocked (like for parallel or waiting for walle),
1205
+ * If a transcation execution flow is manually blocked (like for parallel or waiting for walle),
1224
1206
  * This function will be called by queue manager using `queue definition`.
1225
1207
  *
1226
1208
  * It checks the blocked tasks, if there is no active `claimed` queue, try to give it to the best candidate.
@@ -1229,7 +1211,8 @@ function onDependsOnOtherQueues(_event, meta) {
1229
1211
  var getBlockedTasks = meta.getBlockedTasks,
1230
1212
  forceExecute = meta.forceExecute,
1231
1213
  queue = meta.queue,
1232
- manager = meta.manager;
1214
+ manager = meta.manager,
1215
+ context = meta.context;
1233
1216
  var _claimQueue = claimQueue(),
1234
1217
  setClaimer = _claimQueue.setClaimer,
1235
1218
  claimedBy = _claimQueue.claimedBy,
@@ -1243,12 +1226,14 @@ function onDependsOnOtherQueues(_event, meta) {
1243
1226
  }
1244
1227
  var claimerId = claimedBy();
1245
1228
  var isClaimedByAnyQueue = !!claimerId;
1229
+ if (claimerId === queue.id) return;
1246
1230
  // Check if any queue `claimed` before, if yes, we don't should do anything.
1247
1231
  if (isClaimedByAnyQueue) {
1248
1232
  // We need to keep the latest swap messages
1249
1233
  markRunningSwapAsDependsOnOtherQueues({
1250
1234
  getStorage: queue.getStorage.bind(queue),
1251
- setStorage: queue.setStorage.bind(queue)
1235
+ setStorage: queue.setStorage.bind(queue),
1236
+ notifier: context.notifier
1252
1237
  });
1253
1238
  return;
1254
1239
  }
@@ -1273,7 +1258,7 @@ function onDependsOnOtherQueues(_event, meta) {
1273
1258
  resetClaimedBy: function resetClaimedBy() {
1274
1259
  reset();
1275
1260
  // TODO: Use key generator
1276
- retryOn(type + "-" + network + "-" + address, manager);
1261
+ retryOn(type + "-" + network + ":" + address, context.notifier, manager);
1277
1262
  }
1278
1263
  });
1279
1264
  }
@@ -1282,16 +1267,28 @@ function isRequiredWalletConnected(swap, getState) {
1282
1267
  type = _getRequiredWallet4.type,
1283
1268
  address = _getRequiredWallet4.address;
1284
1269
  if (!type || !address) {
1285
- return false;
1270
+ return {
1271
+ ok: false,
1272
+ reason: 'not_connected'
1273
+ };
1286
1274
  }
1287
1275
  var walletState = getState(type);
1288
- var accounts = walletState.accounts;
1276
+ var accounts = walletState.accounts,
1277
+ connected = walletState.connected;
1289
1278
  var connectedAccounts = accounts || [];
1290
- return connectedAccounts.some(function (account) {
1279
+ if (!connected) return {
1280
+ ok: false,
1281
+ reason: 'not_connected'
1282
+ };
1283
+ var matched = connectedAccounts.some(function (account) {
1291
1284
  var _readAccountAddress = readAccountAddress(account),
1292
1285
  accountAddress = _readAccountAddress.address;
1293
1286
  return address === accountAddress;
1294
1287
  });
1288
+ return {
1289
+ ok: matched,
1290
+ reason: 'account_miss_match'
1291
+ };
1295
1292
  }
1296
1293
  function singTransaction(actions) {
1297
1294
  var getStorage = actions.getStorage,
@@ -1315,10 +1312,11 @@ function singTransaction(actions) {
1315
1312
  tronApprovalTransaction = currentStep.tronApprovalTransaction,
1316
1313
  starknetTransaction = currentStep.starknetTransaction,
1317
1314
  starknetApprovalTransaction = currentStep.starknetApprovalTransaction;
1318
- var sourceWallet = getRelatedWallet$1(swap, currentStep);
1319
- var walletAddress = getCurrentAddressOf$1(swap, currentStep);
1315
+ var sourceWallet = getRelatedWallet(swap, currentStep);
1316
+ var walletAddress = getCurrentAddressOf(swap, currentStep);
1320
1317
  var walletSigners = getSigners(sourceWallet.walletType);
1321
1318
  var onFinish = function onFinish() {
1319
+ // TODO resetClaimedBy is undefined here
1322
1320
  if (actions.context.resetClaimedBy) {
1323
1321
  actions.context.resetClaimedBy();
1324
1322
  }
@@ -1336,27 +1334,18 @@ function singTransaction(actions) {
1336
1334
  details: 'Waiting for approve transaction to be mined and confirmed successfully'
1337
1335
  });
1338
1336
  notifier(_extends({
1339
- eventType: 'confirm_contract'
1337
+ eventType: 'confirm_approve_contract'
1340
1338
  }, updateResult));
1341
1339
  // Execute transaction
1342
1340
  walletSigners.getSigner(TransactionType.EVM).signAndSendTx(evmApprovalTransaction, walletAddress, null).then(function (hash) {
1343
- console.debug('transaction of approval minted successfully', hash);
1344
1341
  var approveUrl = getEvmApproveUrl(hash, getCurrentBlockchainOf(swap, currentStep), meta.evmBasedChains);
1345
- currentStep.explorerUrl = [].concat(currentStep.explorerUrl || [], [{
1346
- url: approveUrl,
1347
- description: "approve"
1348
- }]);
1349
- // `currentStep` has been mutated, let's update storage.
1350
- setStorage(_extends({}, getStorage(), {
1351
- swapDetails: swap
1352
- }));
1342
+ setStepTransactionIds(actions, hash, notifier, 'check_approve_tx_status', approveUrl);
1353
1343
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1354
1344
  next();
1355
1345
  onFinish();
1356
1346
  }, function (error) {
1357
1347
  var _error$root, _error$root2, _error$root3;
1358
1348
  if (swap.status === 'failed') return;
1359
- console.debug('error in approving', error);
1360
1349
  var _prettifyErrorMessage = prettifyErrorMessage(error),
1361
1350
  extraMessage = _prettifyErrorMessage.extraMessage,
1362
1351
  extraMessageDetail = _prettifyErrorMessage.extraMessageDetail,
@@ -1391,27 +1380,18 @@ function singTransaction(actions) {
1391
1380
  details: 'Waiting for approve transaction to be mined and confirmed successfully'
1392
1381
  });
1393
1382
  notifier(_extends({
1394
- eventType: 'confirm_contract'
1383
+ eventType: 'confirm_approve_contract'
1395
1384
  }, _updateResult));
1396
1385
  // Execute transaction
1397
1386
  walletSigners.getSigner(TransactionType.TRON).signAndSendTx(tronApprovalTransaction, walletAddress, null).then(function (hash) {
1398
- console.debug('transaction of approval minted successfully', hash);
1399
1387
  var approveUrl = getTronApproveUrl(hash);
1400
- currentStep.explorerUrl = [].concat(currentStep.explorerUrl || [], [{
1401
- url: approveUrl,
1402
- description: "approve"
1403
- }]);
1404
- // `currentStep` has been mutated, let's update storage.
1405
- setStorage(_extends({}, getStorage(), {
1406
- swapDetails: swap
1407
- }));
1388
+ setStepTransactionIds(actions, hash, notifier, 'check_approve_tx_status', approveUrl);
1408
1389
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1409
1390
  next();
1410
1391
  onFinish();
1411
1392
  }, function (error) {
1412
1393
  var _error$root4, _error$root5, _error$root6;
1413
1394
  if (swap.status === 'failed') return;
1414
- console.debug('error in approving', error);
1415
1395
  var _prettifyErrorMessage2 = prettifyErrorMessage(error),
1416
1396
  extraMessage = _prettifyErrorMessage2.extraMessage,
1417
1397
  extraMessageDetail = _prettifyErrorMessage2.extraMessageDetail,
@@ -1446,27 +1426,18 @@ function singTransaction(actions) {
1446
1426
  details: 'Waiting for approve transaction to be mined and confirmed successfully'
1447
1427
  });
1448
1428
  notifier(_extends({
1449
- eventType: 'confirm_contract'
1429
+ eventType: 'confirm_approve_contract'
1450
1430
  }, _updateResult2));
1451
1431
  // Execute transaction
1452
1432
  walletSigners.getSigner(TransactionType.STARKNET).signAndSendTx(starknetApprovalTransaction, walletAddress, null).then(function (hash) {
1453
- console.debug('transaction of approval minted successfully', hash);
1454
1433
  var approveUrl = getStarknetApproveUrl(hash);
1455
- currentStep.explorerUrl = [].concat(currentStep.explorerUrl || [], [{
1456
- url: approveUrl,
1457
- description: "approve"
1458
- }]);
1459
- // `currentStep` has been mutated, let's update storage.
1460
- setStorage(_extends({}, getStorage(), {
1461
- swapDetails: swap
1462
- }));
1434
+ setStepTransactionIds(actions, hash, notifier, 'check_approve_tx_status', approveUrl);
1463
1435
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1464
1436
  next();
1465
1437
  onFinish();
1466
1438
  }, function (error) {
1467
1439
  var _error$root7, _error$root8, _error$root9;
1468
1440
  if (swap.status === 'failed') return;
1469
- console.debug('error in approving', error);
1470
1441
  var _prettifyErrorMessage3 = prettifyErrorMessage(error),
1471
1442
  extraMessage = _prettifyErrorMessage3.extraMessage,
1472
1443
  extraMessageDetail = _prettifyErrorMessage3.extraMessageDetail,
@@ -1492,17 +1463,20 @@ function singTransaction(actions) {
1492
1463
  return;
1493
1464
  }
1494
1465
  var hasAlreadyProceededToSign = typeof swap.hasAlreadyProceededToSign === 'boolean';
1466
+ var nextStepStatusBasedOnHasAlreadyProceededToSign = hasAlreadyProceededToSign ? 'failed' : 'running';
1467
+ var errorCodeBasedOnHasAlreadyProceededToSign = hasAlreadyProceededToSign ? 'TX_EXPIRED' : null;
1495
1468
  var executeMessage = hasAlreadyProceededToSign ? 'Transaction is expired. Please try again' : 'executing transaction';
1496
1469
  var executeDetails = "" + (sourceWallet.walletType === WalletType.WALLET_CONNECT ? 'Check your mobile phone' : '');
1497
1470
  if (!!transferTransaction) {
1498
1471
  var _updateResult3 = updateSwapStatus({
1499
1472
  getStorage: getStorage,
1500
1473
  setStorage: setStorage,
1501
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1502
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1474
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1475
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1503
1476
  message: executeMessage,
1504
1477
  details: executeDetails,
1505
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1478
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1479
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1506
1480
  });
1507
1481
  var notification = getSwapNotitfication('confirm_transfer', _updateResult3);
1508
1482
  notifier(notification);
@@ -1511,7 +1485,7 @@ function singTransaction(actions) {
1511
1485
  onFinish();
1512
1486
  } else {
1513
1487
  walletSigners.getSigner(TransactionType.TRANSFER).signAndSendTx(transferTransaction, walletAddress, null).then(function (txId) {
1514
- setStepTransactionIds(actions, txId, 'transfer_confirmed', notifier);
1488
+ setStepTransactionIds(actions, txId, notifier, 'check_tx_status');
1515
1489
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1516
1490
  next();
1517
1491
  onFinish();
@@ -1541,11 +1515,12 @@ function singTransaction(actions) {
1541
1515
  var _updateResult4 = updateSwapStatus({
1542
1516
  getStorage: getStorage,
1543
1517
  setStorage: setStorage,
1544
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1545
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1518
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1519
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1546
1520
  message: executeMessage,
1547
1521
  details: executeDetails,
1548
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1522
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1523
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1549
1524
  });
1550
1525
  var _notification = getSwapNotitfication('calling_smart_contract', _updateResult4);
1551
1526
  notifier(_notification);
@@ -1554,7 +1529,7 @@ function singTransaction(actions) {
1554
1529
  onFinish();
1555
1530
  } else {
1556
1531
  walletSigners.getSigner(TransactionType.EVM).signAndSendTx(evmTransaction, walletAddress, null).then(function (id) {
1557
- setStepTransactionIds(actions, id, 'smart_contract_called', notifier);
1532
+ setStepTransactionIds(actions, id, notifier, 'check_tx_status');
1558
1533
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1559
1534
  next();
1560
1535
  onFinish();
@@ -1588,11 +1563,12 @@ function singTransaction(actions) {
1588
1563
  var _updateResult5 = updateSwapStatus({
1589
1564
  getStorage: getStorage,
1590
1565
  setStorage: setStorage,
1591
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1592
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1566
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1567
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1593
1568
  message: executeMessage,
1594
1569
  details: executeDetails,
1595
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1570
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1571
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1596
1572
  });
1597
1573
  var _notification2 = getSwapNotitfication('calling_smart_contract', _updateResult5);
1598
1574
  notifier(_notification2);
@@ -1627,7 +1603,7 @@ function singTransaction(actions) {
1627
1603
  walletSigners.getSigner(TransactionType.COSMOS).signAndSendTx(cosmosTransaction, walletAddress, null).then(
1628
1604
  // todo
1629
1605
  function (id) {
1630
- setStepTransactionIds(actions, id, 'smart_contract_called', notifier);
1606
+ setStepTransactionIds(actions, id, notifier, 'check_tx_status');
1631
1607
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1632
1608
  next();
1633
1609
  onFinish();
@@ -1657,11 +1633,12 @@ function singTransaction(actions) {
1657
1633
  var _updateResult7 = updateSwapStatus({
1658
1634
  getStorage: getStorage,
1659
1635
  setStorage: setStorage,
1660
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1661
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1636
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1637
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1662
1638
  message: executeMessage,
1663
1639
  details: executeDetails,
1664
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1640
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1641
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1665
1642
  });
1666
1643
  var _notification3 = getSwapNotitfication('calling_smart_contract', _updateResult7);
1667
1644
  notifier(_notification3);
@@ -1671,7 +1648,7 @@ function singTransaction(actions) {
1671
1648
  } else {
1672
1649
  var tx = solanaTransaction;
1673
1650
  walletSigners.getSigner(TransactionType.SOLANA).signAndSendTx(tx, walletAddress, null).then(function (txId) {
1674
- setStepTransactionIds(actions, txId, 'smart_contract_called', notifier);
1651
+ setStepTransactionIds(actions, txId, notifier, 'check_tx_status');
1675
1652
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1676
1653
  next();
1677
1654
  onFinish();
@@ -1701,11 +1678,12 @@ function singTransaction(actions) {
1701
1678
  var _updateResult8 = updateSwapStatus({
1702
1679
  getStorage: getStorage,
1703
1680
  setStorage: setStorage,
1704
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1705
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1681
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1682
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1706
1683
  message: executeMessage,
1707
1684
  details: executeDetails,
1708
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1685
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1686
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1709
1687
  });
1710
1688
  var _notification4 = getSwapNotitfication('calling_smart_contract', _updateResult8);
1711
1689
  notifier(_notification4);
@@ -1714,7 +1692,7 @@ function singTransaction(actions) {
1714
1692
  onFinish();
1715
1693
  } else {
1716
1694
  walletSigners.getSigner(TransactionType.TRON).signAndSendTx(tronTransaction, walletAddress, null).then(function (id) {
1717
- setStepTransactionIds(actions, id, 'smart_contract_called', notifier);
1695
+ setStepTransactionIds(actions, id, notifier, 'check_tx_status');
1718
1696
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1719
1697
  next();
1720
1698
  onFinish();
@@ -1748,11 +1726,12 @@ function singTransaction(actions) {
1748
1726
  var _updateResult9 = updateSwapStatus({
1749
1727
  getStorage: getStorage,
1750
1728
  setStorage: setStorage,
1751
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1752
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1729
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1730
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1753
1731
  message: executeMessage,
1754
1732
  details: executeDetails,
1755
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1733
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1734
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1756
1735
  });
1757
1736
  var _notification5 = getSwapNotitfication('calling_smart_contract', _updateResult9);
1758
1737
  notifier(_notification5);
@@ -1761,7 +1740,7 @@ function singTransaction(actions) {
1761
1740
  onFinish();
1762
1741
  } else {
1763
1742
  walletSigners.getSigner(TransactionType.STARKNET).signAndSendTx(starknetTransaction, walletAddress, null).then(function (id) {
1764
- setStepTransactionIds(actions, id, 'smart_contract_called', notifier);
1743
+ setStepTransactionIds(actions, id, notifier, 'check_tx_status');
1765
1744
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1766
1745
  next();
1767
1746
  onFinish();
@@ -1815,7 +1794,9 @@ function checkWaitingForConnectWalletChange(params) {
1815
1794
  var hasWaitingForConnect = Object.keys(q.list.state.tasks).some(function (taskId) {
1816
1795
  var _task$blockedFor;
1817
1796
  var task = q.list.state.tasks[taskId];
1818
- return task.status === Status.BLOCKED && [BlockReason.WAIT_FOR_CONNECT_WALLET].includes((_task$blockedFor = task.blockedFor) == null ? void 0 : _task$blockedFor.reason);
1797
+ return task.status === Status.BLOCKED &&
1798
+ // TODO double check later
1799
+ [BlockReason.WAIT_FOR_CONNECT_WALLET].includes((_task$blockedFor = task.blockedFor) == null ? void 0 : _task$blockedFor.reason);
1819
1800
  });
1820
1801
  if (currentStepRequiredWallet === wallet && hasWaitingForConnect && getCurrentBlockchainOfOrNull(swap, currentStep) != network) {
1821
1802
  var queueInstance = q.list;
@@ -1829,10 +1810,17 @@ function checkWaitingForConnectWalletChange(params) {
1829
1810
  },
1830
1811
  silent: true
1831
1812
  });
1832
- markRunningSwapAsSwitchingNetwork({
1813
+ var result = markRunningSwapAsSwitchingNetwork({
1833
1814
  getStorage: queueInstance.getStorage.bind(queueInstance),
1834
1815
  setStorage: queueInstance.setStorage.bind(queueInstance)
1835
1816
  });
1817
+ if (result) {
1818
+ params == null ? void 0 : params.notifier({
1819
+ eventType: 'waiting_for_network_change',
1820
+ swap: result.swap,
1821
+ step: result.step
1822
+ });
1823
+ }
1836
1824
  }
1837
1825
  }
1838
1826
  }
@@ -1863,6 +1851,49 @@ function checkWaitingForNetworkChange(manager) {
1863
1851
  }
1864
1852
  });
1865
1853
  }
1854
+ /**
1855
+ * Get list of all running swaps
1856
+ *
1857
+ * @param manager
1858
+ * @returns list of pending swaps
1859
+ */
1860
+ function getRunningSwaps(manager) {
1861
+ var queues = (manager == null ? void 0 : manager.getAll()) || new Map();
1862
+ var result = [];
1863
+ queues.forEach(function (q) {
1864
+ // retry only on affected queues
1865
+ var queueStorage = q.list.getStorage();
1866
+ var swap = queueStorage == null ? void 0 : queueStorage.swapDetails;
1867
+ if (!swap || swap.status !== 'running') return;
1868
+ result.push(swap);
1869
+ });
1870
+ return result;
1871
+ }
1872
+ /**
1873
+ *
1874
+ * Trying to reset notifications for pending swaps to correct message on page load.
1875
+ * We could remove this after supporting auto connect for wallets.
1876
+ *
1877
+ * @param swaps
1878
+ * @param notifier
1879
+ * @returns
1880
+ */
1881
+ function resetRunningSwapNotifsOnPageLoad(runningSwaps, notifier) {
1882
+ runningSwaps.forEach(function (swap) {
1883
+ var currentStep = getCurrentStep(swap);
1884
+ var eventType;
1885
+ if ((currentStep == null ? void 0 : currentStep.networkStatus) === PendingSwapNetworkStatus.WaitingForQueue) eventType = 'waiting_for_queue';else if ((swap == null ? void 0 : swap.status) === 'running') {
1886
+ eventType = 'waiting_for_connecting_wallet';
1887
+ }
1888
+ if (!!eventType && !!notifier) {
1889
+ notifier({
1890
+ eventType: eventType,
1891
+ swap: swap,
1892
+ step: currentStep
1893
+ });
1894
+ }
1895
+ });
1896
+ }
1866
1897
  /**
1867
1898
  *
1868
1899
  * Try to run blocked tasks by wallet and network name.
@@ -1874,7 +1905,7 @@ function checkWaitingForNetworkChange(manager) {
1874
1905
  * @param manager
1875
1906
  * @returns
1876
1907
  */
1877
- function retryOn(wallet_network, manager, options) {
1908
+ function retryOn(wallet_network, notifier, manager, options) {
1878
1909
  var _finalQueueToBeRun;
1879
1910
  if (options === void 0) {
1880
1911
  options = {
@@ -1898,7 +1929,7 @@ function retryOn(wallet_network, manager, options) {
1898
1929
  var currentStep = getCurrentStep(swap);
1899
1930
  if (currentStep) {
1900
1931
  var _queueStorage$swapDet2, _queueStorage$swapDet3;
1901
- if (currentStep.fromBlockchain == network && (queueStorage == null ? void 0 : (_queueStorage$swapDet2 = queueStorage.swapDetails.wallets[network]) == null ? void 0 : _queueStorage$swapDet2.walletType) === wallet) {
1932
+ if (getCurrentBlockchainOfOrNull(swap, currentStep) == network && (queueStorage == null ? void 0 : (_queueStorage$swapDet2 = queueStorage.swapDetails.wallets[network]) == null ? void 0 : _queueStorage$swapDet2.walletType) === wallet) {
1902
1933
  walletAndNetworkMatched.push(q.list);
1903
1934
  } else if ((queueStorage == null ? void 0 : (_queueStorage$swapDet3 = queueStorage.swapDetails.wallets[currentStep.fromBlockchain]) == null ? void 0 : _queueStorage$swapDet3.walletType) === wallet) {
1904
1935
  onlyWalletMatched.push(q.list);
@@ -1907,7 +1938,6 @@ function retryOn(wallet_network, manager, options) {
1907
1938
  }
1908
1939
  }
1909
1940
  });
1910
- // const isWaitingForConnectWallet = (status: Status) =>
1911
1941
  var finalQueueToBeRun = undefined;
1912
1942
  if (walletAndNetworkMatched.length > 0) {
1913
1943
  finalQueueToBeRun = walletAndNetworkMatched[0];
@@ -1916,7 +1946,8 @@ function retryOn(wallet_network, manager, options) {
1916
1946
  var currentQueue = walletAndNetworkMatched[i];
1917
1947
  markRunningSwapAsDependsOnOtherQueues({
1918
1948
  getStorage: currentQueue.getStorage.bind(currentQueue),
1919
- setStorage: currentQueue.setStorage.bind(currentQueue)
1949
+ setStorage: currentQueue.setStorage.bind(currentQueue),
1950
+ notifier: notifier
1920
1951
  });
1921
1952
  }
1922
1953
  }
@@ -1969,8 +2000,20 @@ function _throwOnOK() {
1969
2000
  }));
1970
2001
  return _throwOnOK.apply(this, arguments);
1971
2002
  }
2003
+ function cancelSwap(swap) {
2004
+ swap.actions.cancel();
2005
+ return updateSwapStatus({
2006
+ getStorage: swap.actions.getStorage,
2007
+ setStorage: swap.actions.setStorage,
2008
+ message: 'Swap canceled by user.',
2009
+ details: "Warning: If you've already signed and sent a transaction, it won't be affected, but next swap steps will not be executed.",
2010
+ nextStatus: 'failed',
2011
+ nextStepStatus: 'failed',
2012
+ errorCode: 'USER_CANCEL'
2013
+ });
2014
+ }
1972
2015
 
1973
- var INTERVAL_FOR_CHECK = 2000;
2016
+ var INTERVAL_FOR_CHECK = 3000;
1974
2017
  /**
1975
2018
  * Subscribe to status of swap transaction by checking from server periodically.
1976
2019
  * After getting the status, notify the user and schedule `SCHEDULE_NEXT_STEP`.
@@ -2028,6 +2071,7 @@ function _checkTransactionStatus() {
2028
2071
  if (!!newTransaction) {
2029
2072
  currentStep.status = 'created';
2030
2073
  currentStep.executedTransactionId = null;
2074
+ currentStep.executedTransactionTime = null;
2031
2075
  currentStep.transferTransaction = null;
2032
2076
  currentStep.cosmosTransaction = null;
2033
2077
  currentStep.evmTransaction = null;
@@ -2037,7 +2081,6 @@ function _checkTransactionStatus() {
2037
2081
  currentStep.starknetTransaction = null;
2038
2082
  currentStep.tronApprovalTransaction = null;
2039
2083
  currentStep.tronTransaction = null;
2040
- currentStep.fromBlockchain = newTransaction.blockChain;
2041
2084
  if (isEvmTransaction(newTransaction)) {
2042
2085
  if (newTransaction.isApprovalTx) currentStep.evmApprovalTransaction = newTransaction;else currentStep.evmTransaction = newTransaction;
2043
2086
  } else if (isCosmosTransaction(newTransaction)) {
@@ -2056,11 +2099,22 @@ function _checkTransactionStatus() {
2056
2099
  eventType: 'step_completed_with_output',
2057
2100
  swap: swap,
2058
2101
  step: currentStep
2059
- });
2102
+ });else if (prevOutputAmount === null && outputAmount === null) {
2103
+ // it is needed to set notification after reloading the page
2104
+ context.notifier({
2105
+ eventType: 'check_tx_status',
2106
+ swap: swap,
2107
+ step: currentStep
2108
+ });
2109
+ }
2060
2110
  if (currentStep.status === 'success') {
2061
2111
  nextStep = getNextStep(swap, currentStep);
2062
2112
  swap.extraMessageDetail = '';
2063
2113
  swap.extraMessage = !!nextStep ? "starting next step: " + nextStep.swapperId + ": " + nextStep.fromBlockchain + " -> " + nextStep.toBlockchain : '';
2114
+ } else if (currentStep.status === 'failed') {
2115
+ swap.extraMessage = 'Transaction failed in blockchain';
2116
+ swap.extraMessageSeverity = MessageSeverity.error;
2117
+ swap.extraMessageDetail = '';
2064
2118
  }
2065
2119
  // Sync data with storage
2066
2120
  setStorage(_extends({}, getStorage(), {
@@ -2100,30 +2154,61 @@ function checkApprovalStatus(_x2) {
2100
2154
  */
2101
2155
  function _checkApprovalStatus() {
2102
2156
  _checkApprovalStatus = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2) {
2103
- var getStorage, setStorage, next, schedule, retry, context, swap, currentStep, isApproved, response;
2157
+ var getStorage, setStorage, next, schedule, retry, failed, context, swap, currentStep, isApproved, response, updateResult;
2104
2158
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
2105
2159
  while (1) switch (_context2.prev = _context2.next) {
2106
2160
  case 0:
2107
- getStorage = _ref2.getStorage, setStorage = _ref2.setStorage, next = _ref2.next, schedule = _ref2.schedule, retry = _ref2.retry, context = _ref2.context;
2108
- swap = getStorage().swapDetails; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2161
+ getStorage = _ref2.getStorage, setStorage = _ref2.setStorage, next = _ref2.next, schedule = _ref2.schedule, retry = _ref2.retry, failed = _ref2.failed, context = _ref2.context;
2162
+ swap = getStorage().swapDetails; // double check it after fixing parallel
2163
+ // const onFinish = () => {
2164
+ // // TODO resetClaimedBy is undefined here
2165
+ // if (context.resetClaimedBy) {
2166
+ // context.resetClaimedBy();
2167
+ // }
2168
+ // };
2169
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2109
2170
  currentStep = getCurrentStep(swap);
2110
2171
  isApproved = false;
2111
2172
  _context2.prev = 4;
2112
2173
  _context2.next = 7;
2113
- return httpService.checkApproval(swap.requestId);
2174
+ return httpService.checkApproval(swap.requestId, currentStep.executedTransactionId || '');
2114
2175
  case 7:
2115
2176
  response = _context2.sent;
2116
2177
  isApproved = response.isApproved;
2178
+ if (!isApproved && response.txStatus === 'failed') {
2179
+ // approve transaction failed on
2180
+ // we should fail the whole swap
2181
+ updateResult = updateSwapStatus({
2182
+ getStorage: getStorage,
2183
+ setStorage: setStorage,
2184
+ nextStatus: 'failed',
2185
+ nextStepStatus: 'failed',
2186
+ errorCode: 'SEND_TX_FAILED',
2187
+ message: 'Approve transaction failed',
2188
+ details: 'Smart contract approval failed in blockchain.'
2189
+ });
2190
+ context.notifier(_extends({
2191
+ eventType: 'smart_contract_call_failed'
2192
+ }, updateResult));
2193
+ failed();
2194
+ // onFinish();
2195
+ } else if (!isApproved) {
2196
+ // it is needed to set notification after reloading the page
2197
+ context.notifier({
2198
+ eventType: 'check_approve_tx_status',
2199
+ swap: swap,
2200
+ step: currentStep
2201
+ });
2202
+ }
2117
2203
  _context2.next = 15;
2118
2204
  break;
2119
- case 11:
2120
- _context2.prev = 11;
2205
+ case 12:
2206
+ _context2.prev = 12;
2121
2207
  _context2.t0 = _context2["catch"](4);
2122
- console.error('Failed to check getApprovedAmount', _context2.t0);
2123
2208
  isApproved = false;
2124
2209
  case 15:
2125
2210
  if (!isApproved) {
2126
- _context2.next = 30;
2211
+ _context2.next = 31;
2127
2212
  break;
2128
2213
  }
2129
2214
  currentStep.status = 'approved';
@@ -2132,6 +2217,7 @@ function _checkApprovalStatus() {
2132
2217
  swap.extraMessageSeverity = MessageSeverity.success;
2133
2218
  currentStep.evmApprovalTransaction = null;
2134
2219
  currentStep.executedTransactionId = null;
2220
+ currentStep.executedTransactionTime = null;
2135
2221
  currentStep.starknetApprovalTransaction = null;
2136
2222
  currentStep.tronApprovalTransaction = null;
2137
2223
  setStorage(_extends({}, getStorage(), {
@@ -2144,18 +2230,18 @@ function _checkApprovalStatus() {
2144
2230
  });
2145
2231
  schedule(SwapActionTypes.SCHEDULE_NEXT_STEP);
2146
2232
  next();
2147
- _context2.next = 33;
2233
+ _context2.next = 34;
2148
2234
  break;
2149
- case 30:
2150
- _context2.next = 32;
2235
+ case 31:
2236
+ _context2.next = 33;
2151
2237
  return delay(2000);
2152
- case 32:
2153
- retry();
2154
2238
  case 33:
2239
+ retry();
2240
+ case 34:
2155
2241
  case "end":
2156
2242
  return _context2.stop();
2157
2243
  }
2158
- }, _callee2, null, [[4, 11]]);
2244
+ }, _callee2, null, [[4, 12]]);
2159
2245
  }));
2160
2246
  return _checkApprovalStatus.apply(this, arguments);
2161
2247
  }
@@ -2274,7 +2360,7 @@ function _createTransaction() {
2274
2360
  nextStepStatus: 'failed',
2275
2361
  message: extraMessage,
2276
2362
  details: extraMessageDetail,
2277
- errorCode: APIErrorCode.FETCH_TX_FAILED
2363
+ errorCode: 'FETCH_TX_FAILED'
2278
2364
  });
2279
2365
  context.notifier(_extends({
2280
2366
  eventType: 'task_failed'
@@ -2321,7 +2407,7 @@ function _executeTransaction() {
2321
2407
  currentStep = getCurrentStep(swap); // Resetting network status, so we will set it again during the running of this task.
2322
2408
  resetNetworkStatus(actions);
2323
2409
  /* Make sure wallet is connected and also the connected wallet is matched with tx by checking address. */
2324
- isWrongAddress = !isRequiredWalletConnected(swap, context.state);
2410
+ isWrongAddress = !isRequiredWalletConnected(swap, context.state).ok;
2325
2411
  if (!isWrongAddress) {
2326
2412
  _context.next = 15;
2327
2413
  break;
@@ -2346,13 +2432,13 @@ function _executeTransaction() {
2346
2432
  We only run one request at a time (In parallel mode).
2347
2433
  */
2348
2434
  needsToBlockQueue = isNeedBlockQueueForParallel(currentStep);
2349
- if (!(needsToBlockQueue && !isClaimed && context.claimedBy)) {
2435
+ if (!(needsToBlockQueue && !isClaimed)) {
2350
2436
  _context.next = 20;
2351
2437
  break;
2352
2438
  }
2353
2439
  _blockedFor = {
2354
2440
  reason: BlockReason.DEPENDS_ON_OTHER_QUEUES,
2355
- description: 'Waiting for other running tasks to be finished',
2441
+ description: 'Waiting for other swaps to complete',
2356
2442
  details: {}
2357
2443
  };
2358
2444
  requestBlock(_blockedFor);
@@ -2416,6 +2502,7 @@ function scheduleNextStep(_ref) {
2416
2502
  schedule(SwapActionTypes.EXECUTE_TRANSACTION);
2417
2503
  return next();
2418
2504
  }
2505
+ // TODO double check it after approval changes
2419
2506
  if (currentStep != null && currentStep.executedTransactionId) {
2420
2507
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
2421
2508
  return next();
@@ -2451,6 +2538,29 @@ function start(_ref) {
2451
2538
  next();
2452
2539
  }
2453
2540
 
2541
+ var _actions;
2542
+ /**
2543
+ *
2544
+ * The idea behind this queue is to be able dynamically add some steps.
2545
+ * After running a swap, it can be blocked (like on waiting for switch netwrok)
2546
+ * or waits for something happend (like checking status of a transaction from server)
2547
+ *
2548
+ */
2549
+ var swapQueueDef = {
2550
+ name: 'swap',
2551
+ actions: (_actions = {}, _actions[SwapActionTypes.START] = start, _actions[SwapActionTypes.SCHEDULE_NEXT_STEP] = scheduleNextStep, _actions[SwapActionTypes.CREATE_TRANSACTION] = createTransaction, _actions[SwapActionTypes.EXECUTE_TRANSACTION] = executeTransaction, _actions[SwapActionTypes.CHECK_TRANSACTION_STATUS] = checkStatus, _actions),
2552
+ run: [SwapActionTypes.START],
2553
+ whenTaskBlocked: function whenTaskBlocked(event, meta) {
2554
+ if (event.reason.reason === BlockReason.WAIT_FOR_CONNECT_WALLET) {
2555
+ onBlockForConnectWallet(event, meta);
2556
+ } else if (event.reason.reason === BlockReason.WAIT_FOR_NETWORK_CHANGE) {
2557
+ onBlockForChangeNetwork(event, meta);
2558
+ } else if (event.reason.reason === BlockReason.DEPENDS_ON_OTHER_QUEUES) {
2559
+ onDependsOnOtherQueues(event, meta);
2560
+ }
2561
+ }
2562
+ };
2563
+
2454
2564
  var MIGRATED_KEY = 'migratedToQueueManager';
2455
2565
  /**
2456
2566
  *
@@ -2642,9 +2752,10 @@ function useQueueManager(params) {
2642
2752
  checkWaitingForConnectWalletChange({
2643
2753
  evmChains: params.evmChains,
2644
2754
  wallet_network: params.lastConnectedWallet,
2645
- manager: manager
2755
+ manager: manager,
2756
+ notifier: params.notifier
2646
2757
  });
2647
- retryOn(params.lastConnectedWallet, manager);
2758
+ retryOn(params.lastConnectedWallet, params.notifier, manager);
2648
2759
  }
2649
2760
  }, [params.lastConnectedWallet]);
2650
2761
  useEffect(function () {
@@ -2659,28 +2770,5 @@ function useQueueManager(params) {
2659
2770
  }, [params.disconnectedWallet]);
2660
2771
  }
2661
2772
 
2662
- var _actions;
2663
- /**
2664
- *
2665
- * The idea behind this queue is to be able dynamically add some steps.
2666
- * After running a swap, it can be blocked (like on waiting for switch netwrok)
2667
- * or waits for something happend (like checking status of a transaction from server)
2668
- *
2669
- */
2670
- var swapQueueDef = {
2671
- name: 'swap',
2672
- actions: (_actions = {}, _actions[SwapActionTypes.START] = start, _actions[SwapActionTypes.SCHEDULE_NEXT_STEP] = scheduleNextStep, _actions[SwapActionTypes.CREATE_TRANSACTION] = createTransaction, _actions[SwapActionTypes.EXECUTE_TRANSACTION] = executeTransaction, _actions[SwapActionTypes.CHECK_TRANSACTION_STATUS] = checkStatus, _actions),
2673
- run: [SwapActionTypes.START],
2674
- whenTaskBlocked: function whenTaskBlocked(event, meta) {
2675
- if (event.reason.reason === BlockReason.WAIT_FOR_CONNECT_WALLET) {
2676
- onBlockForConnectWallet(event, meta);
2677
- } else if (event.reason.reason === BlockReason.WAIT_FOR_NETWORK_CHANGE) {
2678
- onBlockForChangeNetwork(event, meta);
2679
- } else if (event.reason.reason === BlockReason.DEPENDS_ON_OTHER_QUEUES) {
2680
- onDependsOnOtherQueues(event, meta);
2681
- }
2682
- }
2683
- };
2684
-
2685
- export { checkWaitingForNetworkChange, getCurrentStep, getEvmProvider, getRelatedWallet$1 as getRelatedWallet, swapQueueDef, updateSwapStatus, useMigration, useQueueManager };
2773
+ export { MessageSeverity, PendingSwapNetworkStatus, PrettyError, cancelSwap, checkWaitingForNetworkChange, getCurrentBlockchainOfOrNull, getCurrentStep, getEvmProvider, getRelatedWallet, getRelatedWalletOrNull, getRequiredWallet, getRunningSwaps, prettifyErrorMessage, resetRunningSwapNotifsOnPageLoad, splitWalletNetwork, swapQueueDef, updateSwapStatus, useMigration, useQueueManager };
2686
2774
  //# sourceMappingURL=queue-manager-rango-preset.esm.js.map