@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.
@@ -2,31 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var rangoTypes = require('rango-types');
5
6
  var walletsShared = require('@rango-dev/wallets-shared');
6
7
  var walletsCore = require('@rango-dev/wallets-core');
7
8
  var rangoSdk = require('rango-sdk');
8
9
  var queueManagerCore = require('@rango-dev/queue-manager-core');
9
- var rangoTypes = require('rango-types');
10
10
  var Sentry = require('@sentry/browser');
11
11
  var queueManagerReact = require('@rango-dev/queue-manager-react');
12
12
  var react = require('react');
13
13
  var uuid = require('uuid');
14
14
 
15
- var SwapActionTypes;
16
- (function (SwapActionTypes) {
17
- SwapActionTypes["START"] = "START";
18
- SwapActionTypes["SCHEDULE_NEXT_STEP"] = "SCHEDULE_NEXT_STEP";
19
- SwapActionTypes["CREATE_TRANSACTION"] = "CREATE_TRANSACTION";
20
- SwapActionTypes["EXECUTE_TRANSACTION"] = "EXECUTE_TRANSACTION";
21
- SwapActionTypes["CHECK_TRANSACTION_STATUS"] = "CHECK_TRANSACTION_STATUS";
22
- })(SwapActionTypes || (SwapActionTypes = {}));
23
- var BlockReason;
24
- (function (BlockReason) {
25
- BlockReason["WAIT_FOR_CONNECT_WALLET"] = "waiting_for_connecting_wallet";
26
- BlockReason["WAIT_FOR_NETWORK_CHANGE"] = "waiting_for_network_change";
27
- BlockReason["DEPENDS_ON_OTHER_QUEUES"] = "depends_on_other_queues";
28
- })(BlockReason || (BlockReason = {}));
29
-
30
15
  function _regeneratorRuntime() {
31
16
  _regeneratorRuntime = function () {
32
17
  return exports;
@@ -452,46 +437,6 @@ function _assertThisInitialized(self) {
452
437
  return self;
453
438
  }
454
439
 
455
- var RANGO_DAPP_API_KEY = process.env.REACT_APP_API_KEY;
456
- var RANGO_DAPP_API_BASE_URL = process.env.REACT_APP_API_BASE_URL;
457
- var ERROR_MESSAGE_WAIT_FOR_WALLET = 'Waiting for connecting wallet';
458
- var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET(type, address) {
459
- return "Please change your " + (type || 'wallet') + " account to " + (address || 'proper address');
460
- };
461
- var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION(type) {
462
- return "Please connect to " + (type || 'your wallet') + " by using bellow button or top right button on page.";
463
- };
464
- var ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK = function ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK(network) {
465
- return "Please change your network to " + network + ".";
466
- };
467
-
468
- var APIErrorCode;
469
- (function (APIErrorCode) {
470
- APIErrorCode["TX_FAIL"] = "TX_FAIL";
471
- APIErrorCode["FETCH_TX_FAILED"] = "FETCH_TX_FAILED";
472
- APIErrorCode["USER_REJECT"] = "USER_REJECT";
473
- APIErrorCode["CALL_WALLET_FAILED"] = "CALL_WALLET_FAILED";
474
- APIErrorCode["SEND_TX_FAILED"] = "SEND_TX_FAILED";
475
- APIErrorCode["CALL_OR_SEND_FAILED"] = "CALL_OR_SEND_FAILED";
476
- APIErrorCode["USER_CANCEL"] = "USER_CANCEL";
477
- APIErrorCode["CLIENT_UNEXPECTED_BEHAVIOUR"] = "CLIENT_UNEXPECTED_BEHAVIOUR";
478
- })(APIErrorCode || (APIErrorCode = {}));
479
- var ApiMethodName;
480
- (function (ApiMethodName) {
481
- ApiMethodName["RequestingSwapTransaction"] = "Requesting Swap Transaction";
482
- ApiMethodName["CreatingSwap"] = "Creating Swap";
483
- ApiMethodName["CheckingTransactionStatus"] = "Checking transaction status";
484
- ApiMethodName["CreateTransaction"] = "Create Transaction";
485
- ApiMethodName["CheckApproval"] = "Check TX Approval";
486
- ApiMethodName["GettingSwapDetail"] = "Getting Swap Detail";
487
- ApiMethodName["GettingUserLimits"] = "Getting user limits";
488
- })(ApiMethodName || (ApiMethodName = {}));
489
- var TransactionName;
490
- (function (TransactionName) {
491
- TransactionName["GenericTransaction"] = "transaction";
492
- TransactionName["SendingOneInchTransaction"] = "1inch transaction";
493
- TransactionName["Approval"] = "approve transaction";
494
- })(TransactionName || (TransactionName = {}));
495
440
  var ERROR_ASSERTION_FAILED = 'Assertion failed (Unexpected behaviour)';
496
441
  var ERROR_CREATE_TRANSACTION = 'Create transaction failed in Rango Server';
497
442
  var ERROR_INPUT_WALLET_NOT_FOUND = 'Input wallet not found';
@@ -500,12 +445,17 @@ var PrettyError = /*#__PURE__*/function (_Error) {
500
445
  function PrettyError(code, m, root, detail) {
501
446
  var _this;
502
447
  _this = _Error.call(this, m) || this;
448
+ _this._isPrettyError = true;
503
449
  Object.setPrototypeOf(_assertThisInitialized(_this), PrettyError.prototype);
450
+ PrettyError.prototype._isPrettyError = true;
504
451
  _this.code = code;
505
452
  _this.detail = detail;
506
453
  _this.root = root;
507
454
  return _this;
508
455
  }
456
+ PrettyError.isPrettyError = function isPrettyError(obj) {
457
+ return obj instanceof PrettyError || Object.prototype.hasOwnProperty('_isPrettyError');
458
+ };
509
459
  var _proto = PrettyError.prototype;
510
460
  _proto.getErrorDetail = function getErrorDetail() {
511
461
  var rawMessage = typeof this.root === 'object' && this.root && this.root.error ? this.root.error : JSON.stringify(this.root);
@@ -517,33 +467,30 @@ var PrettyError = /*#__PURE__*/function (_Error) {
517
467
  };
518
468
  };
519
469
  PrettyError.AssertionFailed = function AssertionFailed(m) {
520
- return new PrettyError(APIErrorCode.CLIENT_UNEXPECTED_BEHAVIOUR, ERROR_ASSERTION_FAILED, m);
470
+ return new PrettyError('CLIENT_UNEXPECTED_BEHAVIOUR', ERROR_ASSERTION_FAILED, m);
521
471
  };
522
472
  PrettyError.BadStatusCode = function BadStatusCode(message, statusCode) {
523
- return new PrettyError(APIErrorCode.TX_FAIL, message, null, "status code = " + statusCode);
473
+ return new PrettyError('TX_FAIL', message, null, "status code = " + statusCode);
524
474
  };
525
475
  PrettyError.CreateTransaction = function CreateTransaction(detail) {
526
- return new PrettyError(APIErrorCode.FETCH_TX_FAILED, ERROR_CREATE_TRANSACTION, null, detail);
476
+ return new PrettyError('FETCH_TX_FAILED', ERROR_CREATE_TRANSACTION, null, detail);
527
477
  };
528
478
  PrettyError.WalletMissing = function WalletMissing() {
529
- return new PrettyError(APIErrorCode.CLIENT_UNEXPECTED_BEHAVIOUR, ERROR_INPUT_WALLET_NOT_FOUND, null, 'Server requested for a blockchain or address not selected by user');
479
+ return new PrettyError('CLIENT_UNEXPECTED_BEHAVIOUR', ERROR_INPUT_WALLET_NOT_FOUND, null, 'Server requested for a blockchain or address not selected by user');
530
480
  };
531
481
  PrettyError.BlockchainMissing = function BlockchainMissing() {
532
- return new PrettyError(APIErrorCode.CLIENT_UNEXPECTED_BEHAVIOUR, ERROR_INPUT_WALLET_NOT_FOUND, null, 'Server requested for a blockchain or address not selected by user');
482
+ return new PrettyError('CLIENT_UNEXPECTED_BEHAVIOUR', ERROR_INPUT_WALLET_NOT_FOUND, null, 'Server requested for a blockchain or address not selected by user');
533
483
  };
534
484
  return PrettyError;
535
485
  }( /*#__PURE__*/_wrapNativeSuper(Error));
536
- function isAPIErrorCode(value) {
537
- return Object.values(APIErrorCode).includes(value);
538
- }
539
486
  function mapAppErrorCodesToAPIErrorCode(errorCode) {
540
- var defaultErrorCode = APIErrorCode.CLIENT_UNEXPECTED_BEHAVIOUR;
487
+ var defaultErrorCode = 'CLIENT_UNEXPECTED_BEHAVIOUR';
541
488
  try {
542
489
  if (!errorCode) return defaultErrorCode;
543
- if (isAPIErrorCode(errorCode)) return errorCode;
490
+ if (rangoTypes.isAPIErrorCode(errorCode)) return errorCode;
544
491
  if (rangoTypes.isSignerErrorCode(errorCode)) {
545
492
  var _t;
546
- var t = (_t = {}, _t[rangoTypes.SignerErrorCode.REJECTED_BY_USER] = APIErrorCode.USER_REJECT, _t[rangoTypes.SignerErrorCode.SIGN_TX_ERROR] = APIErrorCode.CALL_WALLET_FAILED, _t[rangoTypes.SignerErrorCode.SEND_TX_ERROR] = APIErrorCode.SEND_TX_FAILED, _t[rangoTypes.SignerErrorCode.NOT_IMPLEMENTED] = defaultErrorCode, _t[rangoTypes.SignerErrorCode.OPERATION_UNSUPPORTED] = defaultErrorCode, _t[rangoTypes.SignerErrorCode.UNEXPECTED_BEHAVIOUR] = defaultErrorCode, _t);
493
+ var t = (_t = {}, _t[rangoTypes.SignerErrorCode.REJECTED_BY_USER] = 'USER_REJECT', _t[rangoTypes.SignerErrorCode.SIGN_TX_ERROR] = 'CALL_WALLET_FAILED', _t[rangoTypes.SignerErrorCode.SEND_TX_ERROR] = 'SEND_TX_FAILED', _t[rangoTypes.SignerErrorCode.NOT_IMPLEMENTED] = defaultErrorCode, _t[rangoTypes.SignerErrorCode.OPERATION_UNSUPPORTED] = defaultErrorCode, _t[rangoTypes.SignerErrorCode.UNEXPECTED_BEHAVIOUR] = defaultErrorCode, _t);
547
494
  return t[errorCode];
548
495
  }
549
496
  return defaultErrorCode;
@@ -551,21 +498,46 @@ function mapAppErrorCodesToAPIErrorCode(errorCode) {
551
498
  return defaultErrorCode;
552
499
  }
553
500
  }
501
+ var prettifyErrorMessage = function prettifyErrorMessage(obj) {
502
+ if (!obj) return {
503
+ extraMessage: '',
504
+ extraMessageErrorCode: null
505
+ };
506
+ if (PrettyError.isPrettyError(obj)) return obj.getErrorDetail();
507
+ if (rangoTypes.SignerError.isSignerError(obj)) {
508
+ var t = obj.getErrorDetail();
509
+ return {
510
+ extraMessage: t.message,
511
+ extraMessageDetail: t.detail,
512
+ extraMessageErrorCode: t.code
513
+ };
514
+ }
515
+ if (obj instanceof Error) return {
516
+ extraMessage: obj.toString(),
517
+ extraMessageErrorCode: null
518
+ };
519
+ if (typeof obj !== 'string') return {
520
+ extraMessage: JSON.stringify(obj),
521
+ extraMessageErrorCode: null
522
+ };
523
+ return {
524
+ extraMessage: obj,
525
+ extraMessageErrorCode: null
526
+ };
527
+ };
554
528
 
555
- var PendingSwapNetworkStatus;
556
529
  (function (PendingSwapNetworkStatus) {
557
530
  PendingSwapNetworkStatus["WaitingForConnectingWallet"] = "waitingForConnectingWallet";
558
531
  PendingSwapNetworkStatus["WaitingForQueue"] = "waitingForQueue";
559
532
  PendingSwapNetworkStatus["WaitingForNetworkChange"] = "waitingForNetworkChange";
560
533
  PendingSwapNetworkStatus["NetworkChanged"] = "networkChanged";
561
- })(PendingSwapNetworkStatus || (PendingSwapNetworkStatus = {}));
562
- var MessageSeverity;
534
+ })(exports.PendingSwapNetworkStatus || (exports.PendingSwapNetworkStatus = {}));
563
535
  (function (MessageSeverity) {
564
536
  MessageSeverity["error"] = "error";
565
537
  MessageSeverity["warning"] = "warning";
566
538
  MessageSeverity["info"] = "info";
567
539
  MessageSeverity["success"] = "success";
568
- })(MessageSeverity || (MessageSeverity = {}));
540
+ })(exports.MessageSeverity || (exports.MessageSeverity = {}));
569
541
  var getCurrentBlockchainOfOrNull = function getCurrentBlockchainOfOrNull(swap, step) {
570
542
  try {
571
543
  return getCurrentBlockchainOf(swap, step);
@@ -603,48 +575,22 @@ var getStarknetApproveUrl = function getStarknetApproveUrl(tx) {
603
575
  var getTronApproveUrl = function getTronApproveUrl(tx) {
604
576
  return 'https://tronscan.org/#/transaction/{txHash}'.replace('{txHash}', tx.toLowerCase());
605
577
  };
606
- var prettifyErrorMessage = function prettifyErrorMessage(obj) {
607
- if (!obj) return {
608
- extraMessage: '',
609
- extraMessageErrorCode: null
610
- };
611
- if (obj instanceof PrettyError) return obj.getErrorDetail();
612
- if (obj instanceof rangoTypes.SignerError) {
613
- var t = obj.getErrorDetail();
614
- return {
615
- extraMessage: t.message,
616
- extraMessageDetail: t.detail,
617
- extraMessageErrorCode: t.code
618
- };
619
- }
620
- if (obj instanceof Error) return {
621
- extraMessage: obj.toString(),
622
- extraMessageErrorCode: null
623
- };
624
- if (typeof obj !== 'string') return {
625
- extraMessage: JSON.stringify(obj),
626
- extraMessageErrorCode: null
627
- };
628
- return {
629
- extraMessage: obj,
630
- extraMessageErrorCode: null
631
- };
632
- };
633
578
  function getNextStep(swap, currentStep) {
634
579
  return swap.steps.find(function (step) {
635
580
  return step.status !== 'failed' && step.status !== 'success' && step.id !== currentStep.id;
636
581
  }) || null;
637
582
  }
638
- // TODO: we have samething in `helpers`, for fixing circular dependency, we copied and should be removed eventually.
583
+ /**
584
+ * Returns the wallet address, based on the current step of `PendingSwap`.
585
+ */
639
586
  var getCurrentAddressOf = function getCurrentAddressOf(swap, step) {
640
- var _step$evmTransaction2, _step$evmApprovalTran2, _step$cosmosTransacti2, _step$solanaTransacti2, _step$transferTransac2, _step$transferTransac3;
641
- 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 ? {
587
+ var _step$evmTransaction2, _step$evmApprovalTran2, _step$tronTransaction2, _step$tronApprovalTra2, _step$starknetTransac2, _step$starknetApprova2, _step$cosmosTransacti2, _step$solanaTransacti2, _step$transferTransac2, _step$transferTransac3;
588
+ 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 ? {
642
589
  address: (_step$transferTransac3 = step.transferTransaction) == null ? void 0 : _step$transferTransac3.fromWalletAddress
643
590
  } : null) || null;
644
591
  if (result == null) throw PrettyError.WalletMissing();
645
592
  return result.address;
646
593
  };
647
- // TODO: we have samething in `helpers`, for fixing circular dependency, we copied and should be removed eventually.
648
594
  function getRelatedWallet(swap, currentStep) {
649
595
  var walletAddress = getCurrentAddressOf(swap, currentStep);
650
596
  var walletKV = Object.keys(swap.wallets).map(function (k) {
@@ -670,6 +616,34 @@ function getRelatedWalletOrNull(swap, currentStep) {
670
616
  }
671
617
  }
672
618
 
619
+ var SwapActionTypes;
620
+ (function (SwapActionTypes) {
621
+ SwapActionTypes["START"] = "START";
622
+ SwapActionTypes["SCHEDULE_NEXT_STEP"] = "SCHEDULE_NEXT_STEP";
623
+ SwapActionTypes["CREATE_TRANSACTION"] = "CREATE_TRANSACTION";
624
+ SwapActionTypes["EXECUTE_TRANSACTION"] = "EXECUTE_TRANSACTION";
625
+ SwapActionTypes["CHECK_TRANSACTION_STATUS"] = "CHECK_TRANSACTION_STATUS";
626
+ })(SwapActionTypes || (SwapActionTypes = {}));
627
+ var BlockReason;
628
+ (function (BlockReason) {
629
+ BlockReason["WAIT_FOR_CONNECT_WALLET"] = "waiting_for_connecting_wallet";
630
+ BlockReason["WAIT_FOR_NETWORK_CHANGE"] = "waiting_for_network_change";
631
+ BlockReason["DEPENDS_ON_OTHER_QUEUES"] = "depends_on_other_queues";
632
+ })(BlockReason || (BlockReason = {}));
633
+
634
+ var RANGO_DAPP_API_KEY = process.env.REACT_APP_API_KEY;
635
+ var RANGO_DAPP_API_BASE_URL = process.env.REACT_APP_API_BASE_URL;
636
+ var ERROR_MESSAGE_WAIT_FOR_WALLET = 'Waiting for connecting wallet';
637
+ var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION_WRONG_WALLET(type, address) {
638
+ return "Please change your " + (type || 'wallet') + " account to " + (address || 'proper address');
639
+ };
640
+ var ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION = function ERROR_MESSAGE_WAIT_FOR_WALLET_DESCRIPTION(type) {
641
+ return "Please connect to " + (type || 'your wallet') + " by using bellow button or top right button on page.";
642
+ };
643
+ var ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK = function ERROR_MESSAGE_WAIT_FOR_CHANGE_NETWORK(network) {
644
+ return "Please change your network to " + network + ".";
645
+ };
646
+
673
647
  function logRPCError(error, swap, currentStep, walletType) {
674
648
  try {
675
649
  Sentry.captureException(error, {
@@ -713,12 +687,23 @@ function claimQueue() {
713
687
  };
714
688
  }
715
689
  /**
716
- *
690
+ * Sample inputs are:
691
+ * - "metamask-ETH"
692
+ * - "metamask-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
693
+ * - "token-pocket-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
717
694
  * Returns "wallet and network" separately, even if the wallet is dashed inside.
718
695
  *
719
696
  */
720
697
  function splitWalletNetwork(input) {
721
- return input == null ? void 0 : input.split(/-(?=[^-]*$)/);
698
+ var removedAddressInput = (input == null ? void 0 : input.split(':')[0]) || '';
699
+ var splittedInput = removedAddressInput.split('-');
700
+ var network = splittedInput[splittedInput.length - 1];
701
+ var walletNetwork = splittedInput.slice(0, -1);
702
+ if (walletNetwork[walletNetwork.length - 1] === network) {
703
+ walletNetwork.pop();
704
+ }
705
+ var wallet = walletNetwork.join('-');
706
+ return [wallet, network];
722
707
  }
723
708
  /**
724
709
  *
@@ -751,24 +736,26 @@ function updateSwapStatus(_ref) {
751
736
  if (!!nextStatus) swap.status = nextStatus;
752
737
  swap.hasAlreadyProceededToSign = hasAlreadyProceededToSign;
753
738
  if (!!nextStatus && ['failed', 'success'].includes(nextStatus)) swap.finishTime = new Date().getTime().toString();
754
- if (!!message) swap.extraMessage = message;
755
- if (!!details) swap.extraMessageDetail = details;
739
+ if (!!message || !!details) {
740
+ swap.extraMessage = message || '';
741
+ swap.extraMessageDetail = details || '';
742
+ }
756
743
  if (!!nextStepStatus && ['failed'].includes(nextStepStatus)) {
757
744
  var _getRelatedWalletOrNu;
758
745
  //if user cancel the swap, we should pass relevant reason to the server.
759
746
  var errorReason = details && details.includes('Warning') ? 'Swap canceled by user.' : details;
760
747
  var walletType = (_getRelatedWalletOrNu = getRelatedWalletOrNull(swap, currentStep)) == null ? void 0 : _getRelatedWalletOrNu.walletType;
761
- swap.extraMessageSeverity = MessageSeverity.error;
748
+ swap.extraMessageSeverity = exports.MessageSeverity.error;
762
749
  httpService.reportFailure({
763
750
  requestId: swap.requestId,
764
751
  step: (currentStep == null ? void 0 : currentStep.id) || 1,
765
- eventType: mapAppErrorCodesToAPIErrorCode(hasAlreadyProceededToSign ? APIErrorCode.TX_FAIL : errorCode),
752
+ eventType: mapAppErrorCodesToAPIErrorCode(errorCode),
766
753
  reason: errorReason || '',
767
754
  data: walletType ? {
768
755
  wallet: walletType
769
756
  } : undefined
770
757
  }).then()["catch"]();
771
- } else if (!!nextStepStatus && ['running'].includes(nextStepStatus)) swap.extraMessageSeverity = MessageSeverity.info;else if (!!nextStepStatus && ['success', 'approved'].includes(nextStepStatus)) swap.extraMessageSeverity = MessageSeverity.success;else if (nextStepStatus && ['waitingForApproval'].includes(nextStepStatus)) swap.extraMessageSeverity = MessageSeverity.warning;
758
+ } else if (!!nextStepStatus && ['running'].includes(nextStepStatus)) swap.extraMessageSeverity = exports.MessageSeverity.info;else if (!!nextStepStatus && ['success', 'approved'].includes(nextStepStatus)) swap.extraMessageSeverity = exports.MessageSeverity.success;else if (nextStepStatus && ['waitingForApproval'].includes(nextStepStatus)) swap.extraMessageSeverity = exports.MessageSeverity.warning;
772
759
  if (nextStepStatus === 'running' && currentStep) currentStep.startTransactionTime = new Date().getTime();
773
760
  setStorage(_extends({}, getStorage(), {
774
761
  swapDetails: swap
@@ -778,18 +765,32 @@ function updateSwapStatus(_ref) {
778
765
  step: currentStep
779
766
  };
780
767
  }
781
- function setStepTransactionIds(_ref2, txId, eventType, notifier) {
768
+ function setStepTransactionIds(_ref2, txId, notifier, eventType, approveUrl) {
782
769
  var getStorage = _ref2.getStorage,
783
770
  setStorage = _ref2.setStorage;
784
771
  var swap = getStorage().swapDetails;
785
772
  swap.hasAlreadyProceededToSign = null;
786
773
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
787
774
  var currentStep = getCurrentStep(swap);
788
- currentStep.executedTransactionId = txId || currentStep.executedTransactionId;
775
+ currentStep.executedTransactionId = txId;
776
+ currentStep.executedTransactionTime = new Date().getTime().toString();
777
+ if (!!approveUrl) currentStep.explorerUrl = [].concat(currentStep.explorerUrl || [], [{
778
+ url: approveUrl,
779
+ description: "approve"
780
+ }]);
781
+ if (eventType === 'check_tx_status') {
782
+ swap.extraMessage = 'Checking transaction status ...';
783
+ swap.extraMessageDetail = '';
784
+ swap.extraMessageSeverity = exports.MessageSeverity.info;
785
+ } else if (eventType === 'check_approve_tx_status') {
786
+ swap.extraMessage = 'Checking approve transaction status ...';
787
+ swap.extraMessageDetail = '';
788
+ swap.extraMessageSeverity = exports.MessageSeverity.info;
789
+ }
789
790
  setStorage(_extends({}, getStorage(), {
790
791
  swapDetails: swap
791
792
  }));
792
- notifier({
793
+ if (!!eventType) notifier({
793
794
  eventType: eventType,
794
795
  swap: swap,
795
796
  step: currentStep
@@ -816,11 +817,11 @@ function markRunningSwapAsWaitingForConnectingWallet(_ref3, reason, reasonDetail
816
817
  if (!currentStep) return;
817
818
  var currentTime = new Date();
818
819
  swap.lastNotificationTime = currentTime.getTime().toString();
819
- var isAlreadyMarked = currentStep.networkStatus === PendingSwapNetworkStatus.WaitingForConnectingWallet && swap.networkStatusExtraMessage === reason && swap.networkStatusExtraMessageDetail === reasonDetail;
820
+ var isAlreadyMarked = currentStep.networkStatus === exports.PendingSwapNetworkStatus.WaitingForConnectingWallet && swap.networkStatusExtraMessage === reason && swap.networkStatusExtraMessageDetail === reasonDetail;
820
821
  if (isAlreadyMarked) {
821
822
  return;
822
823
  }
823
- currentStep.networkStatus = PendingSwapNetworkStatus.WaitingForConnectingWallet;
824
+ currentStep.networkStatus = exports.PendingSwapNetworkStatus.WaitingForConnectingWallet;
824
825
  swap.networkStatusExtraMessage = reason;
825
826
  swap.networkStatusExtraMessageDetail = reasonDetail;
826
827
  setStorage(_extends({}, getStorage(), {
@@ -847,7 +848,7 @@ function markRunningSwapAsSwitchingNetwork(_ref4) {
847
848
  var reasonDetail = "Please change your " + type + " wallet network to " + fromBlockchain + ". " + metamaskMessage;
848
849
  var currentTime = new Date();
849
850
  swap.lastNotificationTime = currentTime.getTime().toString();
850
- currentStep.networkStatus = PendingSwapNetworkStatus.WaitingForNetworkChange;
851
+ currentStep.networkStatus = exports.PendingSwapNetworkStatus.WaitingForNetworkChange;
851
852
  swap.networkStatusExtraMessage = reason;
852
853
  swap.networkStatusExtraMessageDetail = reasonDetail;
853
854
  setStorage(_extends({}, getStorage(), {
@@ -864,13 +865,19 @@ function markRunningSwapAsSwitchingNetwork(_ref4) {
864
865
  */
865
866
  function markRunningSwapAsDependsOnOtherQueues(_ref5) {
866
867
  var getStorage = _ref5.getStorage,
867
- setStorage = _ref5.setStorage;
868
+ setStorage = _ref5.setStorage,
869
+ notifier = _ref5.notifier;
868
870
  var swap = getStorage().swapDetails;
869
871
  var currentStep = getCurrentStep(swap);
870
872
  if (!currentStep) return;
871
873
  swap.networkStatusExtraMessage = '';
872
874
  swap.networkStatusExtraMessageDetail = '';
873
- currentStep.networkStatus = PendingSwapNetworkStatus.WaitingForQueue;
875
+ currentStep.networkStatus = exports.PendingSwapNetworkStatus.WaitingForQueue;
876
+ notifier({
877
+ eventType: 'waiting_for_queue',
878
+ swap: swap,
879
+ step: currentStep
880
+ });
874
881
  setStorage(_extends({}, getStorage(), {
875
882
  swapDetails: swap
876
883
  }));
@@ -1002,9 +1009,6 @@ function _getChainId() {
1002
1009
  function isNetworkMatchedForTransaction(_x2, _x3, _x4, _x5, _x6) {
1003
1010
  return _isNetworkMatchedForTransaction.apply(this, arguments);
1004
1011
  }
1005
- /**
1006
- * Returns the wallet address, based on the current step of `PendingSwap`.
1007
- */
1008
1012
  function _isNetworkMatchedForTransaction() {
1009
1013
  _isNetworkMatchedForTransaction = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(swap, step, wallet, meta, providers) {
1010
1014
  var fromBlockChain, sourceWallet, provider, chainId, blockChain;
@@ -1012,112 +1016,85 @@ function _isNetworkMatchedForTransaction() {
1012
1016
  while (1) switch (_context2.prev = _context2.next) {
1013
1017
  case 0:
1014
1018
  if (!isWalletNull(wallet)) {
1015
- _context2.next = 3;
1019
+ _context2.next = 2;
1016
1020
  break;
1017
1021
  }
1018
- console.warn('wallet object is null');
1019
1022
  return _context2.abrupt("return", false);
1020
- case 3:
1023
+ case 2:
1021
1024
  fromBlockChain = getCurrentBlockchainOfOrNull(swap, step);
1022
1025
  if (fromBlockChain) {
1023
- _context2.next = 6;
1026
+ _context2.next = 5;
1024
1027
  break;
1025
1028
  }
1026
1029
  return _context2.abrupt("return", false);
1027
- case 6:
1030
+ case 5:
1028
1031
  if (!meta.evmBasedChains.find(function (evmBlochain) {
1029
1032
  return evmBlochain.name === fromBlockChain;
1030
1033
  })) {
1031
- _context2.next = 30;
1034
+ _context2.next = 29;
1032
1035
  break;
1033
1036
  }
1034
- _context2.prev = 7;
1037
+ _context2.prev = 6;
1035
1038
  sourceWallet = swap.wallets[fromBlockChain];
1036
1039
  if (!sourceWallet) {
1037
- _context2.next = 24;
1040
+ _context2.next = 23;
1038
1041
  break;
1039
1042
  }
1040
1043
  if (![walletsShared.WalletType.META_MASK, walletsShared.WalletType.BINANCE_CHAIN, walletsShared.WalletType.XDEFI, walletsShared.WalletType.WALLET_CONNECT, walletsShared.WalletType.TRUST_WALLET, walletsShared.WalletType.COIN98, walletsShared.WalletType.EXODUS, walletsShared.WalletType.OKX, walletsShared.WalletType.COINBASE, walletsShared.WalletType.TOKEN_POCKET, walletsShared.WalletType.MATH, walletsShared.WalletType.SAFEPAL, walletsShared.WalletType.COSMOSTATION, walletsShared.WalletType.CLOVER, walletsShared.WalletType.BRAVE, walletsShared.WalletType.FRONTIER, walletsShared.WalletType.KUCOIN].includes(sourceWallet.walletType)) {
1041
- _context2.next = 23;
1044
+ _context2.next = 22;
1042
1045
  break;
1043
1046
  }
1044
1047
  provider = getEvmProvider(providers, sourceWallet.walletType);
1045
- _context2.next = 14;
1048
+ _context2.next = 13;
1046
1049
  return getChainId(provider);
1047
- case 14:
1050
+ case 13:
1048
1051
  chainId = _context2.sent;
1049
1052
  if (!chainId) {
1050
- _context2.next = 21;
1053
+ _context2.next = 20;
1051
1054
  break;
1052
1055
  }
1053
- blockChain = walletsShared.getBlockChainNameFromId(chainId, Object.entries(meta.blockchains).map(function (_ref7) {
1054
- var blockchainMeta = _ref7[1];
1056
+ blockChain = walletsShared.getBlockChainNameFromId(chainId, Object.entries(meta.blockchains).map(function (_ref6) {
1057
+ var blockchainMeta = _ref6[1];
1055
1058
  return blockchainMeta;
1056
1059
  }));
1057
1060
  if (!(blockChain && blockChain.toLowerCase() === fromBlockChain.toLowerCase())) {
1058
- _context2.next = 19;
1061
+ _context2.next = 18;
1059
1062
  break;
1060
1063
  }
1061
1064
  return _context2.abrupt("return", true);
1062
- case 19:
1065
+ case 18:
1063
1066
  if (!(blockChain && blockChain.toLowerCase() !== fromBlockChain.toLowerCase())) {
1064
- _context2.next = 21;
1067
+ _context2.next = 20;
1065
1068
  break;
1066
1069
  }
1067
1070
  return _context2.abrupt("return", false);
1068
- case 21:
1069
- _context2.next = 24;
1071
+ case 20:
1072
+ _context2.next = 23;
1070
1073
  break;
1071
- case 23:
1074
+ case 22:
1072
1075
  return _context2.abrupt("return", true);
1073
- case 24:
1074
- _context2.next = 29;
1076
+ case 23:
1077
+ _context2.next = 28;
1075
1078
  break;
1076
- case 26:
1077
- _context2.prev = 26;
1078
- _context2.t0 = _context2["catch"](7);
1079
+ case 25:
1080
+ _context2.prev = 25;
1081
+ _context2.t0 = _context2["catch"](6);
1079
1082
  console.log(_context2.t0);
1080
- case 29:
1083
+ case 28:
1081
1084
  return _context2.abrupt("return", false);
1082
- case 30:
1085
+ case 29:
1083
1086
  return _context2.abrupt("return", true);
1084
- case 31:
1087
+ case 30:
1085
1088
  case "end":
1086
1089
  return _context2.stop();
1087
1090
  }
1088
- }, _callee2, null, [[7, 26]]);
1091
+ }, _callee2, null, [[6, 25]]);
1089
1092
  }));
1090
1093
  return _isNetworkMatchedForTransaction.apply(this, arguments);
1091
1094
  }
1092
- var getCurrentAddressOf$1 = function getCurrentAddressOf(swap, step) {
1093
- var _step$evmTransaction, _step$evmApprovalTran, _step$tronTransaction, _step$tronApprovalTra, _step$starknetTransac, _step$starknetApprova, _step$cosmosTransacti, _step$solanaTransacti, _step$transferTransac, _step$transferTransac2;
1094
- 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 ? {
1095
- address: (_step$transferTransac2 = step.transferTransaction) == null ? void 0 : _step$transferTransac2.fromWalletAddress
1096
- } : null) || null;
1097
- if (result == null) throw PrettyError.WalletMissing();
1098
- return result.address;
1099
- };
1100
- // Todo: Is it same with `getRequiredWallet`?
1101
- function getRelatedWallet$1(swap, currentStep) {
1102
- var walletAddress = getCurrentAddressOf$1(swap, currentStep);
1103
- var walletKV = Object.keys(swap.wallets).map(function (k) {
1104
- return {
1105
- k: k,
1106
- v: swap.wallets[k]
1107
- };
1108
- }).find(function (_ref6) {
1109
- var v = _ref6.v;
1110
- return v.address === walletAddress;
1111
- }) || null;
1112
- var blockchain = (walletKV == null ? void 0 : walletKV.k) || null;
1113
- var wallet = (walletKV == null ? void 0 : walletKV.v) || null;
1114
- var walletType = wallet == null ? void 0 : wallet.walletType;
1115
- if (walletType === walletsShared.WalletType.UNKNOWN || wallet === null) throw PrettyError.AssertionFailed("Wallet for source " + blockchain + " not passed: walletType: " + walletType);
1116
- return wallet;
1117
- }
1118
1095
  var isTxAlreadyCreated = function isTxAlreadyCreated(swap, step) {
1119
- var _step$evmTransaction2, _step$evmApprovalTran2, _step$tronTransaction2, _step$tronApprovalTra2, _step$starknetTransac2, _step$starknetApprova2, _step$cosmosTransacti2, _step$solanaTransacti2, _step$transferTransac3;
1120
- 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;
1096
+ var _step$evmTransaction, _step$evmApprovalTran, _step$tronTransaction, _step$tronApprovalTra, _step$starknetTransac, _step$starknetApprova, _step$cosmosTransacti, _step$solanaTransacti, _step$transferTransac;
1097
+ 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;
1121
1098
  return result !== null;
1122
1099
  };
1123
1100
  function resetNetworkStatus(actions) {
@@ -1159,7 +1136,7 @@ function updateNetworkStatus(actions, data) {
1159
1136
  }
1160
1137
  /**
1161
1138
  * Event handler for blocked tasks.
1162
- * If a transcation execution is manually blocked (like for parallel or waiting for walle),
1139
+ * If a transcation execution is manually blocked (like for parallel or waiting for wallet),
1163
1140
  * This function will be called by queue manager using `queue definition`.
1164
1141
  *
1165
1142
  * It checks if the required wallet is connected, unblock the queue to be run.
@@ -1168,11 +1145,14 @@ function onBlockForConnectWallet(event, meta) {
1168
1145
  var context = meta.context,
1169
1146
  queue = meta.queue;
1170
1147
  var swap = queue.getStorage().swapDetails;
1171
- if (!isRequiredWalletConnected(swap, context.state)) {
1148
+ var _isRequiredWalletConn = isRequiredWalletConnected(swap, context.state),
1149
+ ok = _isRequiredWalletConn.ok,
1150
+ reason = _isRequiredWalletConn.reason;
1151
+ if (!ok) {
1172
1152
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1173
1153
  var currentStep = getCurrentStep(swap);
1174
1154
  context.notifier({
1175
- eventType: 'waiting_for_connecting_wallet',
1155
+ eventType: reason === 'account_miss_match' ? 'waiting_for_change_wallet_account' : 'waiting_for_connecting_wallet',
1176
1156
  swap: swap,
1177
1157
  step: currentStep
1178
1158
  });
@@ -1224,7 +1204,7 @@ function onBlockForChangeNetwork(_event, meta) {
1224
1204
  }
1225
1205
  /**
1226
1206
  * Event handler for blocked tasks. (Parallel mode)
1227
- * If a transcation execution is manually blocked (like for parallel or waiting for walle),
1207
+ * If a transcation execution flow is manually blocked (like for parallel or waiting for walle),
1228
1208
  * This function will be called by queue manager using `queue definition`.
1229
1209
  *
1230
1210
  * It checks the blocked tasks, if there is no active `claimed` queue, try to give it to the best candidate.
@@ -1233,7 +1213,8 @@ function onDependsOnOtherQueues(_event, meta) {
1233
1213
  var getBlockedTasks = meta.getBlockedTasks,
1234
1214
  forceExecute = meta.forceExecute,
1235
1215
  queue = meta.queue,
1236
- manager = meta.manager;
1216
+ manager = meta.manager,
1217
+ context = meta.context;
1237
1218
  var _claimQueue = claimQueue(),
1238
1219
  setClaimer = _claimQueue.setClaimer,
1239
1220
  claimedBy = _claimQueue.claimedBy,
@@ -1247,12 +1228,14 @@ function onDependsOnOtherQueues(_event, meta) {
1247
1228
  }
1248
1229
  var claimerId = claimedBy();
1249
1230
  var isClaimedByAnyQueue = !!claimerId;
1231
+ if (claimerId === queue.id) return;
1250
1232
  // Check if any queue `claimed` before, if yes, we don't should do anything.
1251
1233
  if (isClaimedByAnyQueue) {
1252
1234
  // We need to keep the latest swap messages
1253
1235
  markRunningSwapAsDependsOnOtherQueues({
1254
1236
  getStorage: queue.getStorage.bind(queue),
1255
- setStorage: queue.setStorage.bind(queue)
1237
+ setStorage: queue.setStorage.bind(queue),
1238
+ notifier: context.notifier
1256
1239
  });
1257
1240
  return;
1258
1241
  }
@@ -1277,7 +1260,7 @@ function onDependsOnOtherQueues(_event, meta) {
1277
1260
  resetClaimedBy: function resetClaimedBy() {
1278
1261
  reset();
1279
1262
  // TODO: Use key generator
1280
- retryOn(type + "-" + network + "-" + address, manager);
1263
+ retryOn(type + "-" + network + ":" + address, context.notifier, manager);
1281
1264
  }
1282
1265
  });
1283
1266
  }
@@ -1286,16 +1269,28 @@ function isRequiredWalletConnected(swap, getState) {
1286
1269
  type = _getRequiredWallet4.type,
1287
1270
  address = _getRequiredWallet4.address;
1288
1271
  if (!type || !address) {
1289
- return false;
1272
+ return {
1273
+ ok: false,
1274
+ reason: 'not_connected'
1275
+ };
1290
1276
  }
1291
1277
  var walletState = getState(type);
1292
- var accounts = walletState.accounts;
1278
+ var accounts = walletState.accounts,
1279
+ connected = walletState.connected;
1293
1280
  var connectedAccounts = accounts || [];
1294
- return connectedAccounts.some(function (account) {
1281
+ if (!connected) return {
1282
+ ok: false,
1283
+ reason: 'not_connected'
1284
+ };
1285
+ var matched = connectedAccounts.some(function (account) {
1295
1286
  var _readAccountAddress = walletsCore.readAccountAddress(account),
1296
1287
  accountAddress = _readAccountAddress.address;
1297
1288
  return address === accountAddress;
1298
1289
  });
1290
+ return {
1291
+ ok: matched,
1292
+ reason: 'account_miss_match'
1293
+ };
1299
1294
  }
1300
1295
  function singTransaction(actions) {
1301
1296
  var getStorage = actions.getStorage,
@@ -1319,10 +1314,11 @@ function singTransaction(actions) {
1319
1314
  tronApprovalTransaction = currentStep.tronApprovalTransaction,
1320
1315
  starknetTransaction = currentStep.starknetTransaction,
1321
1316
  starknetApprovalTransaction = currentStep.starknetApprovalTransaction;
1322
- var sourceWallet = getRelatedWallet$1(swap, currentStep);
1323
- var walletAddress = getCurrentAddressOf$1(swap, currentStep);
1317
+ var sourceWallet = getRelatedWallet(swap, currentStep);
1318
+ var walletAddress = getCurrentAddressOf(swap, currentStep);
1324
1319
  var walletSigners = getSigners(sourceWallet.walletType);
1325
1320
  var onFinish = function onFinish() {
1321
+ // TODO resetClaimedBy is undefined here
1326
1322
  if (actions.context.resetClaimedBy) {
1327
1323
  actions.context.resetClaimedBy();
1328
1324
  }
@@ -1340,27 +1336,18 @@ function singTransaction(actions) {
1340
1336
  details: 'Waiting for approve transaction to be mined and confirmed successfully'
1341
1337
  });
1342
1338
  notifier(_extends({
1343
- eventType: 'confirm_contract'
1339
+ eventType: 'confirm_approve_contract'
1344
1340
  }, updateResult));
1345
1341
  // Execute transaction
1346
1342
  walletSigners.getSigner(rangoSdk.TransactionType.EVM).signAndSendTx(evmApprovalTransaction, walletAddress, null).then(function (hash) {
1347
- console.debug('transaction of approval minted successfully', hash);
1348
1343
  var approveUrl = getEvmApproveUrl(hash, getCurrentBlockchainOf(swap, currentStep), meta.evmBasedChains);
1349
- currentStep.explorerUrl = [].concat(currentStep.explorerUrl || [], [{
1350
- url: approveUrl,
1351
- description: "approve"
1352
- }]);
1353
- // `currentStep` has been mutated, let's update storage.
1354
- setStorage(_extends({}, getStorage(), {
1355
- swapDetails: swap
1356
- }));
1344
+ setStepTransactionIds(actions, hash, notifier, 'check_approve_tx_status', approveUrl);
1357
1345
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1358
1346
  next();
1359
1347
  onFinish();
1360
1348
  }, function (error) {
1361
1349
  var _error$root, _error$root2, _error$root3;
1362
1350
  if (swap.status === 'failed') return;
1363
- console.debug('error in approving', error);
1364
1351
  var _prettifyErrorMessage = prettifyErrorMessage(error),
1365
1352
  extraMessage = _prettifyErrorMessage.extraMessage,
1366
1353
  extraMessageDetail = _prettifyErrorMessage.extraMessageDetail,
@@ -1395,27 +1382,18 @@ function singTransaction(actions) {
1395
1382
  details: 'Waiting for approve transaction to be mined and confirmed successfully'
1396
1383
  });
1397
1384
  notifier(_extends({
1398
- eventType: 'confirm_contract'
1385
+ eventType: 'confirm_approve_contract'
1399
1386
  }, _updateResult));
1400
1387
  // Execute transaction
1401
1388
  walletSigners.getSigner(rangoSdk.TransactionType.TRON).signAndSendTx(tronApprovalTransaction, walletAddress, null).then(function (hash) {
1402
- console.debug('transaction of approval minted successfully', hash);
1403
1389
  var approveUrl = getTronApproveUrl(hash);
1404
- currentStep.explorerUrl = [].concat(currentStep.explorerUrl || [], [{
1405
- url: approveUrl,
1406
- description: "approve"
1407
- }]);
1408
- // `currentStep` has been mutated, let's update storage.
1409
- setStorage(_extends({}, getStorage(), {
1410
- swapDetails: swap
1411
- }));
1390
+ setStepTransactionIds(actions, hash, notifier, 'check_approve_tx_status', approveUrl);
1412
1391
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1413
1392
  next();
1414
1393
  onFinish();
1415
1394
  }, function (error) {
1416
1395
  var _error$root4, _error$root5, _error$root6;
1417
1396
  if (swap.status === 'failed') return;
1418
- console.debug('error in approving', error);
1419
1397
  var _prettifyErrorMessage2 = prettifyErrorMessage(error),
1420
1398
  extraMessage = _prettifyErrorMessage2.extraMessage,
1421
1399
  extraMessageDetail = _prettifyErrorMessage2.extraMessageDetail,
@@ -1450,27 +1428,18 @@ function singTransaction(actions) {
1450
1428
  details: 'Waiting for approve transaction to be mined and confirmed successfully'
1451
1429
  });
1452
1430
  notifier(_extends({
1453
- eventType: 'confirm_contract'
1431
+ eventType: 'confirm_approve_contract'
1454
1432
  }, _updateResult2));
1455
1433
  // Execute transaction
1456
1434
  walletSigners.getSigner(rangoSdk.TransactionType.STARKNET).signAndSendTx(starknetApprovalTransaction, walletAddress, null).then(function (hash) {
1457
- console.debug('transaction of approval minted successfully', hash);
1458
1435
  var approveUrl = getStarknetApproveUrl(hash);
1459
- currentStep.explorerUrl = [].concat(currentStep.explorerUrl || [], [{
1460
- url: approveUrl,
1461
- description: "approve"
1462
- }]);
1463
- // `currentStep` has been mutated, let's update storage.
1464
- setStorage(_extends({}, getStorage(), {
1465
- swapDetails: swap
1466
- }));
1436
+ setStepTransactionIds(actions, hash, notifier, 'check_approve_tx_status', approveUrl);
1467
1437
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1468
1438
  next();
1469
1439
  onFinish();
1470
1440
  }, function (error) {
1471
1441
  var _error$root7, _error$root8, _error$root9;
1472
1442
  if (swap.status === 'failed') return;
1473
- console.debug('error in approving', error);
1474
1443
  var _prettifyErrorMessage3 = prettifyErrorMessage(error),
1475
1444
  extraMessage = _prettifyErrorMessage3.extraMessage,
1476
1445
  extraMessageDetail = _prettifyErrorMessage3.extraMessageDetail,
@@ -1496,17 +1465,20 @@ function singTransaction(actions) {
1496
1465
  return;
1497
1466
  }
1498
1467
  var hasAlreadyProceededToSign = typeof swap.hasAlreadyProceededToSign === 'boolean';
1468
+ var nextStepStatusBasedOnHasAlreadyProceededToSign = hasAlreadyProceededToSign ? 'failed' : 'running';
1469
+ var errorCodeBasedOnHasAlreadyProceededToSign = hasAlreadyProceededToSign ? 'TX_EXPIRED' : null;
1499
1470
  var executeMessage = hasAlreadyProceededToSign ? 'Transaction is expired. Please try again' : 'executing transaction';
1500
1471
  var executeDetails = "" + (sourceWallet.walletType === walletsShared.WalletType.WALLET_CONNECT ? 'Check your mobile phone' : '');
1501
1472
  if (!!transferTransaction) {
1502
1473
  var _updateResult3 = updateSwapStatus({
1503
1474
  getStorage: getStorage,
1504
1475
  setStorage: setStorage,
1505
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1506
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1476
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1477
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1507
1478
  message: executeMessage,
1508
1479
  details: executeDetails,
1509
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1480
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1481
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1510
1482
  });
1511
1483
  var notification = getSwapNotitfication('confirm_transfer', _updateResult3);
1512
1484
  notifier(notification);
@@ -1515,7 +1487,7 @@ function singTransaction(actions) {
1515
1487
  onFinish();
1516
1488
  } else {
1517
1489
  walletSigners.getSigner(rangoSdk.TransactionType.TRANSFER).signAndSendTx(transferTransaction, walletAddress, null).then(function (txId) {
1518
- setStepTransactionIds(actions, txId, 'transfer_confirmed', notifier);
1490
+ setStepTransactionIds(actions, txId, notifier, 'check_tx_status');
1519
1491
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1520
1492
  next();
1521
1493
  onFinish();
@@ -1545,11 +1517,12 @@ function singTransaction(actions) {
1545
1517
  var _updateResult4 = updateSwapStatus({
1546
1518
  getStorage: getStorage,
1547
1519
  setStorage: setStorage,
1548
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1549
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1520
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1521
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1550
1522
  message: executeMessage,
1551
1523
  details: executeDetails,
1552
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1524
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1525
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1553
1526
  });
1554
1527
  var _notification = getSwapNotitfication('calling_smart_contract', _updateResult4);
1555
1528
  notifier(_notification);
@@ -1558,7 +1531,7 @@ function singTransaction(actions) {
1558
1531
  onFinish();
1559
1532
  } else {
1560
1533
  walletSigners.getSigner(rangoSdk.TransactionType.EVM).signAndSendTx(evmTransaction, walletAddress, null).then(function (id) {
1561
- setStepTransactionIds(actions, id, 'smart_contract_called', notifier);
1534
+ setStepTransactionIds(actions, id, notifier, 'check_tx_status');
1562
1535
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1563
1536
  next();
1564
1537
  onFinish();
@@ -1592,11 +1565,12 @@ function singTransaction(actions) {
1592
1565
  var _updateResult5 = updateSwapStatus({
1593
1566
  getStorage: getStorage,
1594
1567
  setStorage: setStorage,
1595
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1596
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1568
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1569
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1597
1570
  message: executeMessage,
1598
1571
  details: executeDetails,
1599
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1572
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1573
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1600
1574
  });
1601
1575
  var _notification2 = getSwapNotitfication('calling_smart_contract', _updateResult5);
1602
1576
  notifier(_notification2);
@@ -1631,7 +1605,7 @@ function singTransaction(actions) {
1631
1605
  walletSigners.getSigner(rangoSdk.TransactionType.COSMOS).signAndSendTx(cosmosTransaction, walletAddress, null).then(
1632
1606
  // todo
1633
1607
  function (id) {
1634
- setStepTransactionIds(actions, id, 'smart_contract_called', notifier);
1608
+ setStepTransactionIds(actions, id, notifier, 'check_tx_status');
1635
1609
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1636
1610
  next();
1637
1611
  onFinish();
@@ -1661,11 +1635,12 @@ function singTransaction(actions) {
1661
1635
  var _updateResult7 = updateSwapStatus({
1662
1636
  getStorage: getStorage,
1663
1637
  setStorage: setStorage,
1664
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1665
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1638
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1639
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1666
1640
  message: executeMessage,
1667
1641
  details: executeDetails,
1668
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1642
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1643
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1669
1644
  });
1670
1645
  var _notification3 = getSwapNotitfication('calling_smart_contract', _updateResult7);
1671
1646
  notifier(_notification3);
@@ -1675,7 +1650,7 @@ function singTransaction(actions) {
1675
1650
  } else {
1676
1651
  var tx = solanaTransaction;
1677
1652
  walletSigners.getSigner(rangoSdk.TransactionType.SOLANA).signAndSendTx(tx, walletAddress, null).then(function (txId) {
1678
- setStepTransactionIds(actions, txId, 'smart_contract_called', notifier);
1653
+ setStepTransactionIds(actions, txId, notifier, 'check_tx_status');
1679
1654
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1680
1655
  next();
1681
1656
  onFinish();
@@ -1705,11 +1680,12 @@ function singTransaction(actions) {
1705
1680
  var _updateResult8 = updateSwapStatus({
1706
1681
  getStorage: getStorage,
1707
1682
  setStorage: setStorage,
1708
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1709
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1683
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1684
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1710
1685
  message: executeMessage,
1711
1686
  details: executeDetails,
1712
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1687
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1688
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1713
1689
  });
1714
1690
  var _notification4 = getSwapNotitfication('calling_smart_contract', _updateResult8);
1715
1691
  notifier(_notification4);
@@ -1718,7 +1694,7 @@ function singTransaction(actions) {
1718
1694
  onFinish();
1719
1695
  } else {
1720
1696
  walletSigners.getSigner(rangoSdk.TransactionType.TRON).signAndSendTx(tronTransaction, walletAddress, null).then(function (id) {
1721
- setStepTransactionIds(actions, id, 'smart_contract_called', notifier);
1697
+ setStepTransactionIds(actions, id, notifier, 'check_tx_status');
1722
1698
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1723
1699
  next();
1724
1700
  onFinish();
@@ -1752,11 +1728,12 @@ function singTransaction(actions) {
1752
1728
  var _updateResult9 = updateSwapStatus({
1753
1729
  getStorage: getStorage,
1754
1730
  setStorage: setStorage,
1755
- nextStepStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1756
- nextStatus: hasAlreadyProceededToSign ? 'failed' : 'running',
1731
+ nextStepStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1732
+ nextStatus: nextStepStatusBasedOnHasAlreadyProceededToSign,
1757
1733
  message: executeMessage,
1758
1734
  details: executeDetails,
1759
- hasAlreadyProceededToSign: hasAlreadyProceededToSign
1735
+ hasAlreadyProceededToSign: hasAlreadyProceededToSign,
1736
+ errorCode: errorCodeBasedOnHasAlreadyProceededToSign
1760
1737
  });
1761
1738
  var _notification5 = getSwapNotitfication('calling_smart_contract', _updateResult9);
1762
1739
  notifier(_notification5);
@@ -1765,7 +1742,7 @@ function singTransaction(actions) {
1765
1742
  onFinish();
1766
1743
  } else {
1767
1744
  walletSigners.getSigner(rangoSdk.TransactionType.STARKNET).signAndSendTx(starknetTransaction, walletAddress, null).then(function (id) {
1768
- setStepTransactionIds(actions, id, 'smart_contract_called', notifier);
1745
+ setStepTransactionIds(actions, id, notifier, 'check_tx_status');
1769
1746
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
1770
1747
  next();
1771
1748
  onFinish();
@@ -1819,7 +1796,9 @@ function checkWaitingForConnectWalletChange(params) {
1819
1796
  var hasWaitingForConnect = Object.keys(q.list.state.tasks).some(function (taskId) {
1820
1797
  var _task$blockedFor;
1821
1798
  var task = q.list.state.tasks[taskId];
1822
- return task.status === queueManagerCore.Status.BLOCKED && [BlockReason.WAIT_FOR_CONNECT_WALLET].includes((_task$blockedFor = task.blockedFor) == null ? void 0 : _task$blockedFor.reason);
1799
+ return task.status === queueManagerCore.Status.BLOCKED &&
1800
+ // TODO double check later
1801
+ [BlockReason.WAIT_FOR_CONNECT_WALLET].includes((_task$blockedFor = task.blockedFor) == null ? void 0 : _task$blockedFor.reason);
1823
1802
  });
1824
1803
  if (currentStepRequiredWallet === wallet && hasWaitingForConnect && getCurrentBlockchainOfOrNull(swap, currentStep) != network) {
1825
1804
  var queueInstance = q.list;
@@ -1833,10 +1812,17 @@ function checkWaitingForConnectWalletChange(params) {
1833
1812
  },
1834
1813
  silent: true
1835
1814
  });
1836
- markRunningSwapAsSwitchingNetwork({
1815
+ var result = markRunningSwapAsSwitchingNetwork({
1837
1816
  getStorage: queueInstance.getStorage.bind(queueInstance),
1838
1817
  setStorage: queueInstance.setStorage.bind(queueInstance)
1839
1818
  });
1819
+ if (result) {
1820
+ params == null ? void 0 : params.notifier({
1821
+ eventType: 'waiting_for_network_change',
1822
+ swap: result.swap,
1823
+ step: result.step
1824
+ });
1825
+ }
1840
1826
  }
1841
1827
  }
1842
1828
  }
@@ -1867,6 +1853,49 @@ function checkWaitingForNetworkChange(manager) {
1867
1853
  }
1868
1854
  });
1869
1855
  }
1856
+ /**
1857
+ * Get list of all running swaps
1858
+ *
1859
+ * @param manager
1860
+ * @returns list of pending swaps
1861
+ */
1862
+ function getRunningSwaps(manager) {
1863
+ var queues = (manager == null ? void 0 : manager.getAll()) || new Map();
1864
+ var result = [];
1865
+ queues.forEach(function (q) {
1866
+ // retry only on affected queues
1867
+ var queueStorage = q.list.getStorage();
1868
+ var swap = queueStorage == null ? void 0 : queueStorage.swapDetails;
1869
+ if (!swap || swap.status !== 'running') return;
1870
+ result.push(swap);
1871
+ });
1872
+ return result;
1873
+ }
1874
+ /**
1875
+ *
1876
+ * Trying to reset notifications for pending swaps to correct message on page load.
1877
+ * We could remove this after supporting auto connect for wallets.
1878
+ *
1879
+ * @param swaps
1880
+ * @param notifier
1881
+ * @returns
1882
+ */
1883
+ function resetRunningSwapNotifsOnPageLoad(runningSwaps, notifier) {
1884
+ runningSwaps.forEach(function (swap) {
1885
+ var currentStep = getCurrentStep(swap);
1886
+ var eventType;
1887
+ if ((currentStep == null ? void 0 : currentStep.networkStatus) === exports.PendingSwapNetworkStatus.WaitingForQueue) eventType = 'waiting_for_queue';else if ((swap == null ? void 0 : swap.status) === 'running') {
1888
+ eventType = 'waiting_for_connecting_wallet';
1889
+ }
1890
+ if (!!eventType && !!notifier) {
1891
+ notifier({
1892
+ eventType: eventType,
1893
+ swap: swap,
1894
+ step: currentStep
1895
+ });
1896
+ }
1897
+ });
1898
+ }
1870
1899
  /**
1871
1900
  *
1872
1901
  * Try to run blocked tasks by wallet and network name.
@@ -1878,7 +1907,7 @@ function checkWaitingForNetworkChange(manager) {
1878
1907
  * @param manager
1879
1908
  * @returns
1880
1909
  */
1881
- function retryOn(wallet_network, manager, options) {
1910
+ function retryOn(wallet_network, notifier, manager, options) {
1882
1911
  var _finalQueueToBeRun;
1883
1912
  if (options === void 0) {
1884
1913
  options = {
@@ -1902,7 +1931,7 @@ function retryOn(wallet_network, manager, options) {
1902
1931
  var currentStep = getCurrentStep(swap);
1903
1932
  if (currentStep) {
1904
1933
  var _queueStorage$swapDet2, _queueStorage$swapDet3;
1905
- if (currentStep.fromBlockchain == network && (queueStorage == null ? void 0 : (_queueStorage$swapDet2 = queueStorage.swapDetails.wallets[network]) == null ? void 0 : _queueStorage$swapDet2.walletType) === wallet) {
1934
+ if (getCurrentBlockchainOfOrNull(swap, currentStep) == network && (queueStorage == null ? void 0 : (_queueStorage$swapDet2 = queueStorage.swapDetails.wallets[network]) == null ? void 0 : _queueStorage$swapDet2.walletType) === wallet) {
1906
1935
  walletAndNetworkMatched.push(q.list);
1907
1936
  } else if ((queueStorage == null ? void 0 : (_queueStorage$swapDet3 = queueStorage.swapDetails.wallets[currentStep.fromBlockchain]) == null ? void 0 : _queueStorage$swapDet3.walletType) === wallet) {
1908
1937
  onlyWalletMatched.push(q.list);
@@ -1911,7 +1940,6 @@ function retryOn(wallet_network, manager, options) {
1911
1940
  }
1912
1941
  }
1913
1942
  });
1914
- // const isWaitingForConnectWallet = (status: Status) =>
1915
1943
  var finalQueueToBeRun = undefined;
1916
1944
  if (walletAndNetworkMatched.length > 0) {
1917
1945
  finalQueueToBeRun = walletAndNetworkMatched[0];
@@ -1920,7 +1948,8 @@ function retryOn(wallet_network, manager, options) {
1920
1948
  var currentQueue = walletAndNetworkMatched[i];
1921
1949
  markRunningSwapAsDependsOnOtherQueues({
1922
1950
  getStorage: currentQueue.getStorage.bind(currentQueue),
1923
- setStorage: currentQueue.setStorage.bind(currentQueue)
1951
+ setStorage: currentQueue.setStorage.bind(currentQueue),
1952
+ notifier: notifier
1924
1953
  });
1925
1954
  }
1926
1955
  }
@@ -1973,8 +2002,20 @@ function _throwOnOK() {
1973
2002
  }));
1974
2003
  return _throwOnOK.apply(this, arguments);
1975
2004
  }
2005
+ function cancelSwap(swap) {
2006
+ swap.actions.cancel();
2007
+ return updateSwapStatus({
2008
+ getStorage: swap.actions.getStorage,
2009
+ setStorage: swap.actions.setStorage,
2010
+ message: 'Swap canceled by user.',
2011
+ details: "Warning: If you've already signed and sent a transaction, it won't be affected, but next swap steps will not be executed.",
2012
+ nextStatus: 'failed',
2013
+ nextStepStatus: 'failed',
2014
+ errorCode: 'USER_CANCEL'
2015
+ });
2016
+ }
1976
2017
 
1977
- var INTERVAL_FOR_CHECK = 2000;
2018
+ var INTERVAL_FOR_CHECK = 3000;
1978
2019
  /**
1979
2020
  * Subscribe to status of swap transaction by checking from server periodically.
1980
2021
  * After getting the status, notify the user and schedule `SCHEDULE_NEXT_STEP`.
@@ -2021,7 +2062,7 @@ function _checkTransactionStatus() {
2021
2062
  outputAmount = ((_status = status) == null ? void 0 : _status.outputAmount) || (!!currentStep.outputAmount ? currentStep.outputAmount : null);
2022
2063
  prevOutputAmount = currentStep.outputAmount;
2023
2064
  swap.extraMessage = ((_status2 = status) == null ? void 0 : _status2.extraMessage) || swap.extraMessage;
2024
- swap.extraMessageSeverity = MessageSeverity.info;
2065
+ swap.extraMessageSeverity = exports.MessageSeverity.info;
2025
2066
  swap.extraMessageDetail = '';
2026
2067
  currentStep.status = ((_status3 = status) == null ? void 0 : _status3.status) || currentStep.status;
2027
2068
  currentStep.diagnosisUrl = ((_status4 = status) == null ? void 0 : _status4.diagnosisUrl) || currentStep.diagnosisUrl || null;
@@ -2032,6 +2073,7 @@ function _checkTransactionStatus() {
2032
2073
  if (!!newTransaction) {
2033
2074
  currentStep.status = 'created';
2034
2075
  currentStep.executedTransactionId = null;
2076
+ currentStep.executedTransactionTime = null;
2035
2077
  currentStep.transferTransaction = null;
2036
2078
  currentStep.cosmosTransaction = null;
2037
2079
  currentStep.evmTransaction = null;
@@ -2041,7 +2083,6 @@ function _checkTransactionStatus() {
2041
2083
  currentStep.starknetTransaction = null;
2042
2084
  currentStep.tronApprovalTransaction = null;
2043
2085
  currentStep.tronTransaction = null;
2044
- currentStep.fromBlockchain = newTransaction.blockChain;
2045
2086
  if (isEvmTransaction(newTransaction)) {
2046
2087
  if (newTransaction.isApprovalTx) currentStep.evmApprovalTransaction = newTransaction;else currentStep.evmTransaction = newTransaction;
2047
2088
  } else if (isCosmosTransaction(newTransaction)) {
@@ -2060,11 +2101,22 @@ function _checkTransactionStatus() {
2060
2101
  eventType: 'step_completed_with_output',
2061
2102
  swap: swap,
2062
2103
  step: currentStep
2063
- });
2104
+ });else if (prevOutputAmount === null && outputAmount === null) {
2105
+ // it is needed to set notification after reloading the page
2106
+ context.notifier({
2107
+ eventType: 'check_tx_status',
2108
+ swap: swap,
2109
+ step: currentStep
2110
+ });
2111
+ }
2064
2112
  if (currentStep.status === 'success') {
2065
2113
  nextStep = getNextStep(swap, currentStep);
2066
2114
  swap.extraMessageDetail = '';
2067
2115
  swap.extraMessage = !!nextStep ? "starting next step: " + nextStep.swapperId + ": " + nextStep.fromBlockchain + " -> " + nextStep.toBlockchain : '';
2116
+ } else if (currentStep.status === 'failed') {
2117
+ swap.extraMessage = 'Transaction failed in blockchain';
2118
+ swap.extraMessageSeverity = exports.MessageSeverity.error;
2119
+ swap.extraMessageDetail = '';
2068
2120
  }
2069
2121
  // Sync data with storage
2070
2122
  setStorage(_extends({}, getStorage(), {
@@ -2104,38 +2156,70 @@ function checkApprovalStatus(_x2) {
2104
2156
  */
2105
2157
  function _checkApprovalStatus() {
2106
2158
  _checkApprovalStatus = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2) {
2107
- var getStorage, setStorage, next, schedule, retry, context, swap, currentStep, isApproved, response;
2159
+ var getStorage, setStorage, next, schedule, retry, failed, context, swap, currentStep, isApproved, response, updateResult;
2108
2160
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
2109
2161
  while (1) switch (_context2.prev = _context2.next) {
2110
2162
  case 0:
2111
- getStorage = _ref2.getStorage, setStorage = _ref2.setStorage, next = _ref2.next, schedule = _ref2.schedule, retry = _ref2.retry, context = _ref2.context;
2112
- swap = getStorage().swapDetails; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2163
+ getStorage = _ref2.getStorage, setStorage = _ref2.setStorage, next = _ref2.next, schedule = _ref2.schedule, retry = _ref2.retry, failed = _ref2.failed, context = _ref2.context;
2164
+ swap = getStorage().swapDetails; // double check it after fixing parallel
2165
+ // const onFinish = () => {
2166
+ // // TODO resetClaimedBy is undefined here
2167
+ // if (context.resetClaimedBy) {
2168
+ // context.resetClaimedBy();
2169
+ // }
2170
+ // };
2171
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2113
2172
  currentStep = getCurrentStep(swap);
2114
2173
  isApproved = false;
2115
2174
  _context2.prev = 4;
2116
2175
  _context2.next = 7;
2117
- return httpService.checkApproval(swap.requestId);
2176
+ return httpService.checkApproval(swap.requestId, currentStep.executedTransactionId || '');
2118
2177
  case 7:
2119
2178
  response = _context2.sent;
2120
2179
  isApproved = response.isApproved;
2180
+ if (!isApproved && response.txStatus === 'failed') {
2181
+ // approve transaction failed on
2182
+ // we should fail the whole swap
2183
+ updateResult = updateSwapStatus({
2184
+ getStorage: getStorage,
2185
+ setStorage: setStorage,
2186
+ nextStatus: 'failed',
2187
+ nextStepStatus: 'failed',
2188
+ errorCode: 'SEND_TX_FAILED',
2189
+ message: 'Approve transaction failed',
2190
+ details: 'Smart contract approval failed in blockchain.'
2191
+ });
2192
+ context.notifier(_extends({
2193
+ eventType: 'smart_contract_call_failed'
2194
+ }, updateResult));
2195
+ failed();
2196
+ // onFinish();
2197
+ } else if (!isApproved) {
2198
+ // it is needed to set notification after reloading the page
2199
+ context.notifier({
2200
+ eventType: 'check_approve_tx_status',
2201
+ swap: swap,
2202
+ step: currentStep
2203
+ });
2204
+ }
2121
2205
  _context2.next = 15;
2122
2206
  break;
2123
- case 11:
2124
- _context2.prev = 11;
2207
+ case 12:
2208
+ _context2.prev = 12;
2125
2209
  _context2.t0 = _context2["catch"](4);
2126
- console.error('Failed to check getApprovedAmount', _context2.t0);
2127
2210
  isApproved = false;
2128
2211
  case 15:
2129
2212
  if (!isApproved) {
2130
- _context2.next = 30;
2213
+ _context2.next = 31;
2131
2214
  break;
2132
2215
  }
2133
2216
  currentStep.status = 'approved';
2134
2217
  swap.extraMessage = "Spending " + currentStep.fromSymbol + " approved successfully.";
2135
2218
  swap.extraMessageDetail = null;
2136
- swap.extraMessageSeverity = MessageSeverity.success;
2219
+ swap.extraMessageSeverity = exports.MessageSeverity.success;
2137
2220
  currentStep.evmApprovalTransaction = null;
2138
2221
  currentStep.executedTransactionId = null;
2222
+ currentStep.executedTransactionTime = null;
2139
2223
  currentStep.starknetApprovalTransaction = null;
2140
2224
  currentStep.tronApprovalTransaction = null;
2141
2225
  setStorage(_extends({}, getStorage(), {
@@ -2148,18 +2232,18 @@ function _checkApprovalStatus() {
2148
2232
  });
2149
2233
  schedule(SwapActionTypes.SCHEDULE_NEXT_STEP);
2150
2234
  next();
2151
- _context2.next = 33;
2235
+ _context2.next = 34;
2152
2236
  break;
2153
- case 30:
2154
- _context2.next = 32;
2237
+ case 31:
2238
+ _context2.next = 33;
2155
2239
  return delay(2000);
2156
- case 32:
2157
- retry();
2158
2240
  case 33:
2241
+ retry();
2242
+ case 34:
2159
2243
  case "end":
2160
2244
  return _context2.stop();
2161
2245
  }
2162
- }, _callee2, null, [[4, 11]]);
2246
+ }, _callee2, null, [[4, 12]]);
2163
2247
  }));
2164
2248
  return _checkApprovalStatus.apply(this, arguments);
2165
2249
  }
@@ -2278,7 +2362,7 @@ function _createTransaction() {
2278
2362
  nextStepStatus: 'failed',
2279
2363
  message: extraMessage,
2280
2364
  details: extraMessageDetail,
2281
- errorCode: APIErrorCode.FETCH_TX_FAILED
2365
+ errorCode: 'FETCH_TX_FAILED'
2282
2366
  });
2283
2367
  context.notifier(_extends({
2284
2368
  eventType: 'task_failed'
@@ -2325,7 +2409,7 @@ function _executeTransaction() {
2325
2409
  currentStep = getCurrentStep(swap); // Resetting network status, so we will set it again during the running of this task.
2326
2410
  resetNetworkStatus(actions);
2327
2411
  /* Make sure wallet is connected and also the connected wallet is matched with tx by checking address. */
2328
- isWrongAddress = !isRequiredWalletConnected(swap, context.state);
2412
+ isWrongAddress = !isRequiredWalletConnected(swap, context.state).ok;
2329
2413
  if (!isWrongAddress) {
2330
2414
  _context.next = 15;
2331
2415
  break;
@@ -2350,13 +2434,13 @@ function _executeTransaction() {
2350
2434
  We only run one request at a time (In parallel mode).
2351
2435
  */
2352
2436
  needsToBlockQueue = isNeedBlockQueueForParallel(currentStep);
2353
- if (!(needsToBlockQueue && !isClaimed && context.claimedBy)) {
2437
+ if (!(needsToBlockQueue && !isClaimed)) {
2354
2438
  _context.next = 20;
2355
2439
  break;
2356
2440
  }
2357
2441
  _blockedFor = {
2358
2442
  reason: BlockReason.DEPENDS_ON_OTHER_QUEUES,
2359
- description: 'Waiting for other running tasks to be finished',
2443
+ description: 'Waiting for other swaps to complete',
2360
2444
  details: {}
2361
2445
  };
2362
2446
  requestBlock(_blockedFor);
@@ -2383,7 +2467,7 @@ function _executeTransaction() {
2383
2467
  updateNetworkStatus(actions, {
2384
2468
  message: '',
2385
2469
  details: 'Wallet network changed successfully',
2386
- status: PendingSwapNetworkStatus.NetworkChanged
2470
+ status: exports.PendingSwapNetworkStatus.NetworkChanged
2387
2471
  });
2388
2472
  case 32:
2389
2473
  // All the conditions are met. We can safely send the tx to wallet for sign.
@@ -2420,6 +2504,7 @@ function scheduleNextStep(_ref) {
2420
2504
  schedule(SwapActionTypes.EXECUTE_TRANSACTION);
2421
2505
  return next();
2422
2506
  }
2507
+ // TODO double check it after approval changes
2423
2508
  if (currentStep != null && currentStep.executedTransactionId) {
2424
2509
  schedule(SwapActionTypes.CHECK_TRANSACTION_STATUS);
2425
2510
  return next();
@@ -2455,6 +2540,29 @@ function start(_ref) {
2455
2540
  next();
2456
2541
  }
2457
2542
 
2543
+ var _actions;
2544
+ /**
2545
+ *
2546
+ * The idea behind this queue is to be able dynamically add some steps.
2547
+ * After running a swap, it can be blocked (like on waiting for switch netwrok)
2548
+ * or waits for something happend (like checking status of a transaction from server)
2549
+ *
2550
+ */
2551
+ var swapQueueDef = {
2552
+ name: 'swap',
2553
+ 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),
2554
+ run: [SwapActionTypes.START],
2555
+ whenTaskBlocked: function whenTaskBlocked(event, meta) {
2556
+ if (event.reason.reason === BlockReason.WAIT_FOR_CONNECT_WALLET) {
2557
+ onBlockForConnectWallet(event, meta);
2558
+ } else if (event.reason.reason === BlockReason.WAIT_FOR_NETWORK_CHANGE) {
2559
+ onBlockForChangeNetwork(event, meta);
2560
+ } else if (event.reason.reason === BlockReason.DEPENDS_ON_OTHER_QUEUES) {
2561
+ onDependsOnOtherQueues(event, meta);
2562
+ }
2563
+ }
2564
+ };
2565
+
2458
2566
  var MIGRATED_KEY = 'migratedToQueueManager';
2459
2567
  /**
2460
2568
  *
@@ -2646,9 +2754,10 @@ function useQueueManager(params) {
2646
2754
  checkWaitingForConnectWalletChange({
2647
2755
  evmChains: params.evmChains,
2648
2756
  wallet_network: params.lastConnectedWallet,
2649
- manager: manager
2757
+ manager: manager,
2758
+ notifier: params.notifier
2650
2759
  });
2651
- retryOn(params.lastConnectedWallet, manager);
2760
+ retryOn(params.lastConnectedWallet, params.notifier, manager);
2652
2761
  }
2653
2762
  }, [params.lastConnectedWallet]);
2654
2763
  react.useEffect(function () {
@@ -2663,33 +2772,19 @@ function useQueueManager(params) {
2663
2772
  }, [params.disconnectedWallet]);
2664
2773
  }
2665
2774
 
2666
- var _actions;
2667
- /**
2668
- *
2669
- * The idea behind this queue is to be able dynamically add some steps.
2670
- * After running a swap, it can be blocked (like on waiting for switch netwrok)
2671
- * or waits for something happend (like checking status of a transaction from server)
2672
- *
2673
- */
2674
- var swapQueueDef = {
2675
- name: 'swap',
2676
- 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),
2677
- run: [SwapActionTypes.START],
2678
- whenTaskBlocked: function whenTaskBlocked(event, meta) {
2679
- if (event.reason.reason === BlockReason.WAIT_FOR_CONNECT_WALLET) {
2680
- onBlockForConnectWallet(event, meta);
2681
- } else if (event.reason.reason === BlockReason.WAIT_FOR_NETWORK_CHANGE) {
2682
- onBlockForChangeNetwork(event, meta);
2683
- } else if (event.reason.reason === BlockReason.DEPENDS_ON_OTHER_QUEUES) {
2684
- onDependsOnOtherQueues(event, meta);
2685
- }
2686
- }
2687
- };
2688
-
2775
+ exports.PrettyError = PrettyError;
2776
+ exports.cancelSwap = cancelSwap;
2689
2777
  exports.checkWaitingForNetworkChange = checkWaitingForNetworkChange;
2778
+ exports.getCurrentBlockchainOfOrNull = getCurrentBlockchainOfOrNull;
2690
2779
  exports.getCurrentStep = getCurrentStep;
2691
2780
  exports.getEvmProvider = getEvmProvider;
2692
- exports.getRelatedWallet = getRelatedWallet$1;
2781
+ exports.getRelatedWallet = getRelatedWallet;
2782
+ exports.getRelatedWalletOrNull = getRelatedWalletOrNull;
2783
+ exports.getRequiredWallet = getRequiredWallet;
2784
+ exports.getRunningSwaps = getRunningSwaps;
2785
+ exports.prettifyErrorMessage = prettifyErrorMessage;
2786
+ exports.resetRunningSwapNotifsOnPageLoad = resetRunningSwapNotifsOnPageLoad;
2787
+ exports.splitWalletNetwork = splitWalletNetwork;
2693
2788
  exports.swapQueueDef = swapQueueDef;
2694
2789
  exports.updateSwapStatus = updateSwapStatus;
2695
2790
  exports.useMigration = useMigration;