"use strict"; const messageModel = require("../model/messageModel"); const moment = require("moment"); const refreshMessage = require("./refreshMessage"); const refreshChat = async function (client, sessionsId) { try { if (client && sessionsId) { var oldChats = await strapi.api["chats"].services["chats"].find({ last_sessionId: client.info.me._serialized, }); oldChats = oldChats.filter( (item) => Object.keys(item.session_key).length === 0 ); for (var i = 0; i < oldChats.length; i++) { var oldChatId = oldChats[i].id; // console.log(oldChats[i]); await strapi.query("chats").update( { id: oldChatId }, { session_key: sessionsId, } ); console.log(i); } var chatId; var result = await messageModel.getAllChats(client); if (result["STATUS"] == 1) { for (var i = 0; i < result["DATA"].length; i++) { console.log("next", i); var chatsExist = await strapi.api["chats"].services[ "chats" ].findOne({ session_key: sessionsId, phoneNumber: result["DATA"][i]["id"].user, }); if (!chatsExist) { chatsExist = await strapi.query("chats").create({ session_key: sessionsId, name: result["DATA"][i]["name"], unreadCount: result["DATA"][i]["unreadCount"], timestamp: moment .unix(result["DATA"][i]["timestamp"]) .toDate(), chatId: result["DATA"][i]["id"], phoneNumber: result["DATA"][i]["id"].user, last_sessionId: client.info.me._serialized, }); } var messages = await messageModel.getMessagebyId( client, result["DATA"][i]["id"] ); if (messages["STATUS"] == 1) { for (var j = 0; j < messages["DATA"].length; j++) { await refreshMessage( messages["DATA"][j], chatsExist ); } } } } else { throw { message: result["DATA"] }; } } } catch (e) { console.log("error", e.message || e); // return { STATUS: 0, DATA: e.message || e }; } }; module.exports = refreshChat;