|
- "use strict";
- const messageModel = require("../../model/messageModel");
- const refreshChat = require("../../util/refreshChat");
- const sendQueueMessage = require("../../util/sendQueueMessage");
- const { parseMultipartData, sanitizeEntity } = require("strapi-utils");
- /**
- * Cron config that gives you an opportunity
- * to run scheduled jobs.
- *
- * The cron format consists of:
- * [SECOND (optional)] [MINUTE] [HOUR] [DAY OF MONTH] [MONTH OF YEAR] [DAY OF WEEK]
- *
- * See more details here: https://strapi.io/documentation/developer-docs/latest/concepts/configurations.html#cron-tasks
- */
- let clients = {};
- let taskClientLoading = false;
- let taskSendingMessage = false;
-
- module.exports = {
- "*/10 * * * * *": async () => {
- if (!taskClientLoading) {
- // console.log("refresh cients");
- const session_key = await strapi.api["session-data"].services[
- "session-data"
- ].find({
- _sort: "phonenumber:desc",
- });
- if (session_key.length == 0) taskClientLoading = false;
- else {
- for (const i of session_key) {
- if (!Object.keys(clients).includes(`${i["id"]}`)) {
- taskClientLoading = true;
- clients[i["id"]] = null;
- var data = await messageModel
- .asyncLoadClient(i)
- .catch((message) => {
- console.log(`error loading clients ${message}`);
- });
- if (data["TYPE"] == "READY") {
- clients[i["id"]] = data["DATA"];
- } else if (data["TYPE"] == "AUTH_FAILURE") {
- let id = i["id"];
- await strapi.api["session-data"].services[
- "session-data"
- ].delete({ id });
- // const messages = await strapi.api.message.services.message.find(
- // {
- // _sort: "session_datum_key:desc",
- // state: "QUEUE",
- // session_datum_key: i["id"],
- // }
- // );
- // for (const message of messages) {
- // await strapi.api.message.services.message.update(
- // { id: message.id },
- // {
- // state: "ERROR",
- // keterangan: "sessions no longer valid",
- // }
- // );
- // }
- }
- }
- }
- taskClientLoading = false;
- }
- }
- },
- "*/3 * * * * *": async () => {
- if (!taskSendingMessage && Object.keys(clients).length != 0) {
- // console.log("auto send");
- taskSendingMessage = true;
- if (Object.keys(clients).length == 0) taskSendingMessage = false;
- else {
- for (const i of Object.keys(clients)) {
- var sessionsValid = await strapi.api[
- "session-data"
- ].services["session-data"].sessionCheck(parseInt(i));
- if (!sessionsValid) {
- delete clients[parseInt(i)];
- } else {
- await sendQueueMessage(clients[i], parseInt(i));
- await refreshChat(clients[i], parseInt(i));
- }
- }
- taskSendingMessage = false;
- }
- }
- },
- };
|