@botonic/plugin-flow-builder
Version:
Use Flow Builder to show your contents
45 lines • 1.93 kB
JavaScript
import { __awaiter } from "tslib";
import axios from 'axios';
const HUBTYPE_API_URL = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
var QueueStatusResult;
(function (QueueStatusResult) {
QueueStatusResult["OPEN"] = "open";
QueueStatusResult["CLOSED"] = "closed";
QueueStatusResult["OPEN_WITHOUT_AGENTS"] = "open-without-agents";
})(QueueStatusResult || (QueueStatusResult = {}));
export function conditionalQueueStatus({ queue_id, check_available_agents, }) {
return __awaiter(this, void 0, void 0, function* () {
const data = yield getQueueAvailability(queue_id, check_available_agents);
if (check_available_agents && data.open && data.available_agents === 0) {
return QueueStatusResult.OPEN_WITHOUT_AGENTS;
}
return data.open ? QueueStatusResult.OPEN : QueueStatusResult.CLOSED;
});
}
export class HubtypeQueuesApi {
constructor(queueId, checkAvailableAgents) {
this.queueId = queueId;
this.checkAvailableAgents = checkAvailableAgents || false;
}
getAvailability() {
return __awaiter(this, void 0, void 0, function* () {
const response = yield axios.get(`${HUBTYPE_API_URL}/external/v1/queues/${this.queueId}/availability/`,
// TODO: Make it configurable in the future
{
params: {
check_queue_schedule: true,
check_waiting_cases: false,
check_available_agents: this.checkAvailableAgents,
},
});
return response.data;
});
}
}
export function getQueueAvailability(queueId, checkAvailableAgents = false) {
return __awaiter(this, void 0, void 0, function* () {
const queuesApi = new HubtypeQueuesApi(queueId, checkAvailableAgents);
return yield queuesApi.getAvailability();
});
}
//# sourceMappingURL=conditional-queue-status.js.map