@renegade-fi/core
Version:
VanillaJS library for Renegade
39 lines • 1.49 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