"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 chatId; var result = await messageModel.getAllChats(client); // console.log(result["DATA"]); if (result["STATUS"] == 1) { for (var i = 0; i < result["DATA"].length; i++) { var chatsExist = await strapi.api["chats"].services[ "chats" ].findOne({ session_key: sessionsId, phoneNumber: result["DATA"][i]["id"].user, }); if (!chatsExist) { //check again with last active session chatsExist = await strapi.api["chats"].services[ "chats" ].findOne({ last_sessionId: client.info.me._serialized, phoneNumber: result["DATA"][i]["id"].user, }); if (!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, }); } else { console.log("updating old chat"); let id = chatsExist.id; strapi.query("chats").update( { id }, { session_key: sessionsId, } ); } } 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"] }; } } // console.log("done populating chats"); } catch (e) { console.log("error", e.message || e); // return { STATUS: 0, DATA: e.message || e }; } }; module.exports = refreshChat;