wa_strapi
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

75 行
2.0 KiB

  1. "use strict";
  2. const messageModel = require("../model/messageModel");
  3. const moment = require("moment");
  4. const refreshMessage = require("./refreshMessage");
  5. const refreshChat = async function (client, sessionsId) {
  6. try {
  7. if (client && sessionsId) {
  8. var oldChats = await strapi.api["chats"].services["chats"].find({
  9. last_sessionId: client.info.me._serialized,
  10. });
  11. oldChats = oldChats.filter(
  12. (item) => Object.keys(item.session_key).length === 0
  13. );
  14. for (var i = 0; i < oldChats.length; i++) {
  15. var oldChatId = oldChats[i].id;
  16. // console.log(oldChats[i]);
  17. await strapi.query("chats").update(
  18. { id: oldChatId },
  19. {
  20. session_key: sessionsId,
  21. }
  22. );
  23. console.log(i);
  24. }
  25. var chatId;
  26. var result = await messageModel.getAllChats(client);
  27. if (result["STATUS"] == 1) {
  28. for (var i = 0; i < result["DATA"].length; i++) {
  29. console.log("next", i);
  30. var chatsExist = await strapi.api["chats"].services[
  31. "chats"
  32. ].findOne({
  33. session_key: sessionsId,
  34. phoneNumber: result["DATA"][i]["id"].user,
  35. });
  36. if (!chatsExist) {
  37. chatsExist = await strapi.query("chats").create({
  38. session_key: sessionsId,
  39. name: result["DATA"][i]["name"],
  40. unreadCount: result["DATA"][i]["unreadCount"],
  41. timestamp: moment
  42. .unix(result["DATA"][i]["timestamp"])
  43. .toDate(),
  44. chatId: result["DATA"][i]["id"],
  45. phoneNumber: result["DATA"][i]["id"].user,
  46. last_sessionId: client.info.me._serialized,
  47. });
  48. }
  49. var messages = await messageModel.getMessagebyId(
  50. client,
  51. result["DATA"][i]["id"]
  52. );
  53. if (messages["STATUS"] == 1) {
  54. for (var j = 0; j < messages["DATA"].length; j++) {
  55. await refreshMessage(
  56. messages["DATA"][j],
  57. chatsExist
  58. );
  59. }
  60. }
  61. }
  62. } else {
  63. throw { message: result["DATA"] };
  64. }
  65. }
  66. } catch (e) {
  67. console.log("error", e.message || e);
  68. // return { STATUS: 0, DATA: e.message || e };
  69. }
  70. };
  71. module.exports = refreshChat;