@aochuang/client-sdk 1.0.358 → 1.0.359

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/components/index.js +1 -6
  2. package/components/session-select/session-select-item.vue +9 -8
  3. package/components/wechat-chat-control/image/image.vue +8 -13
  4. package/components/wechat-chat-control/url/url-miniprogram.vue +5 -1
  5. package/components/wework-chat-control/channel-live/channel-live.vue +2 -7
  6. package/components/wework-chat-control/company-card/company-card.vue +1 -1
  7. package/components/wework-chat-control/custom-expression/custom-expression.vue +1 -2
  8. package/components/wework-chat-control/file-url/file-url.vue +16 -34
  9. package/components/wework-chat-control/image/image.vue +2 -137
  10. package/components/wework-chat-control/index.js +7 -10
  11. package/components/wework-chat-control/location/location.vue +3 -3
  12. package/components/wework-chat-control/text/text.vue +144 -24
  13. package/components/wework-chat-control/url/url-miniprogram.vue +7 -6
  14. package/components/wework-chat-control/url/url.vue +2 -26
  15. package/components/wework-chat-control/util.js +19 -22
  16. package/components/wework-chat-control/video/video.vue +2 -10
  17. package/components/wework-chat-control/voice/voice.vue +4 -59
  18. package/components/wework-chat-panel/chat-panel-controls/company-card/company-card.vue +35 -0
  19. package/components/wework-chat-panel/chat-panel-controls/expression/expression.vue +36 -0
  20. package/components/wework-chat-panel/chat-panel-controls/file-url/file-url.vue +35 -0
  21. package/components/wework-chat-panel/chat-panel-controls/image/image.vue +36 -0
  22. package/components/wework-chat-panel/chat-panel-controls/index.js +35 -0
  23. package/components/wework-chat-panel/chat-panel-controls/jx-sys-text/jx-sys-text.vue +28 -0
  24. package/components/wework-chat-panel/chat-panel-controls/link/link.vue +35 -0
  25. package/components/wework-chat-panel/chat-panel-controls/location/location.vue +35 -0
  26. package/components/wework-chat-panel/chat-panel-controls/text/text.vue +43 -0
  27. package/components/wework-chat-panel/chat-panel-controls/unkonw/unkonw.vue +39 -0
  28. package/components/wework-chat-panel/chat-panel-controls/video/video.vue +37 -0
  29. package/components/wework-chat-panel/chat-panel-controls/voice/voice.vue +35 -0
  30. package/components/wework-chat-panel/chat-panel-item.vue +28 -38
  31. package/components/wework-chat-panel/chat-panel.vue +13 -96
  32. package/package.json +3 -10
  33. package/services/client-chat/client-chat-wechat/client-chat-session.js +196 -92
  34. package/services/client-chat/client-chat-wechat/client-chat.js +20 -33
  35. package/services/client-chat/client-chat-wework/client-chat-concats.js +17 -81
  36. package/services/client-chat/client-chat-wework/client-chat-message.js +5 -45
  37. package/services/client-chat/client-chat-wework/client-chat-session.js +2 -50
  38. package/services/client-chat/client-chat-wework/client-chat-socket.js +1 -9
  39. package/services/client-chat/client-chat-wework/client-chat.js +11 -281
  40. package/services/client-chat/client-chat-wework/utils.js +5 -5
  41. package/uni-common/account-portray/account-portray.vue +51 -0
  42. package/uni-common/account-select/account-select-item.vue +172 -0
  43. package/uni-common/account-select/account-select.vue +252 -0
  44. package/uni-common/all-friend-avatar/all-friend-avatar.vue +49 -0
  45. package/uni-common/friend-avatar/default.svg +1 -0
  46. package/uni-common/friend-avatar/friend-avatar.vue +27 -0
  47. package/uni-common/friend-avatar/index.js +3 -0
  48. package/uni-common/friend-loader/friend-loader.vue +53 -0
  49. package/uni-common/friend-portray/friend-portray.vue +56 -0
  50. package/uni-common/group-avatar/default.svg +1 -0
  51. package/uni-common/group-avatar/group-avatar.vue +18 -0
  52. package/uni-common/group-avatar/index.js +3 -0
  53. package/uni-common/room-avatar/default.svg +6 -0
  54. package/uni-common/room-avatar/index.js +3 -0
  55. package/uni-common/room-avatar/room-avatar.vue +27 -0
  56. package/uni-common/room-loader/room-loader.vue +53 -0
  57. package/uni-common/room-portray/room-portray.vue +56 -0
  58. package/uni-components/chat-control/calling/calling.vue +91 -0
  59. package/uni-components/chat-control/calling/phone-fill.svg +1 -0
  60. package/uni-components/chat-control/calling/vidicon-fill.svg +1 -0
  61. package/uni-components/chat-control/channel-video/channel-video.vue +89 -0
  62. package/uni-components/chat-control/channel-video-card/channel-video-card.vue +105 -0
  63. package/uni-components/chat-control/channel-video-live/channel-video-live.vue +92 -0
  64. package/uni-components/chat-control/chat-control-config-item/chat-control-config-item.vue +20 -0
  65. package/uni-components/chat-control/chat-control-config-item/index.js +3 -0
  66. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-app.vue +25 -0
  67. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-h5.vue +21 -0
  68. package/{components/wework-chat-control/wework-chat-control-config.vue → uni-components/chat-control/chat-control-config.vue} +13 -16
  69. package/uni-components/chat-control/chat-control.vue +218 -0
  70. package/uni-components/chat-control/company-card/company-card.vue +123 -0
  71. package/uni-components/chat-control/const.js +28 -0
  72. package/uni-components/chat-control/expression/expression.vue +41 -0
  73. package/uni-components/chat-control/image/image.vue +68 -0
  74. package/uni-components/chat-control/index.js +89 -0
  75. package/uni-components/chat-control/location/location.vue +110 -0
  76. package/uni-components/chat-control/member-change/member-change.vue +32 -0
  77. package/uni-components/chat-control/quote-message/quote-message.vue +216 -0
  78. package/uni-components/chat-control/real-time-position/real-time-position.vue +62 -0
  79. package/uni-components/chat-control/redpacket/red-envelope.svg +1 -0
  80. package/uni-components/chat-control/redpacket/redpacket.vue +75 -0
  81. package/uni-components/chat-control/share-card/share-card.vue +101 -0
  82. package/uni-components/chat-control/system/system.vue +69 -0
  83. package/uni-components/chat-control/system-batch-message/system-batch-message.vue +30 -0
  84. package/uni-components/chat-control/system-text/system-text.vue +32 -0
  85. package/uni-components/chat-control/text/text.vue +67 -0
  86. package/uni-components/chat-control/text-with-at/text-with-at.vue +51 -0
  87. package/uni-components/chat-control/transfer/red-transfer.svg +1 -0
  88. package/uni-components/chat-control/transfer/transfer.vue +80 -0
  89. package/uni-components/chat-control/unkonw/unkonw.vue +37 -0
  90. package/uni-components/chat-control/url/icons/file-excel-line.svg +1 -0
  91. package/uni-components/chat-control/url/icons/file-info-line.svg +1 -0
  92. package/uni-components/chat-control/url/icons/file-music-line.svg +1 -0
  93. package/uni-components/chat-control/url/icons/file-pdf-line.svg +1 -0
  94. package/uni-components/chat-control/url/icons/file-ppt-line.svg +1 -0
  95. package/uni-components/chat-control/url/icons/file-settings-line.svg +1 -0
  96. package/uni-components/chat-control/url/icons/file-text-line.svg +1 -0
  97. package/uni-components/chat-control/url/icons/file-unknow-line.svg +1 -0
  98. package/uni-components/chat-control/url/icons/file-word-line.svg +1 -0
  99. package/uni-components/chat-control/url/icons/file-zip-line.svg +1 -0
  100. package/uni-components/chat-control/url/icons/index.js +24 -0
  101. package/uni-components/chat-control/url/miniprogram.svg +1 -0
  102. package/uni-components/chat-control/url/url-miniprogram.vue +116 -0
  103. package/uni-components/chat-control/url/url.vue +306 -0
  104. package/uni-components/chat-control/url-new/icons/file-excel-line.svg +1 -0
  105. package/uni-components/chat-control/url-new/icons/file-info-line.svg +1 -0
  106. package/uni-components/chat-control/url-new/icons/file-music-line.svg +1 -0
  107. package/uni-components/chat-control/url-new/icons/file-pdf-line.svg +1 -0
  108. package/uni-components/chat-control/url-new/icons/file-ppt-line.svg +1 -0
  109. package/uni-components/chat-control/url-new/icons/file-settings-line.svg +1 -0
  110. package/uni-components/chat-control/url-new/icons/file-text-line.svg +1 -0
  111. package/uni-components/chat-control/url-new/icons/file-unknow-line.svg +1 -0
  112. package/uni-components/chat-control/url-new/icons/file-word-line.svg +1 -0
  113. package/uni-components/chat-control/url-new/icons/file-zip-line.svg +1 -0
  114. package/uni-components/chat-control/url-new/icons/index.js +24 -0
  115. package/uni-components/chat-control/url-new/url-new.vue +110 -0
  116. package/uni-components/chat-control/utils.js +12 -0
  117. package/uni-components/chat-control/video/video.vue +156 -0
  118. package/uni-components/chat-control/voice/voice.vue +166 -0
  119. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-collect.vue +84 -0
  120. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-system.vue +28 -0
  121. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet.vue +85 -0
  122. package/uni-components/chat-editor/chat-editor-func/chat-editor-func.vue +157 -0
  123. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at-panel.vue +158 -0
  124. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at.vue +61 -0
  125. package/uni-components/chat-editor/chat-editor-func-button/chat-editor-func-button.vue +58 -0
  126. package/uni-components/chat-editor/chat-editor-func-file/chat-editor-func-file.vue +54 -0
  127. package/uni-components/chat-editor/chat-editor-func-image/chat-editor-func-image.vue +42 -0
  128. package/uni-components/chat-editor/chat-editor-func-video/chat-editor-func-video.vue +42 -0
  129. package/uni-components/chat-editor/chat-editor-func-voice/chat-editor-func-voice.vue +25 -0
  130. package/uni-components/chat-editor/chat-editor-message-send/chat-editor-message-send.vue +158 -0
  131. package/uni-components/chat-editor/chat-editor-quote/chat-editor-quote.vue +75 -0
  132. package/uni-components/chat-editor/chat-editor.vue +257 -0
  133. package/uni-components/chat-editor/index.js +10 -0
  134. package/uni-components/chat-editor/util.js +65 -0
  135. package/uni-components/chat-panel/chat-panel-chats-box.vue +238 -0
  136. package/uni-components/chat-panel/chat-panel-chats-forward/chat-panel-chats-forward.vue +273 -0
  137. package/uni-components/chat-panel/chat-panel-chats-item.vue +578 -0
  138. package/uni-components/chat-panel/chat-panel-chats-status/chat-panel-chats-status.vue +71 -0
  139. package/uni-components/chat-panel/chat-panel-chats.vue +368 -0
  140. package/uni-components/chat-panel/chat-panel.vue +227 -0
  141. package/uni-components/contacts-group-select/contacts-group-select-item.vue +85 -0
  142. package/uni-components/contacts-group-select/contacts-group-select-panel.vue +119 -0
  143. package/uni-components/contacts-group-select/contacts-group-select.vue +150 -0
  144. package/components/wework-chat-control/channel-card/channel-card.vue +0 -144
  145. package/components/wework-chat-control/metting/enterprise-wechat.png +0 -0
  146. package/components/wework-chat-control/metting/meeting-video.svg +0 -4
  147. package/components/wework-chat-control/metting/metting.vue +0 -181
  148. package/components/wework-chat-control/text/text-default.vue +0 -99
  149. package/components/wework-chat-control/text/text-quote.vue +0 -105
  150. package/components/wework-chat-control/url/url-channel-live.vue +0 -53
  151. package/components/wework-chat-control/wework-chat-control-config-item.vue +0 -24
  152. package/components/wework-chat-control/wework-chat-control-config-msg.vue +0 -25
  153. package/components/wework-chat-panel/chat-panel-chat-status/chat-panel-chat-status.vue +0 -73
@@ -2,7 +2,6 @@ import Vue from 'vue'
2
2
  import Event from '../../../utils/event.js'
3
3
  import { unique } from '../../../utils/string.js'
4
4
  import { formatDate } from '../../../utils/date.js'
5
- import { createPromise } from '../../../utils/util'
6
5
 
7
6
  export default class ClientChatMessage {
8
7
 
@@ -23,8 +22,6 @@ export default class ClientChatMessage {
23
22
  })
24
23
 
25
24
  messageMap = {}
26
- tempMessageMap = {}
27
- checkMessageSendResultTaskList = []
28
25
 
29
26
  get messageData () {
30
27
  return this.data.messageData
@@ -36,18 +33,15 @@ export default class ClientChatMessage {
36
33
  queryMethod: null,
37
34
  sortField: null, // 排序的字段,必须是唯一的,例如时间
38
35
  groupField: null, // 分组的字段
39
- checkMessageSendResultMethod: null,
40
36
  onAddMessageSuccess: null // 新增消息成功回调事件
41
37
  }, options)
42
38
  if (!options.clientChat) {
43
39
  throw new Error('必须将clientChat传递过来')
44
40
  }
45
- if (!options.checkMessageSendResultMethod) throw new Error('缺少checkMessageSendResultMethod配置')
46
41
  this.queryMethod = options.queryMethod
47
42
  this.clientChat = options.clientChat
48
43
  this.groupField = options.groupField
49
44
  this.sortField = options.sortField
50
- this.checkMessageSendResultMethod = options.checkMessageSendResultMethod
51
45
  this.onAddMessageSuccess = options.onAddMessageSuccess
52
46
  this.event = new Event()
53
47
  }
@@ -80,7 +74,7 @@ export default class ClientChatMessage {
80
74
  * "msgSvrId": "4319123759514541049",
81
75
  * "msgType": 1,
82
76
  * "origin": "0",
83
- * "status": 0,
77
+ * "sendStatus": 0,
84
78
  * "tenantId": "1761952223049924608",
85
79
  * "wechatAccountId": "ad9d9ae2a8be4f27311312cdd4af3549dc8427ef",
86
80
  * "wechatFriendId": "2089efcc7f8f40b00b7f05fa4c6dfd3bb642774d",
@@ -95,10 +89,6 @@ export default class ClientChatMessage {
95
89
  if (this.messageMap[data.id]) {
96
90
  return
97
91
  }
98
- if (this.tempMessageMap[data.id]) {
99
- Object.assign(data, this.tempMessageMap[data.id])
100
- delete this.tempMessageMap[data.id]
101
- }
102
92
  const groupField = data[this.groupField]
103
93
  if (!this.data.messageData[groupField]) {
104
94
  Vue.set(this.data.messageData, groupField, {})
@@ -115,7 +105,6 @@ export default class ClientChatMessage {
115
105
  }
116
106
  this.data.messageData[groupField][sortFields.day][sortFields.milliseconds].push(data)
117
107
  this.messageMap[data.id] = data
118
- if (data.isSend && data.status === 1 && !data._temp) this.addCheckMessageSendResultTask(data)
119
108
  if (fireEvent !== false) {
120
109
  this.event && this.event.emit('add-message', {
121
110
  data
@@ -130,7 +119,6 @@ export default class ClientChatMessage {
130
119
  if (!id) {
131
120
  return
132
121
  }
133
- this.removeCheckMessageSendResultTask(id)
134
122
  const message = this.messageMap[id]
135
123
  if (!message) {
136
124
  return
@@ -166,7 +154,6 @@ export default class ClientChatMessage {
166
154
  updateMessage (id, props) {
167
155
  const message = this.getMessage(id)
168
156
  if (!message) {
169
- this.tempMessageMap[id] = props
170
157
  return
171
158
  }
172
159
  if (!props) {
@@ -228,11 +215,11 @@ export default class ClientChatMessage {
228
215
  }, data, {
229
216
  cmdType: 'CmdQwSendMessage'
230
217
  })).then(({ data }) => {
231
- if (data.status === 0) {
218
+ if (data.sendStatus === 0) {
232
219
  // 发送成功
233
- } else if (data.status === 2) {
220
+ } else if (data.sendStatus === 2) {
234
221
  // 发送失败
235
- } else if (data.status === 1) {
222
+ } else if (data.sendStatus === 1) {
236
223
  // 发送中
237
224
  }
238
225
  // 如果返回的是对象,证明发送成功了
@@ -286,35 +273,8 @@ export default class ClientChatMessage {
286
273
  this.clearMessage()
287
274
  return this.loadMessageData(params)
288
275
  }
289
-
290
- addCheckMessageSendResultTask (message) {
291
- if (this.checkMessageSendResultTaskList.some(v => v.id === message.id)) return
292
- let timer
293
- const task = { id: message.id, promise: createPromise(), check: () => {
294
- if (message.status !== 1) return task.promise.resolve()
295
- if (Date.now() - (message.createTime || message.sendTime) > 5 * 60 * 1000) return task.promise.resolve({status: 3, resultMsg: '消息发送超时'})
296
- timer = setTimeout(() => {
297
- Promise.resolve(this.checkMessageSendResultMethod({message})).then(rs => {
298
- const data = rs && rs.data
299
- if (data && data.status === 1) task.check()
300
- else task.promise.resolve(data || {})
301
- }, () => task.check())
302
- }, 3000)
303
- }, cancel: () => { clearTimeout(timer); task.promise.reject('reject') } }
304
- this.checkMessageSendResultTaskList.push(task)
305
- task.check()
306
- task.promise.then(rs => this.updateMessage(message.id, rs || {})).finally(() => this.removeCheckMessageSendResultTask(message.id))
307
- }
308
-
309
- removeCheckMessageSendResultTask (id) {
310
- const index = this.checkMessageSendResultTaskList.findIndex(v => v.id === id)
311
- if (index >= 0) { this.checkMessageSendResultTaskList[index].cancel(); this.checkMessageSendResultTaskList.splice(index, 1) }
312
- }
313
276
 
314
277
  reset () {
315
- this.checkMessageSendResultTaskList.forEach(task => task.cancel())
316
- this.checkMessageSendResultTaskList = []
317
- this.tempMessageMap = {}
318
278
  this.data.messageData = {}
319
279
  }
320
- }
280
+ }
@@ -82,8 +82,7 @@ export default class ClientChatSession {
82
82
  /**
83
83
  * 删除会话
84
84
  */
85
- deleteSessionMethod: null,
86
- modifiedAccountMap: {}
85
+ deleteSessionMethod: null
87
86
  })
88
87
 
89
88
  accountIds = []
@@ -120,23 +119,6 @@ export default class ClientChatSession {
120
119
  return this.data.loading
121
120
  }
122
121
 
123
- isModify (qwAccountId) {
124
- return !!(qwAccountId && this.data.modifiedAccountMap[qwAccountId])
125
- }
126
-
127
- markModify (qwAccountIds) {
128
- const ids = Array.isArray(qwAccountIds) ? qwAccountIds : [qwAccountIds]
129
- ids.filter(Boolean).forEach(id => {
130
- Vue.set(this.data.modifiedAccountMap, id, true)
131
- })
132
- }
133
-
134
- unmarkModify (qwAccountId) {
135
- if (qwAccountId) {
136
- Vue.delete(this.data.modifiedAccountMap, qwAccountId)
137
- }
138
- }
139
-
140
122
  get loadAssignTaskSessioning () {
141
123
  return this.data.loadAssignTaskSessioning
142
124
  }
@@ -223,35 +205,6 @@ export default class ClientChatSession {
223
205
  getSessionByLocal (sessionId) {
224
206
  return this.sessionMap[sessionId]
225
207
  }
226
-
227
- /**
228
- * 强制从服务端刷新会话,绕过本地缓存。
229
- */
230
- refreshSession (sessionId) {
231
- if (!sessionId) {
232
- return Promise.reject('缺少会话id')
233
- }
234
- return this.getSessionMethod({
235
- id: sessionId
236
- }).then(rs => {
237
- if (!rs || !rs.data) {
238
- return Promise.reject('未找到会话' + sessionId)
239
- }
240
- // 事件计算出的 sessionId 是本地索引,始终保持与服务端返回对象一致。
241
- const serverSession = Object.assign({}, rs.data, {
242
- id: sessionId
243
- })
244
- const localSession = this.getSessionByLocal(sessionId)
245
- if (localSession) {
246
- this.updateSession(sessionId, serverSession)
247
- } else {
248
- this.addSession(serverSession)
249
- }
250
- return Object.assign({}, rs, {
251
- data: serverSession
252
- })
253
- })
254
- }
255
208
 
256
209
  findSession (findFn) {
257
210
  let result
@@ -962,7 +915,6 @@ export default class ClientChatSession {
962
915
  this.data.sessionData = {}
963
916
  this.data.sessionGroupData = {}
964
917
  this.data.sessionMuteMap = {}
965
- this.data.modifiedAccountMap = {}
966
918
  // this.data.sessionUnreadCountMap = {}
967
919
  this.sessionMap = {}
968
920
  if (this.cancelLoadDataRequest) {
@@ -974,4 +926,4 @@ export default class ClientChatSession {
974
926
  this.cancelRefreshRequest = null
975
927
  }
976
928
  }
977
- }
929
+ }
@@ -15,14 +15,11 @@ export default class ClietChatSocket {
15
15
  // 执行回调事件前的方法
16
16
  beforeFireCallback: null,
17
17
  onCmdQwNewMessage: null,
18
- onCmdQwContactInfoChanged: null,
19
- onCmdQwRoomInfoChanged: null,
20
18
  onCmdSendMessageResult: null,
21
19
  onCmdFriendInfoChanged: null,
22
20
  onCmdDownloadVideoResult: null,
23
21
  onCmdChatroomInfoChanged: null,
24
22
  onCmdChatroomInfoChangedBatch: null,
25
- onHeartbeatSuccess: null,
26
23
  onHeartbeatCheck: null
27
24
  }, options)
28
25
  if (!options.socket) {
@@ -30,11 +27,6 @@ export default class ClietChatSocket {
30
27
  }
31
28
  this.socket = options.socket
32
29
  this.socket.event.on('onCmdQwNewMessage', options.onCmdQwNewMessage)
33
- this.socket.event.on('onCmdQwContactInfoChanged', options.onCmdQwContactInfoChanged)
34
- this.socket.event.on('onCmdQwRoomInfoChanged', options.onCmdQwRoomInfoChanged)
35
- this.socket.event.on('onHeartbeatSuccess', (evt) => {
36
- options.onHeartbeatSuccess && options.onHeartbeatSuccess(evt)
37
- })
38
30
  this.socket.event.on('onHeartbeatCheck', ({ mergeParams }) => {
39
31
  options.onHeartbeatCheck && options.onHeartbeatCheck({
40
32
  mergeParams
@@ -70,4 +62,4 @@ export default class ClietChatSocket {
70
62
  setUrl (url) {
71
63
  this.socket.setUrl(url)
72
64
  }
73
- }
65
+ }
@@ -32,7 +32,6 @@ class ClientChat {
32
32
  getLoginUserIdMethod: null,
33
33
  getLoginUserTokenMethod: null,
34
34
  loadAccountDataMethod: null,
35
- getLoginAccountIdMethod: null, // 因为1.0有帮聊逻辑,帮聊消息以及通讯录的accountId不是登录用户的accountId,会导致找到的会话出现问题,所以这里提供一个方法让外部传入
36
35
  loadSessionDataMethod: null,
37
36
  updateSessionReadMethod: null,
38
37
  getSessionMethod: null,
@@ -51,7 +50,6 @@ class ClientChat {
51
50
  getContactsRoomMethod: null,
52
51
  loadFriendMessageDataMethod: null,
53
52
  loadRoomMessageDataMethod: null,
54
- checkMessageSendResultMethod: null,
55
53
  onOverwriteFriendInfoChange: null // 为了兼容1.0拉取会话逻辑加的,1.0暂时不支持根据taskId拉取
56
54
  }, options)
57
55
  if (!options.loadFriendMessageDataMethod) {
@@ -59,9 +57,8 @@ class ClientChat {
59
57
  }
60
58
  if (!options.loadRoomMessageDataMethod) {
61
59
  throw new Error('loadRoomMessageDataMethod不能为空')
62
- }
60
+ }
63
61
  this.onOverwriteFriendInfoChange = options.onOverwriteFriendInfoChange
64
- this.getLoginAccountIdMethod = options.getLoginAccountIdMethod
65
62
  this.event = new Event({
66
63
  checkOnMethod: (name) => {
67
64
  if (name === 'ready') {
@@ -88,10 +85,8 @@ class ClientChat {
88
85
  groupField: 'contactId',
89
86
  sortField: 'sendTime',
90
87
  clientChat: this,
91
- checkMessageSendResultMethod: options.checkMessageSendResultMethod,
92
88
  onAddMessageSuccess: ({ data }) => {
93
- const accountId = this.getLoginAccountIdMethod ? this.getLoginAccountIdMethod() : data.qwAccountId
94
- let sessionId = createSessionId(accountId, data.contactId)
89
+ let sessionId = createSessionId(data.corpId, data.qwAccountId, data.contactId)
95
90
  // 更新会话
96
91
  if (!sessionId) {
97
92
  return
@@ -105,15 +100,6 @@ class ClientChat {
105
100
  return this.session.getSession(sessionId).then(done)
106
101
  })
107
102
  this._sessionPollRequestMap[sessionId].start().then((rs) => {
108
- // 后端更新会话是异步过程,返回的会话信息可能还未包含当前消息
109
- if (rs && rs.data && !rs.data.unreadMsgCount) {
110
- rs.data.unreadMsgCount = data.isSend ? 0 : 1
111
- rs.data.lastMsgContent = data.content
112
- rs.data.lastMsgType = data.msgType
113
- rs.data.lastMsgTime = data.sendTime
114
- rs.data.lastMsgId = data.id
115
- rs.data.lastUpdateTime = data.updateDate
116
- }
117
103
  // 更新账号未读消息数量
118
104
  this.account.updateAccountUnreadMessageNum(rs.data.qwAccountId, ({ unreadMesasgeNum }) => {
119
105
  return unreadMesasgeNum += (rs.data.unreadMsgCount || 0)
@@ -158,7 +144,7 @@ class ClientChat {
158
144
  groupField: 'contactId',
159
145
  sortField: 'sendTime',
160
146
  clientChat: this,
161
- checkMessageSendResultMethod: options.checkMessageSendResultMethod,
147
+ // checkMessageSendResultMethod: options.checkMessageSendResultMethod,
162
148
  // loadLossMessageDataMethod: options.loadLossFriendMessageDataMethod,
163
149
  queryMethod: (params) => {
164
150
  return options.loadFriendMessageDataMethod(params)
@@ -168,10 +154,8 @@ class ClientChat {
168
154
  groupField: 'roomId',
169
155
  sortField: 'sendTime',
170
156
  clientChat: this,
171
- checkMessageSendResultMethod: options.checkMessageSendResultMethod,
172
157
  onAddMessageSuccess: ({ data }) => {
173
- const accountId = this.getLoginAccountIdMethod ? this.getLoginAccountIdMethod() : data.qwAccountId
174
- let sessionId = createSessionId(accountId, data.roomId)
158
+ let sessionId = createSessionId(data.corpId, data.qwAccountId, data.roomId)
175
159
  // 更新会话
176
160
  if (!sessionId) {
177
161
  return
@@ -186,15 +170,6 @@ class ClientChat {
186
170
  return this.session.getSession(sessionId).then(done)
187
171
  })
188
172
  this._sessionPollRequestMap[sessionId].start().then((rs) => {
189
- // 后端更新会话是异步过程,返回的会话信息可能还未包含当前消息
190
- if (rs && rs.data && !rs.data.unreadMsgCount) {
191
- rs.data.unreadMsgCount = data.isSend ? 0 : 1
192
- rs.data.lastMsgContent = data.content
193
- rs.data.lastMsgType = data.msgType
194
- rs.data.lastMsgTime = data.sendTime
195
- rs.data.lastMsgId = data.id
196
- rs.data.lastUpdateTime = data.updateDate
197
- }
198
173
  // 更新账号未读消息数量
199
174
  this.account.updateAccountUnreadMessageNum(rs.data.qwAccountId, ({ unreadMesasgeNum }) => {
200
175
  return unreadMesasgeNum += (rs.data.unreadMsgCount || 0)
@@ -239,7 +214,7 @@ class ClientChat {
239
214
  groupField: 'roomId',
240
215
  sortField: 'sendTime',
241
216
  clientChat: this,
242
- checkMessageSendResultMethod: options.checkMessageSendResultMethod,
217
+ // checkMessageSendResultMethod: options.checkMessageSendResultMethod,
243
218
  // loadLossMessageDataMethod: options.loadLossRoomMessageDataMethod,
244
219
  queryMethod: (params) => {
245
220
  return options.loadRoomMessageDataMethod(params)
@@ -283,77 +258,6 @@ class ClientChat {
283
258
  })
284
259
  this.socket = new ClientChatSocket({
285
260
  socket: options.socket,
286
- onCmdQwContactInfoChanged: ({ data }) => {
287
- const contacts = data && (Array.isArray(data.contacts)
288
- ? data.contacts
289
- : (data.contactId ? [data] : []))
290
- if (!contacts || !contacts.length) {
291
- this.markAccountsModified(data && data.qwAccountIds)
292
- return
293
- }
294
- const tasks = []
295
- const removedTasks = []
296
- contacts.forEach(contact => {
297
- if (!contact) {
298
- return
299
- }
300
- const changeType = Number(contact.changeType)
301
- if (changeType === 1) {
302
- tasks.push(this.handleQwContactAdded(contact, data))
303
- } else if (changeType === 2) {
304
- tasks.push(this.handleQwContactUpdated(contact))
305
- } else if (changeType === 3) {
306
- removedTasks.push(this.handleQwContactRemoved(contact, data))
307
- }
308
- })
309
- return Promise.all(tasks.concat(removedTasks)).then(results => {
310
- const accountUnreadCountMap = {}
311
- removedTasks.forEach((task, index) => {
312
- const result = results[tasks.length + index]
313
- if (!result || !result.accountId || !result.unreadCount) {
314
- return
315
- }
316
- accountUnreadCountMap[result.accountId] = (accountUnreadCountMap[result.accountId] || 0) + result.unreadCount
317
- })
318
- return Promise.all(Object.keys(accountUnreadCountMap).map(accountId => {
319
- const removedUnreadCount = accountUnreadCountMap[accountId]
320
- return this.account.updateAccountUnreadMessageNum(accountId, ({ unreadMesasgeNum }) => {
321
- return Math.max(0, unreadMesasgeNum - removedUnreadCount)
322
- }).catch(error => {
323
- console.warn('[client-chat] update account unread count failed', error)
324
- })
325
- }))
326
- })
327
- },
328
- onCmdQwRoomInfoChanged: ({ data }) => {
329
- const rooms = data && (Array.isArray(data.rooms)
330
- ? data.rooms
331
- : (data.roomId ? [data] : []))
332
- if (!rooms || !rooms.length) {
333
- this.markAccountsModified(data && data.qwAccountIds)
334
- return
335
- }
336
- const tasks = []
337
- const removedTasks = []
338
- rooms.forEach(room => {
339
- if (!room) {
340
- return
341
- }
342
- const changeType = Number(room.changeType)
343
- if (changeType === 1) {
344
- tasks.push(this.handleQwRoomAdded(room, data))
345
- } else if (changeType === 2) {
346
- tasks.push(this.handleQwRoomUpdated(room))
347
- } else if (changeType === 3) {
348
- removedTasks.push(this.handleQwRoomRemoved(room, data))
349
- }
350
- })
351
- return Promise.all(tasks.concat(removedTasks)).then(results => {
352
- return this.updateRemovedSessionUnreadCounts(
353
- results.slice(tasks.length)
354
- )
355
- })
356
- },
357
261
  // 接受新消息
358
262
  onCmdQwNewMessage: ({ data }) => {
359
263
  // 插入消息
@@ -375,193 +279,19 @@ class ClientChat {
375
279
  })
376
280
  },
377
281
  onHeartbeatSuccess: ({ data }) => {
378
- const onlineMap = data || {}
282
+ if (!data.wq) {
283
+ return
284
+ }
285
+ const onlineMap = data.wq || {}
379
286
  Object.keys(onlineMap).forEach(k => {
380
287
  this.account.updateAccount(k, {
381
288
  alive: onlineMap[k]
382
- })
383
- })
384
- }
385
- })
386
- }
387
-
388
- getQwAccountCorpId (qwAccountId, corpId) {
389
- if (corpId || !qwAccountId || !this.account) {
390
- return corpId
391
- }
392
- const account = this.account.getAccountData().find(item => item.id === qwAccountId)
393
- return account && account.corpId
394
- }
395
-
396
- markAccountsModified (qwAccountIds) {
397
- if (!Array.isArray(qwAccountIds) || !qwAccountIds.length) {
398
- return
399
- }
400
- this.session.markModify(qwAccountIds)
401
- this.contacts.markModify(qwAccountIds)
402
- }
403
-
404
- updateRemovedSessionUnreadCounts (results) {
405
- const accountUnreadCountMap = {}
406
- ;(results || []).forEach(result => {
407
- if (!result || !result.accountId || !result.unreadCount) {
408
- return
409
- }
410
- accountUnreadCountMap[result.accountId] = (accountUnreadCountMap[result.accountId] || 0) + result.unreadCount
411
- })
412
- return Promise.all(Object.keys(accountUnreadCountMap).map(accountId => {
413
- const removedUnreadCount = accountUnreadCountMap[accountId]
414
- return this.account.updateAccountUnreadMessageNum(accountId, ({ unreadMesasgeNum }) => {
415
- return Math.max(0, unreadMesasgeNum - removedUnreadCount)
416
- }).catch(error => {
417
- console.warn('[client-chat] update account unread count failed', error)
418
- })
419
- }))
420
- }
421
-
422
- handleQwContactAdded (contact, eventData) {
423
- const qwAccountId = contact.qwAccountId || (eventData && eventData.qwAccountId)
424
- const corpId = this.getQwAccountCorpId(
425
- qwAccountId,
426
- contact.corpId || (eventData && eventData.corpId)
427
- )
428
- const contactId = contact.contactId
429
- const accountId = this.getLoginAccountIdMethod ? this.getLoginAccountIdMethod() : qwAccountId
430
- const sessionId = createSessionId(accountId, contactId)
431
- if (!sessionId) {
432
- return Promise.resolve()
433
- }
434
- const localSession = this.session.getSessionByLocal(sessionId)
435
- const oldUnread = localSession ? (localSession.unreadMsgCount || 0) : 0
436
- return this.session.refreshSession(sessionId).then(rs => {
437
- const serverSession = rs && rs.data
438
- const newUnread = serverSession ? (serverSession.unreadMsgCount || 0) : 0
439
- const accountId = (serverSession && serverSession.qwAccountId) || qwAccountId
440
- const unreadDiff = newUnread - oldUnread
441
- if (accountId && unreadDiff) {
442
- return this.account.updateAccountUnreadMessageNum(accountId, ({ unreadMesasgeNum }) => {
443
- return Math.max(0, unreadMesasgeNum + unreadDiff)
289
+ })
444
290
  })
445
291
  }
446
- }).catch(error => {
447
- console.warn('[client-chat] refresh added contact session failed', error)
448
- })
449
- }
450
-
451
- handleQwContactUpdated (contact) {
452
- if (!contact.contactId) {
453
- return Promise.resolve()
454
- }
455
- return this.contacts.refreshFriend(contact.contactId).catch(error => {
456
- console.warn('[client-chat] refresh contact failed', error)
457
- })
458
- }
459
-
460
- handleQwContactRemoved (contact, eventData) {
461
- if (!contact.contactId) {
462
- return Promise.resolve()
463
- }
464
- this.contacts.removeFriend(contact.contactId)
465
- let session = this.session.findSession(({ session }) => {
466
- return String(session.type) === '0' &&
467
- session.targetId === contact.contactId &&
468
- (!contact.qwAccountId || session.qwAccountId === contact.qwAccountId)
469
- })
470
- if (!session) {
471
- const qwAccountId = contact.qwAccountId || (eventData && eventData.qwAccountId)
472
- const accountId = this.getLoginAccountIdMethod ? this.getLoginAccountIdMethod() : qwAccountId
473
- const sessionId = createSessionId(
474
- accountId,
475
- contact.contactId
476
- )
477
- session = sessionId && this.session.getSessionByLocal(sessionId)
478
- }
479
- if (!session) {
480
- return Promise.resolve()
481
- }
482
- if (this.session.currentSession && this.session.currentSession.id === session.id) {
483
- this.session.setCurrentSession(null)
484
- }
485
- const accountId = session.qwAccountId || contact.qwAccountId
486
- const unreadCount = session.unreadMsgCount || 0
487
- this.session.removeSession(session.id)
488
- return Promise.resolve({
489
- accountId,
490
- unreadCount
491
292
  })
492
293
  }
493
294
 
494
- handleQwRoomAdded (room, eventData) {
495
- if (!room.roomId) {
496
- return Promise.resolve()
497
- }
498
- const qwAccountId = room.qwAccountId || (eventData && eventData.qwAccountId)
499
- const accountId = this.getLoginAccountIdMethod ? this.getLoginAccountIdMethod() : qwAccountId
500
- const sessionId = createSessionId(accountId, room.roomId)
501
- const localSession = sessionId && this.session.getSessionByLocal(sessionId)
502
- const oldUnread = localSession ? (localSession.unreadMsgCount || 0) : 0
503
- const tasks = [this.contacts.refreshRoom(room.roomId).catch(error => {
504
- console.warn('[client-chat] refresh added room failed', error)
505
- })]
506
- if (sessionId) {
507
- tasks.push(this.session.refreshSession(sessionId).then(rs => {
508
- const serverSession = rs && rs.data
509
- const unreadDiff = (serverSession ? (serverSession.unreadMsgCount || 0) : 0) - oldUnread
510
- const changedAccountId = (serverSession && serverSession.qwAccountId) || qwAccountId
511
- if (changedAccountId && unreadDiff) {
512
- return this.account.updateAccountUnreadMessageNum(changedAccountId, ({ unreadMesasgeNum }) => {
513
- return Math.max(0, unreadMesasgeNum + unreadDiff)
514
- })
515
- }
516
- }).catch(error => {
517
- console.warn('[client-chat] refresh added room session failed', error)
518
- }))
519
- }
520
- return Promise.all(tasks)
521
- }
522
-
523
- handleQwRoomUpdated (room) {
524
- if (!room.roomId) {
525
- return Promise.resolve()
526
- }
527
- return this.contacts.refreshRoom(room.roomId).catch(error => {
528
- console.warn('[client-chat] refresh room failed', error)
529
- })
530
- }
531
-
532
- handleQwRoomRemoved (room, eventData) {
533
- if (!room.roomId) {
534
- return Promise.resolve()
535
- }
536
- this.contacts.removeRoom(room.roomId)
537
- this.event.emit('roomRemoved', {
538
- roomId: room.roomId
539
- })
540
- const qwAccountId = room.qwAccountId || (eventData && eventData.qwAccountId)
541
- let session = this.session.findSession(({ session }) => {
542
- return String(session.type) === '1' &&
543
- session.targetId === room.roomId &&
544
- (!qwAccountId || session.qwAccountId === qwAccountId)
545
- })
546
- if (!session) {
547
- const accountId = this.getLoginAccountIdMethod ? this.getLoginAccountIdMethod() : qwAccountId
548
- const sessionId = createSessionId(accountId, room.roomId)
549
- session = sessionId && this.session.getSessionByLocal(sessionId)
550
- }
551
- if (!session) {
552
- return Promise.resolve()
553
- }
554
- if (this.session.currentSession && this.session.currentSession.id === session.id) {
555
- this.session.setCurrentSession(null)
556
- }
557
- const unreadCount = session.unreadMsgCount || 0
558
- this.session.removeSession(session.id)
559
- return Promise.resolve({
560
- accountId: session.qwAccountId || qwAccountId,
561
- unreadCount
562
- })
563
- }
564
-
565
295
  connect () {
566
296
  if (this.data.connectStatus === CONNECT_STATUS.Complete) {
567
297
  return Promise.resolve()
@@ -598,4 +328,4 @@ class ClientChat {
598
328
  }
599
329
  }
600
330
 
601
- export default ClientChat
331
+ export default ClientChat
@@ -13,11 +13,11 @@ export function isUni () {
13
13
  * @param accountId - 客服id
14
14
  * @param targetId - wechatFriendId | wechatChatroomId
15
15
  */
16
- export function createSessionId (accountId, targetId) {
17
- if (!accountId || !targetId) {
16
+ export function createSessionId (corpId, accountId, targetId) {
17
+ if (!corpId || !accountId || !targetId) {
18
18
  return
19
19
  }
20
- return shajs('sha1').update(`${accountId}${targetId}`).digest('hex')
20
+ return shajs('sha1').update(`${corpId}${accountId}${targetId}`).digest('hex')
21
21
  }
22
22
 
23
23
  /**
@@ -54,7 +54,7 @@ export function createSessionId (accountId, targetId) {
54
54
  * "msgSvrId": "4319123759514541049",
55
55
  * "msgType": 1,
56
56
  * "origin": "0",
57
- * "status": 0,
57
+ * "sendStatus": 0,
58
58
  * "tenantId": "1761952223049924608",
59
59
  * "wechatAccountId": "ad9d9ae2a8be4f27311312cdd4af3549dc8427ef",
60
60
  * "wechatFriendId": "2089efcc7f8f40b00b7f05fa4c6dfd3bb642774d",
@@ -79,4 +79,4 @@ export function createSessionData (message) {
79
79
  wechatAccountId: message.wechatAccountId
80
80
  }
81
81
  return nextSession
82
- }
82
+ }