@botonic/plugin-flow-builder
Version:
Use Flow Builder to show your contents
51 lines • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getQueueAvailability = exports.HubtypeQueuesApi = exports.conditionalQueueStatus = void 0;
const tslib_1 = require("tslib");
const axios_1 = tslib_1.__importDefault(require("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 = {}));
function conditionalQueueStatus({ queue_id, check_available_agents, }) {
return tslib_1.__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;
});
}
exports.conditionalQueueStatus = conditionalQueueStatus;
class HubtypeQueuesApi {
constructor(queueId, checkAvailableAgents) {
this.queueId = queueId;
this.checkAvailableAgents = checkAvailableAgents || false;
}
getAvailability() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield axios_1.default.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;
});
}
}
exports.HubtypeQueuesApi = HubtypeQueuesApi;
function getQueueAvailability(queueId, checkAvailableAgents = false) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const queuesApi = new HubtypeQueuesApi(queueId, checkAvailableAgents);
return yield queuesApi.getAvailability();
});
}
exports.getQueueAvailability = getQueueAvailability;
//# sourceMappingURL=conditional-queue-status.js.map