@renegade-fi/core
Version:
VanillaJS library for Renegade
40 lines • 1.5 kB
JavaScript
import { TASK_STATUS_ROUTE } from '../constants.js';
import { AuthType } from '../utils/websocket.js';
import { websocketWaiter, } from '../utils/websocketWaiter.js';
import { getTaskHistory } from './getTaskHistory.js';
export async function waitForTaskCompletionWs(config, parameters) {
const { id, timeout } = parameters;
const topic = TASK_STATUS_ROUTE(id);
const wsWaiterParams = {
config,
topic,
authType: AuthType.Wallet,
messageHandler: (message) => {
const parsedMessage = JSON.parse(message);
if (parsedMessage.topic === topic &&
parsedMessage.event.type === 'TaskStatusUpdate') {
if (parsedMessage.event.status?.state === 'Completed') {
return null;
}
if (parsedMessage.event.status?.state === 'Failed') {
throw new Error(`Task ${id} failed`);
}
}
return undefined;
},
prefetch: async () => {
const taskHistory = await getTaskHistory(config);
const task = taskHistory.get(id);
if (task?.state === 'Completed') {
return null;
}
if (task?.state === 'Failed') {
throw new Error(`Task ${id} failed`);
}
return undefined;
},
timeout,
};
return websocketWaiter(wsWaiterParams);
}
//# sourceMappingURL=waitForTaskCompletionWs.js.map