@kaiachain/kss-bridges-celer
Version:
TypeScript client and use-cases for cBridge
68 lines (53 loc) • 2.93 kB
text/typescript
import { getTransferStatus } from "./GetData"
import { GetTransferStatusResponse } from "../ts-proto/gateway/gateway_pb"
import { clearInterval } from "timers"
export const statusTracker = async (rpc: string, transferId: string, callback?: any, statusCode?: number) => {
let observerdStatus: number = statusCode ? statusCode : 0;
const transferStatusResponse = async () => {
const res: GetTransferStatusResponse.AsObject = await getTransferStatus(rpc, transferId);
if (res.status === 1 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.info("cBRIDGE => TRANSFER_SUBMITTING")
} else if (res.status === 2 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.error("cBRIDGE => TRANSFER_FAILED")
console.log("Tx Details: ", res)
clearInterval(interval);
} else if (res.status === 3 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.info("cBRIDGE => TRANSFER_WAITING_FOR_SGN_CONFIRMATION")
} else if (res.status === 4 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.info("cBRIDGE => TRANSFER_WAITING_FOR_FUND_RELEASE")
}else if (res.status === 5 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.log("cBRIDGE => TRANSFER_COMPLETED")
console.log("Tx Details: ", res)
clearInterval(interval);
}else if (res.status === 6 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.warn("cBRIDGE => TRANSFER_TO_BE_REFUNDED")
console.log("Initiate the Refund process, e.g: use-cases/***FlowRefund.ts")
console.log("Tx Details: ", res)
clearInterval(interval)
callback ? callback(res) : null;
}else if (res.status === 7 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.info("cBRIDGE => TRANSFER_REQUESTING_REFUND")
}else if (res.status === 8 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.warn("cBRIDGE => TRANSFER_REFUND_TO_BE_CONFIRMED")
callback ? callback(res) : null;
}else if (res.status === 9 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.info("cBRIDGE => TRANSFER_CONFIRMING_YOUR_REFUND")
}else if (res.status === 10 && res.status !== observerdStatus) {
observerdStatus = res.status;
console.log("cBRIDGE => TRANSFER_REFUNDED")
console.log("Tx Details: ", res)
clearInterval(interval);
}
}
const interval = setInterval(transferStatusResponse, 10000); // 10 seconds interval
transferStatusResponse()
}