UNPKG

@openocean.finance/widget-sdk

Version:

OpenOcean Any-to-Any Cross-Chain-Swap SDK

53 lines 2.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.waitForTransactionStatus = waitForTransactionStatus; const errors_js_1 = require("../errors/errors.js"); const api_js_1 = require("../services/api.js"); const waitForResult_js_1 = require("../utils/waitForResult.js"); const processMessages_js_1 = require("./processMessages.js"); const TRANSACTION_HASH_OBSERVERS = {}; async function waitForTransactionStatus(txHash, statusManager, processType, step, interval = 5_000) { const _getStatus = () => { return (0, api_js_1.getStatus)({ fromChain: step.action.fromChainId, toChain: step.action.toChainId, txHash, ...(step.tool !== 'custom' && { bridge: step.tool }), }) .then((statusResponse) => { switch (statusResponse.status) { case 'DONE': return statusResponse; case 'PENDING': statusManager?.updateProcess(step, processType, 'PENDING', { substatus: statusResponse.substatus, substatusMessage: statusResponse.substatusMessage || (0, processMessages_js_1.getSubstatusMessage)(statusResponse.status, statusResponse.substatus), txLink: statusResponse.bridgeExplorerLink, }); return undefined; case 'NOT_FOUND': return undefined; default: return Promise.reject(); } }) .catch((e) => { if (process.env.NODE_ENV === 'development') { console.debug('Fetching status from backend failed.', e); } return undefined; }); }; let status = TRANSACTION_HASH_OBSERVERS[txHash]; if (!status) { status = (0, waitForResult_js_1.waitForResult)(_getStatus, interval); TRANSACTION_HASH_OBSERVERS[txHash] = status; } const resolvedStatus = await status; if (!('receiving' in resolvedStatus)) { throw new errors_js_1.ServerError("Status doesn't contain destination chain information."); } return resolvedStatus; } //# sourceMappingURL=waitForTransactionStatus.js.map