emMessages.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import { EaseSDK, EMClient } from '../index';
  2. import { MESSAGE_TYPE } from '../constant';
  3. import { getEMKey } from '@/EaseIM/utils';
  4. import store from '@/store';
  5. const emMessages = () => {
  6. const reportMessages = (params) => {
  7. const { reportType, reportReason, messageId } = params;
  8. return new Promise((resolve, reject) => {
  9. EMClient.reportMessage({
  10. reportType: reportType, // 举报类型
  11. reportReason: reportReason, // 举报原因。
  12. messageId: messageId, // 上报消息id
  13. })
  14. .then((res) => {
  15. resolve(res);
  16. })
  17. .catch((error) => {
  18. reject(error);
  19. });
  20. });
  21. };
  22. const fetchHistoryMessagesFromServer = (params) => {
  23. const { targetId, cursor, chatType } = params;
  24. return new Promise((resolve, reject) => {
  25. let options = {
  26. // 对方的用户 ID 或者群组 ID 或聊天室 ID。
  27. targetId: targetId,
  28. // 每页期望获取的消息条数。取值范围为 [1,50],默认值为 20。
  29. pageSize: 20,
  30. // 查询的起始消息 ID。若该参数设置为 `-1`、`null` 或空字符串,从最新消息开始。
  31. cursor: cursor || -1,
  32. // 会话类型:(默认) `singleChat`:单聊;`groupChat`:群聊。
  33. chatType: chatType,
  34. // 消息搜索方向:(默认)`up`:按服务器收到消息的时间的逆序获取;`down`:按服务器收到消息的时间的正序获取。
  35. searchDirection: 'up',
  36. };
  37. EMClient.getHistoryMessages(options)
  38. .then((res) => {
  39. resolve(res);
  40. })
  41. .catch((e) => {
  42. // 获取失败。
  43. reject(e);
  44. });
  45. });
  46. };
  47. const sendDisplayMessages = (messageBody) => {
  48. messageBody.from = EMClient.user;
  49. const key = getEMKey(
  50. EMClient.user,
  51. messageBody.from,
  52. messageBody.to,
  53. messageBody.chatType
  54. );
  55. console.log('>>>>要发送的消息key', key);
  56. return new Promise((resolve, reject) => {
  57. const message = EaseSDK.message.create(messageBody);
  58. console.log('>>>>构建的消息msg', message);
  59. EMClient.send(message)
  60. .then((res) => {
  61. const { message: resMessage } = res;
  62. // message.id = res.serverMsgId;
  63. console.log('>>>>>res更新后的消息体', res);
  64. store.commit('UPDATE_MESSAGE_COLLECTION', {
  65. key,
  66. message: resMessage,
  67. });
  68. resolve(res);
  69. // store.commit('UPDATE_CONVERSATION_ITEM', {
  70. // conversationId: messageBody.to,
  71. // lastMessage: message,
  72. // });
  73. })
  74. .catch((err) => {
  75. reject(err);
  76. console.log('>>>>>发送失败', err);
  77. });
  78. });
  79. };
  80. const sendCommandMessages = (messageBody) => {
  81. return new Promise((resolve, reject) => {
  82. console.log('messageBody', messageBody);
  83. const message = EaseSDK.message.create(messageBody);
  84. console.log('>>>>构建的命令消息msg', message);
  85. EMClient.send(message)
  86. .then((res) => {
  87. resolve(res);
  88. })
  89. .catch((e) => {
  90. reject(e);
  91. });
  92. });
  93. };
  94. //修改展示类消息【暂只支持文本消息】
  95. const modifyDisplayMessages = (messageBody) => {
  96. const { msg, to, id, chatType } = messageBody;
  97. const textMessage = EaseSDK.message.create({
  98. type: MESSAGE_TYPE.TEXT,
  99. msg: msg,
  100. to: to,
  101. chatType: chatType,
  102. });
  103. const key = getEMKey(
  104. EMClient.user,
  105. messageBody.from || EMClient.user,
  106. messageBody.to,
  107. messageBody.chatType
  108. );
  109. return new Promise((resolve, reject) => {
  110. EMClient.modifyMessage({ messageId: id, modifiedMessage: textMessage })
  111. .then((res) => {
  112. console.log(res.message);
  113. store.commit('MODIFY_MESSAGE_FROM_COLLECTION', {
  114. key: key,
  115. mid: res.message.id,
  116. message: { ...res.message },
  117. });
  118. resolve(res);
  119. })
  120. .catch((e) => {
  121. console.log(e);
  122. reject(e);
  123. });
  124. });
  125. };
  126. return {
  127. reportMessages,
  128. fetchHistoryMessagesFromServer,
  129. sendDisplayMessages,
  130. sendCommandMessages,
  131. modifyDisplayMessages,
  132. };
  133. };
  134. export default emMessages;