emGroups.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. import { EMClient } from '@/EaseIM';
  2. const emGroups = () => {
  3. const fetchJoinedGroupListFromServer = (pageNum = 0, pageSize = 20) => {
  4. return new Promise((resolve, reject) => {
  5. console.log('>>>>开始获取加入的群组列表');
  6. EMClient.getJoinedGroups({
  7. pageNum,
  8. pageSize,
  9. needAffiliations: true,
  10. needRole: true,
  11. })
  12. .then((res) => {
  13. resolve(res);
  14. })
  15. .catch((error) => {
  16. reject(error);
  17. });
  18. });
  19. };
  20. const createNewGroup = (params) => {
  21. return new Promise((resolve, reject) => {
  22. console.log('>>>>开始创建群组');
  23. EMClient.createGroup({ data: { ...params } })
  24. .then((res) => {
  25. resolve(res.data);
  26. })
  27. .catch((error) => {
  28. reject(error);
  29. });
  30. });
  31. };
  32. const getGroupInfosFromServer = (groupId) => {
  33. return new Promise((resolve, reject) => {
  34. EMClient.getGroupInfo({
  35. groupId,
  36. })
  37. .then((res) => {
  38. resolve(res.data);
  39. })
  40. .catch((error) => {
  41. reject(error);
  42. });
  43. });
  44. };
  45. const getGroupMembersFromServer = (groupId) => {
  46. //暂且仅取前100个群成员
  47. const pageNum = 1,
  48. pageSize = 100;
  49. return new Promise((resolve, reject) => {
  50. EMClient.listGroupMembers({
  51. pageNum: pageNum,
  52. pageSize: pageSize,
  53. groupId,
  54. })
  55. .then((res) => {
  56. resolve(res.data);
  57. })
  58. .catch((error) => {
  59. reject(error);
  60. });
  61. });
  62. };
  63. const inviteUsersToGroup = (groupId, memberIdList) => {
  64. return new Promise((resolve, reject) => {
  65. EMClient.inviteUsersToGroup({
  66. groupId: groupId,
  67. users: memberIdList,
  68. })
  69. .then((res) => {
  70. resolve(res.data);
  71. })
  72. .catch((error) => {
  73. reject(error);
  74. });
  75. });
  76. };
  77. const leaveGroupFromServer = (groupId) => {
  78. return new Promise((resolve, reject) => {
  79. EMClient.leaveGroup({ groupId })
  80. .then((res) => {
  81. resolve(res.data);
  82. })
  83. .catch((error) => {
  84. reject(error);
  85. });
  86. });
  87. };
  88. const destroyGroupFromServer = (groupId) => {
  89. return new Promise((resolve, reject) => {
  90. EMClient.destroyGroup({ groupId })
  91. .then((res) => {
  92. resolve(res.data);
  93. })
  94. .catch((error) => {
  95. reject(error);
  96. });
  97. });
  98. };
  99. const acceptGroupInvite = (invitee, groupId) => {
  100. return new Promise((resolve, reject) => {
  101. EMClient.acceptGroupInvite({
  102. groupId: groupId,
  103. invitee: invitee,
  104. })
  105. .then((res) => {
  106. resolve(res.data);
  107. })
  108. .catch((error) => {
  109. reject(error);
  110. });
  111. });
  112. };
  113. const rejectGroupInvite = (invitee, groupId) => {
  114. return new Promise((resolve, reject) => {
  115. EMClient.rejectGroupInvite({
  116. groupId: groupId,
  117. invitee: invitee,
  118. })
  119. .then((res) => {
  120. resolve(res.data);
  121. })
  122. .catch((error) => {
  123. reject(error);
  124. });
  125. });
  126. };
  127. const joinPublicGroup = (groupId) => {
  128. return new Promise((resolve, reject) => {
  129. EMClient.joinGroup({ groupId, message: 'I want to join the group' })
  130. .then((res) => {
  131. resolve(res.data);
  132. })
  133. .catch((error) => {
  134. reject(error);
  135. });
  136. });
  137. };
  138. const modifyGroupInfo = (groupId, params) => {
  139. return new Promise((resolve, reject) => {
  140. EMClient.modifyGroup({
  141. groupId,
  142. ...params,
  143. })
  144. .then((res) => {
  145. resolve(res);
  146. })
  147. .catch((error) => {
  148. reject(error);
  149. });
  150. });
  151. };
  152. const removeGroupMembers = (groupId, users) => {
  153. return new Promise((resolve, reject) => {
  154. EMClient.removeGroupMembers({
  155. groupId,
  156. users,
  157. })
  158. .then((res) => {
  159. resolve(res.data);
  160. })
  161. .catch((error) => {
  162. reject(error);
  163. });
  164. });
  165. };
  166. const changeGroupOwner = (groupId, newOwner) => {
  167. return new Promise((resolve, reject) => {
  168. EMClient.changeGroupOwner({ groupId, newOwner })
  169. .then((res) => {
  170. resolve(res);
  171. })
  172. .catch((error) => {
  173. reject(error);
  174. });
  175. });
  176. };
  177. //分页获取群组列表
  178. const listGroupMembersFromServer = (params) => {
  179. const { pageNum = 1, pageSize = 100, groupId } = params;
  180. return new Promise((resolve, reject) => {
  181. EMClient.listGroupMembers({
  182. ...params,
  183. })
  184. .then((res) => {
  185. resolve(res.data);
  186. })
  187. .catch((error) => {
  188. reject(error);
  189. });
  190. });
  191. };
  192. /* 群组属性相关 */
  193. //获取单个用户属性
  194. const getSingleGroupAttributesFromServer = (groupId, userId) => {
  195. let options = {
  196. groupId,
  197. userId,
  198. };
  199. return new Promise((resolve, reject) => {
  200. EMClient.getGroupMemberAttributes({ ...options })
  201. .then((res) => {
  202. resolve(res);
  203. })
  204. .catch((error) => {
  205. reject(error);
  206. });
  207. });
  208. };
  209. //设置单个群组属性
  210. const setSingleGroupAttributesFromServer = (params) => {
  211. const { groupId, userId, memberAttributes } = params;
  212. return new Promise((resolve, reject) => {
  213. EMClient.setGroupMemberAttributes({
  214. groupId,
  215. userId,
  216. memberAttributes: { ...memberAttributes },
  217. })
  218. .then((res) => {
  219. resolve(res);
  220. })
  221. .catch((error) => {
  222. reject(error);
  223. });
  224. });
  225. };
  226. //根据key获取多个群组成员自定义属性
  227. const getMultiGroupAttributesFromServer = (params) => {
  228. const { groupId, userIds, keys } = params;
  229. return new Promise((resolve, reject) => {
  230. EMClient.getGroupMembersAttributes({
  231. groupId,
  232. userIds,
  233. keys,
  234. })
  235. .then((res) => {
  236. resolve(res.data);
  237. })
  238. .catch((error) => {
  239. reject(error);
  240. });
  241. });
  242. };
  243. return {
  244. fetchJoinedGroupListFromServer,
  245. createNewGroup,
  246. getGroupInfosFromServer,
  247. getGroupMembersFromServer,
  248. inviteUsersToGroup,
  249. leaveGroupFromServer,
  250. destroyGroupFromServer,
  251. acceptGroupInvite,
  252. rejectGroupInvite,
  253. joinPublicGroup,
  254. modifyGroupInfo,
  255. changeGroupOwner,
  256. removeGroupMembers,
  257. listGroupMembersFromServer,
  258. getSingleGroupAttributesFromServer,
  259. getMultiGroupAttributesFromServer,
  260. setSingleGroupAttributesFromServer,
  261. };
  262. };
  263. export default emGroups;