@aochuang/client-sdk 1.0.363 → 1.0.365
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.
- package/components/index.js +1 -6
- package/components/layout/layout.vue +4 -1
- package/components/session-select/session-select-item.vue +9 -8
- package/components/wechat-chat-control/image/image.vue +8 -13
- package/components/wechat-chat-control/url/url-miniprogram.vue +5 -1
- package/components/wework-chat-control/channel-live/channel-live.vue +2 -7
- package/components/wework-chat-control/company-card/company-card.vue +1 -1
- package/components/wework-chat-control/custom-expression/custom-expression.vue +1 -2
- package/components/wework-chat-control/file-url/file-url.vue +16 -34
- package/components/wework-chat-control/image/image.vue +2 -137
- package/components/wework-chat-control/index.js +7 -15
- package/components/wework-chat-control/location/location.vue +3 -3
- package/components/wework-chat-control/red-envelopes/red-envelopes.vue +2 -3
- package/components/wework-chat-control/text/text.vue +144 -24
- package/components/wework-chat-control/url/url-miniprogram.vue +7 -6
- package/components/wework-chat-control/url/url.vue +2 -26
- package/components/wework-chat-control/util.js +17 -26
- package/components/wework-chat-control/video/video.vue +2 -10
- package/components/wework-chat-control/voice/voice.vue +2 -9
- package/components/wework-chat-panel/chat-panel-controls/company-card/company-card.vue +35 -0
- package/components/wework-chat-panel/chat-panel-controls/expression/expression.vue +36 -0
- package/components/wework-chat-panel/chat-panel-controls/file-url/file-url.vue +35 -0
- package/components/wework-chat-panel/chat-panel-controls/image/image.vue +36 -0
- package/components/wework-chat-panel/chat-panel-controls/index.js +35 -0
- package/components/wework-chat-panel/chat-panel-controls/jx-sys-text/jx-sys-text.vue +28 -0
- package/components/wework-chat-panel/chat-panel-controls/link/link.vue +35 -0
- package/components/wework-chat-panel/chat-panel-controls/location/location.vue +35 -0
- package/components/wework-chat-panel/chat-panel-controls/text/text.vue +43 -0
- package/components/wework-chat-panel/chat-panel-controls/unkonw/unkonw.vue +39 -0
- package/components/wework-chat-panel/chat-panel-controls/video/video.vue +37 -0
- package/components/wework-chat-panel/chat-panel-controls/voice/voice.vue +35 -0
- package/components/wework-chat-panel/chat-panel-item.vue +25 -56
- package/components/wework-chat-panel/chat-panel.vue +13 -96
- package/package.json +3 -10
- package/services/client-chat/client-chat-wechat/client-chat-session.js +290 -79
- package/services/client-chat/client-chat-wechat/client-chat.js +69 -99
- package/services/client-chat/client-chat-wework/client-chat-account.js +1 -84
- package/services/client-chat/client-chat-wework/client-chat-concats.js +17 -81
- package/services/client-chat/client-chat-wework/client-chat-message.js +5 -45
- package/services/client-chat/client-chat-wework/client-chat-session.js +4 -59
- package/services/client-chat/client-chat-wework/client-chat-socket.js +1 -13
- package/services/client-chat/client-chat-wework/client-chat.js +11 -320
- package/services/client-chat/client-chat-wework/utils.js +5 -5
- package/uni-common/account-portray/account-portray.vue +51 -0
- package/uni-common/account-select/account-select-item.vue +172 -0
- package/uni-common/account-select/account-select.vue +252 -0
- package/uni-common/all-friend-avatar/all-friend-avatar.vue +49 -0
- package/uni-common/friend-avatar/default.svg +1 -0
- package/uni-common/friend-avatar/friend-avatar.vue +27 -0
- package/uni-common/friend-avatar/index.js +3 -0
- package/uni-common/friend-loader/friend-loader.vue +53 -0
- package/uni-common/friend-portray/friend-portray.vue +56 -0
- package/uni-common/group-avatar/default.svg +1 -0
- package/uni-common/group-avatar/group-avatar.vue +18 -0
- package/uni-common/group-avatar/index.js +3 -0
- package/uni-common/room-avatar/default.svg +6 -0
- package/uni-common/room-avatar/index.js +3 -0
- package/uni-common/room-avatar/room-avatar.vue +27 -0
- package/uni-common/room-loader/room-loader.vue +53 -0
- package/uni-common/room-portray/room-portray.vue +56 -0
- package/uni-components/chat-control/calling/calling.vue +91 -0
- package/uni-components/chat-control/calling/phone-fill.svg +1 -0
- package/uni-components/chat-control/calling/vidicon-fill.svg +1 -0
- package/uni-components/chat-control/channel-video/channel-video.vue +89 -0
- package/uni-components/chat-control/channel-video-card/channel-video-card.vue +105 -0
- package/uni-components/chat-control/channel-video-live/channel-video-live.vue +92 -0
- package/uni-components/chat-control/chat-control-config-item/chat-control-config-item.vue +20 -0
- package/uni-components/chat-control/chat-control-config-item/index.js +3 -0
- package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-app.vue +25 -0
- package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-h5.vue +21 -0
- package/{components/wework-chat-control/wework-chat-control-config.vue → uni-components/chat-control/chat-control-config.vue} +13 -16
- package/uni-components/chat-control/chat-control.vue +218 -0
- package/uni-components/chat-control/company-card/company-card.vue +123 -0
- package/uni-components/chat-control/const.js +28 -0
- package/uni-components/chat-control/expression/expression.vue +41 -0
- package/uni-components/chat-control/image/image.vue +68 -0
- package/uni-components/chat-control/index.js +89 -0
- package/uni-components/chat-control/location/location.vue +110 -0
- package/uni-components/chat-control/member-change/member-change.vue +32 -0
- package/uni-components/chat-control/quote-message/quote-message.vue +216 -0
- package/uni-components/chat-control/real-time-position/real-time-position.vue +62 -0
- package/uni-components/chat-control/redpacket/red-envelope.svg +1 -0
- package/uni-components/chat-control/redpacket/redpacket.vue +75 -0
- package/uni-components/chat-control/share-card/share-card.vue +101 -0
- package/uni-components/chat-control/system/system.vue +69 -0
- package/uni-components/chat-control/system-batch-message/system-batch-message.vue +30 -0
- package/uni-components/chat-control/system-text/system-text.vue +32 -0
- package/uni-components/chat-control/text/text.vue +67 -0
- package/uni-components/chat-control/text-with-at/text-with-at.vue +51 -0
- package/uni-components/chat-control/transfer/red-transfer.svg +1 -0
- package/uni-components/chat-control/transfer/transfer.vue +80 -0
- package/uni-components/chat-control/unkonw/unkonw.vue +37 -0
- package/uni-components/chat-control/url/icons/file-excel-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-info-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-music-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-pdf-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-ppt-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-settings-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-text-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-unknow-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-word-line.svg +1 -0
- package/uni-components/chat-control/url/icons/file-zip-line.svg +1 -0
- package/uni-components/chat-control/url/icons/index.js +24 -0
- package/uni-components/chat-control/url/miniprogram.svg +1 -0
- package/uni-components/chat-control/url/url-miniprogram.vue +116 -0
- package/uni-components/chat-control/url/url.vue +306 -0
- package/uni-components/chat-control/url-new/icons/file-excel-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-info-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-music-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-pdf-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-ppt-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-settings-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-text-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-unknow-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-word-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/file-zip-line.svg +1 -0
- package/uni-components/chat-control/url-new/icons/index.js +24 -0
- package/uni-components/chat-control/url-new/url-new.vue +110 -0
- package/uni-components/chat-control/utils.js +12 -0
- package/uni-components/chat-control/video/video.vue +156 -0
- package/uni-components/chat-control/voice/voice.vue +166 -0
- package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-collect.vue +84 -0
- package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-system.vue +28 -0
- package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet.vue +85 -0
- package/uni-components/chat-editor/chat-editor-func/chat-editor-func.vue +157 -0
- package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at-panel.vue +158 -0
- package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at.vue +61 -0
- package/uni-components/chat-editor/chat-editor-func-button/chat-editor-func-button.vue +58 -0
- package/uni-components/chat-editor/chat-editor-func-file/chat-editor-func-file.vue +54 -0
- package/uni-components/chat-editor/chat-editor-func-image/chat-editor-func-image.vue +42 -0
- package/uni-components/chat-editor/chat-editor-func-video/chat-editor-func-video.vue +42 -0
- package/uni-components/chat-editor/chat-editor-func-voice/chat-editor-func-voice.vue +25 -0
- package/uni-components/chat-editor/chat-editor-message-send/chat-editor-message-send.vue +158 -0
- package/uni-components/chat-editor/chat-editor-quote/chat-editor-quote.vue +75 -0
- package/uni-components/chat-editor/chat-editor.vue +257 -0
- package/uni-components/chat-editor/index.js +10 -0
- package/uni-components/chat-editor/util.js +65 -0
- package/uni-components/chat-panel/chat-panel-chats-box.vue +238 -0
- package/uni-components/chat-panel/chat-panel-chats-forward/chat-panel-chats-forward.vue +273 -0
- package/uni-components/chat-panel/chat-panel-chats-item.vue +578 -0
- package/uni-components/chat-panel/chat-panel-chats-status/chat-panel-chats-status.vue +71 -0
- package/uni-components/chat-panel/chat-panel-chats.vue +368 -0
- package/uni-components/chat-panel/chat-panel.vue +227 -0
- package/uni-components/contacts-group-select/contacts-group-select-item.vue +85 -0
- package/uni-components/contacts-group-select/contacts-group-select-panel.vue +119 -0
- package/uni-components/contacts-group-select/contacts-group-select.vue +150 -0
- package/common/.DS_Store +0 -0
- package/components/.DS_Store +0 -0
- package/components/wechat-chat-control/.DS_Store +0 -0
- package/components/wechat-chat-control/transfer/.DS_Store +0 -0
- package/components/wechat-chat-control/url/.DS_Store +0 -0
- package/components/wechat-chat-control/voice/.DS_Store +0 -0
- package/components/wework-chat-control/channel-card/channel-card.vue +0 -144
- package/components/wework-chat-control/link/.DS_Store +0 -0
- package/components/wework-chat-control/merge-message/merge-message-panel.vue +0 -63
- package/components/wework-chat-control/merge-message/merge-message.vue +0 -84
- package/components/wework-chat-control/merge-message/util.js +0 -59
- package/components/wework-chat-control/metting/enterprise-wechat.png +0 -0
- package/components/wework-chat-control/metting/meeting-video.svg +0 -4
- package/components/wework-chat-control/metting/metting.vue +0 -181
- package/components/wework-chat-control/text/text-default.vue +0 -99
- package/components/wework-chat-control/text/text-quote.vue +0 -105
- package/components/wework-chat-control/url/url-channel-live.vue +0 -53
- package/components/wework-chat-control/video/.DS_Store +0 -0
- package/components/wework-chat-control/wework-chat-control-config-item.vue +0 -24
- package/components/wework-chat-control/wework-chat-control-config-msg.vue +0 -25
- package/components/wework-chat-panel/chat-panel-chat-status/chat-panel-chat-status.vue +0 -73
- package/services/.DS_Store +0 -0
|
@@ -115,7 +115,24 @@ class ClientChat {
|
|
|
115
115
|
const mergeSessionCommonOptions = (options, instance) => {
|
|
116
116
|
let updateSessioning = false
|
|
117
117
|
let removeSessioning = false
|
|
118
|
-
options.onAddSession = ({ session }) => {
|
|
118
|
+
options.onAddSession = ({ session, wechatAccountId }) => {
|
|
119
|
+
// 不是来源于分页的时候,没有wechatAccountId就是代表不是走的分页增加的会话,一般为获取新消息或则分配的会话
|
|
120
|
+
if (!wechatAccountId && instance === this.session) {
|
|
121
|
+
// 更新账号未读消息数量
|
|
122
|
+
this.account.updateAccountUnreadMessageNum(session.wechatAccountId, ({ unreadMesasgeNum, unreadMessageMuteNum }) => {
|
|
123
|
+
if (session.mute) {
|
|
124
|
+
return {
|
|
125
|
+
num: (unreadMesasgeNum || 0) + (session.unreadMsgCount || 0),
|
|
126
|
+
muteNum: (unreadMessageMuteNum || 0) + (session.unreadMsgCount || 0)
|
|
127
|
+
}
|
|
128
|
+
} else {
|
|
129
|
+
return {
|
|
130
|
+
num: (unreadMesasgeNum || 0) + (session.unreadMsgCount || 0),
|
|
131
|
+
muteNum: unreadMessageMuteNum
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
})
|
|
135
|
+
}
|
|
119
136
|
// 同步未读会话
|
|
120
137
|
if (instance !== this.sessionUnread && session.unreadMsgCount > 0) {
|
|
121
138
|
const localSession = this.sessionUnread.findSession((localSession) => localSession.conversationId === session.conversationId)
|
|
@@ -278,9 +295,10 @@ class ClientChat {
|
|
|
278
295
|
sortField: 'lastMsgTime',
|
|
279
296
|
name: 'session',
|
|
280
297
|
loadAssignTaskSessionDataMethod: options.loadAssignTaskSessionDataMethod,
|
|
281
|
-
loadSessionDataMethod: options.loadSessionDataMethod,
|
|
298
|
+
loadSessionDataMethod: options.loadSessionDataMethod,
|
|
282
299
|
updateSessionReadMethod: options.updateSessionReadMethod,
|
|
283
300
|
getSessionMethod: options.getSessionMethod,
|
|
301
|
+
onGetSessionLog: data => this.socket && this.socket.addLog(data),
|
|
284
302
|
stickyTopSessionMethod: options.stickyTopSessionMethod,
|
|
285
303
|
muteNotificationSessionMethod: options.muteNotificationSessionMethod,
|
|
286
304
|
getNextUnreadSessionMethod: options.getNextUnreadSessionMethod,
|
|
@@ -411,57 +429,33 @@ class ClientChat {
|
|
|
411
429
|
}
|
|
412
430
|
}
|
|
413
431
|
})
|
|
414
|
-
return this.session.getSession(sessionId, rs => {
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
num: (unreadMesasgeNum || 0) + (session.unreadMsgCount || 0),
|
|
432
|
-
muteNum: (unreadMessageMuteNum || 0) + (session.unreadMsgCount || 0)
|
|
432
|
+
return this.session.getSession(sessionId, (rs, context) => {
|
|
433
|
+
if (rs && rs.data) {
|
|
434
|
+
const isAfterServerMessage = data.wechatTime > context.baseLastMsgTime
|
|
435
|
+
const isNewerMessage = data.wechatTime > (rs.data.lastMsgTime || 0)
|
|
436
|
+
if (isNewerMessage) {
|
|
437
|
+
rs.data.lastMsgContent = data.content
|
|
438
|
+
rs.data.lastMsgType = data.msgType
|
|
439
|
+
rs.data.lastMsgTime = data.wechatTime
|
|
440
|
+
rs.data.lastMsgId = data.id
|
|
441
|
+
rs.data.lastUpdateTime = data.updateDate
|
|
442
|
+
}
|
|
443
|
+
if (!data.isSend && isAfterServerMessage) {
|
|
444
|
+
if (this.sessionManage.currentSession && this.sessionManage.currentSession.conversationId === sessionId && this.shouldMarkCurrentSessionRead(sessionId, data)) {
|
|
445
|
+
rs.data.unreadMsgCount = 0
|
|
446
|
+
} else {
|
|
447
|
+
rs.data.unreadMsgCount = (rs.data.unreadMsgCount || 0) + 1
|
|
448
|
+
context.unreadMessageIds.push(data.id)
|
|
433
449
|
}
|
|
434
450
|
} else {
|
|
435
|
-
|
|
436
|
-
num: (unreadMesasgeNum || 0) + (session.unreadMsgCount || 0),
|
|
437
|
-
muteNum: unreadMessageMuteNum
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
})
|
|
441
|
-
}, false).then((rs => {
|
|
442
|
-
// 前面更新未读消息数量只是处理会话的时候,因为getSession是异步的,会导致addMessage多次执行到这里,不会倒下面更新会话的逻辑
|
|
443
|
-
// 比如连续发了3条消息,然后getSession后端返回可能只会返回2条未读数,所以这里还需要补偿一下
|
|
444
|
-
const session = rs.data || {}
|
|
445
|
-
const isNewerMessage = data.wechatTime > (session.lastMsgTime || 0)
|
|
446
|
-
if (!data.isSend && isNewerMessage) {
|
|
447
|
-
if (!(this.sessionManage.currentSession && this.sessionManage.currentSession.conversationId === sessionId && this.shouldMarkCurrentSessionRead(sessionId, data))) {
|
|
448
|
-
// 更新账号未读消息数量
|
|
449
|
-
this.account.updateAccountUnreadMessageNum(session.wechatAccountId, ({ unreadMesasgeNum, unreadMessageMuteNum }) => {
|
|
450
|
-
if (session.mute) {
|
|
451
|
-
return {
|
|
452
|
-
num: (unreadMesasgeNum || 0) + 1,
|
|
453
|
-
muteNum: (unreadMessageMuteNum || 0) + 1
|
|
454
|
-
}
|
|
455
|
-
} else {
|
|
456
|
-
return {
|
|
457
|
-
num: (unreadMesasgeNum || 0) + 1,
|
|
458
|
-
muteNum: unreadMessageMuteNum
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
})
|
|
451
|
+
context.skippedMessageIds.push(data.id)
|
|
462
452
|
}
|
|
463
453
|
}
|
|
464
|
-
|
|
454
|
+
return rs
|
|
455
|
+
}, {
|
|
456
|
+
messageId: data.id,
|
|
457
|
+
wechatTime: data.wechatTime
|
|
458
|
+
}).then(null, (error) => {
|
|
465
459
|
this.socket.addLog({
|
|
466
460
|
group: 'client-chat-message:onAddMessageSuccess',
|
|
467
461
|
content: {
|
|
@@ -579,60 +573,36 @@ class ClientChat {
|
|
|
579
573
|
}
|
|
580
574
|
}
|
|
581
575
|
})
|
|
582
|
-
this.session.getSession(sessionId, (rs) => {
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
}
|
|
593
|
-
if (rs && rs.data && atMessage && !(this.sessionManage.currentSession && this.sessionManage.currentSession.conversationId === sessionId)) {
|
|
594
|
-
rs.data.lastAtMsgContent = appendLastAtMsgContent(rs.data.lastAtMsgContent, atMessage)
|
|
595
|
-
}
|
|
596
|
-
return rs
|
|
597
|
-
}, ({ session }) => {
|
|
598
|
-
// 更新账号未读消息数量
|
|
599
|
-
this.account.updateAccountUnreadMessageNum(session.wechatAccountId, ({ unreadMesasgeNum, unreadMessageMuteNum }) => {
|
|
600
|
-
if (session.mute) {
|
|
601
|
-
return {
|
|
602
|
-
num: (unreadMesasgeNum || 0) + (session.unreadMsgCount || 0),
|
|
603
|
-
muteNum: (unreadMessageMuteNum || 0) + (session.unreadMsgCount || 0)
|
|
604
|
-
}
|
|
605
|
-
} else {
|
|
606
|
-
return {
|
|
607
|
-
num: (unreadMesasgeNum || 0) + (session.unreadMsgCount || 0),
|
|
608
|
-
muteNum: unreadMessageMuteNum
|
|
609
|
-
}
|
|
576
|
+
return this.session.getSession(sessionId, (rs, context) => {
|
|
577
|
+
if (rs && rs.data) {
|
|
578
|
+
const isAfterServerMessage = data.wechatTime > context.baseLastMsgTime
|
|
579
|
+
const isNewerMessage = data.wechatTime > (rs.data.lastMsgTime || 0)
|
|
580
|
+
if (isNewerMessage) {
|
|
581
|
+
rs.data.lastMsgContent = data.content
|
|
582
|
+
rs.data.lastMsgType = data.msgType
|
|
583
|
+
rs.data.lastMsgTime = data.wechatTime
|
|
584
|
+
rs.data.lastMsgId = data.id
|
|
585
|
+
rs.data.lastUpdateTime = data.updateDate
|
|
610
586
|
}
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
// 更新账号未读消息数量
|
|
620
|
-
this.account.updateAccountUnreadMessageNum(session.wechatAccountId, ({ unreadMesasgeNum, unreadMessageMuteNum }) => {
|
|
621
|
-
if (session.mute) {
|
|
622
|
-
return {
|
|
623
|
-
num: (unreadMesasgeNum || 0) + 1,
|
|
624
|
-
muteNum: (unreadMessageMuteNum || 0) + 1
|
|
625
|
-
}
|
|
626
|
-
} else {
|
|
627
|
-
return {
|
|
628
|
-
num: (unreadMesasgeNum || 0) + 1,
|
|
629
|
-
muteNum: unreadMessageMuteNum
|
|
630
|
-
}
|
|
587
|
+
if (!data.isSend && isAfterServerMessage) {
|
|
588
|
+
if (this.sessionManage.currentSession && this.sessionManage.currentSession.conversationId === sessionId && this.shouldMarkCurrentSessionRead(sessionId, data)) {
|
|
589
|
+
rs.data.unreadMsgCount = 0
|
|
590
|
+
} else {
|
|
591
|
+
rs.data.unreadMsgCount = (rs.data.unreadMsgCount || 0) + 1
|
|
592
|
+
context.unreadMessageIds.push(data.id)
|
|
593
|
+
if (atMessage) {
|
|
594
|
+
rs.data.lastAtMsgContent = appendLastAtMsgContent(rs.data.lastAtMsgContent, atMessage)
|
|
631
595
|
}
|
|
632
|
-
}
|
|
596
|
+
}
|
|
597
|
+
} else {
|
|
598
|
+
context.skippedMessageIds.push(data.id)
|
|
633
599
|
}
|
|
634
600
|
}
|
|
635
|
-
|
|
601
|
+
return rs
|
|
602
|
+
}, {
|
|
603
|
+
messageId: data.id,
|
|
604
|
+
wechatTime: data.wechatTime
|
|
605
|
+
}).then(null, (error) => {
|
|
636
606
|
this.socket.addLog({
|
|
637
607
|
group: 'client-chat-message:onAddMessageSuccess',
|
|
638
608
|
content: {
|
|
@@ -5,20 +5,14 @@ export default class ClientChatAccount {
|
|
|
5
5
|
data = Vue.observable({
|
|
6
6
|
accountData: [],
|
|
7
7
|
accountUnreadMessageNumData: [],
|
|
8
|
-
accountGreetingUnreadMsgCountData: {},
|
|
9
8
|
currentAccount: null
|
|
10
9
|
})
|
|
11
10
|
|
|
12
11
|
loadAccountDataMethod = null
|
|
13
12
|
|
|
14
13
|
getAccountUnreadMessageNumMethod = null
|
|
15
|
-
|
|
16
|
-
getAccountGreetingUnreadMsgCountMethod = null
|
|
17
14
|
|
|
18
15
|
accountMap = {}
|
|
19
|
-
|
|
20
|
-
// 好友请求数量请求合并,key为账号id列表
|
|
21
|
-
greetingUnreadRequestMap = {}
|
|
22
16
|
|
|
23
17
|
constructor (options) {
|
|
24
18
|
options = Object.assign({
|
|
@@ -27,13 +21,11 @@ export default class ClientChatAccount {
|
|
|
27
21
|
getAccountUnreadMessageNumMethod: null,
|
|
28
22
|
updateAccountMessageReadMethod: null,
|
|
29
23
|
deleteAccountSessionMethod: null,
|
|
30
|
-
getAccountGreetingUnreadMsgCountMethod: null,
|
|
31
24
|
onCurrentAccountChange: null,
|
|
32
25
|
onAccountAdded: null,
|
|
33
26
|
onAccountRemoved: null,
|
|
34
27
|
onUnreadMessageNumChange: null,
|
|
35
|
-
onDeleteAccountSession: null
|
|
36
|
-
onAccountLoaded: null
|
|
28
|
+
onDeleteAccountSession: null
|
|
37
29
|
}, options)
|
|
38
30
|
if (!options.loadAccountDataMethod) {
|
|
39
31
|
throw new Error('缺少loadAccountDataMethod配置')
|
|
@@ -46,12 +38,10 @@ export default class ClientChatAccount {
|
|
|
46
38
|
this.getAccountUnreadMessageNumMethod = options.getAccountUnreadMessageNumMethod
|
|
47
39
|
this.updateAccountMessageReadMethod = options.updateAccountMessageReadMethod
|
|
48
40
|
this.deleteAccountSessionMethod = options.deleteAccountSessionMethod
|
|
49
|
-
this.getAccountGreetingUnreadMsgCountMethod = options.getAccountGreetingUnreadMsgCountMethod
|
|
50
41
|
this.onAccountAdded = options.onAccountAdded
|
|
51
42
|
this.onAccountRemoved = options.onAccountRemoved,
|
|
52
43
|
this.onUnreadMessageNumChange = options.onUnreadMessageNumChange
|
|
53
44
|
this.onDeleteAccountSession = options.onDeleteAccountSession
|
|
54
|
-
this.onAccountLoaded = options.onAccountLoaded
|
|
55
45
|
}
|
|
56
46
|
|
|
57
47
|
get accountData () {
|
|
@@ -65,10 +55,6 @@ export default class ClientChatAccount {
|
|
|
65
55
|
get currentAccount () {
|
|
66
56
|
return this.data.currentAccount
|
|
67
57
|
}
|
|
68
|
-
|
|
69
|
-
get accountGreetingUnreadMsgCountData () {
|
|
70
|
-
return this.data.accountGreetingUnreadMsgCountData
|
|
71
|
-
}
|
|
72
58
|
|
|
73
59
|
setCurrentAccount (accountId) {
|
|
74
60
|
let account = null
|
|
@@ -296,9 +282,6 @@ export default class ClientChatAccount {
|
|
|
296
282
|
this._cacheLoadPromise = this.loadAccountDataMethod()
|
|
297
283
|
this._cacheLoadPromise.then(rs => {
|
|
298
284
|
this.setAccountData(rs.data)
|
|
299
|
-
this.onAccountLoaded && this.onAccountLoaded({
|
|
300
|
-
data: rs.data
|
|
301
|
-
})
|
|
302
285
|
})
|
|
303
286
|
this.cancelConnectRequest = () => {
|
|
304
287
|
this._cacheLoadPromise.abort()
|
|
@@ -315,75 +298,9 @@ export default class ClientChatAccount {
|
|
|
315
298
|
return this.loadData()
|
|
316
299
|
}
|
|
317
300
|
|
|
318
|
-
/**
|
|
319
|
-
* 设置指定企微账号的待处理好友请求数量,并重算all
|
|
320
|
-
*/
|
|
321
|
-
setAccountGreetingUnreadMsgCount (params) {
|
|
322
|
-
if (!params || !params.qwAccountId) {
|
|
323
|
-
throw new Error('缺少必须参数')
|
|
324
|
-
}
|
|
325
|
-
Vue.set(this.data.accountGreetingUnreadMsgCountData, params.qwAccountId, params.count || 0)
|
|
326
|
-
this.updateAllAccountGreetingUnreadMsgCount()
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
updateAllAccountGreetingUnreadMsgCount () {
|
|
330
|
-
const allCount = Object.keys(this.data.accountGreetingUnreadMsgCountData).reduce((rs, key) => {
|
|
331
|
-
return key === 'all' ? rs : rs + (this.data.accountGreetingUnreadMsgCountData[key] || 0)
|
|
332
|
-
}, 0)
|
|
333
|
-
Vue.set(this.data.accountGreetingUnreadMsgCountData, 'all', allCount)
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
/**
|
|
337
|
-
* 获取待处理好友请求数量
|
|
338
|
-
* qwAccountIds不传则刷新所有账号;后端数量为0的账号不返回,所以先置0再覆盖
|
|
339
|
-
*/
|
|
340
|
-
getAccountGreetingUnreadMsgCount (params) {
|
|
341
|
-
if (!this.getAccountGreetingUnreadMsgCountMethod) {
|
|
342
|
-
return Promise.reject(new Error('getAccountGreetingUnreadMsgCountMethod未定义'))
|
|
343
|
-
}
|
|
344
|
-
let qwAccountIds = (params || {}).qwAccountIds
|
|
345
|
-
if (qwAccountIds && !Array.isArray(qwAccountIds)) {
|
|
346
|
-
qwAccountIds = [qwAccountIds]
|
|
347
|
-
}
|
|
348
|
-
qwAccountIds = (qwAccountIds || []).filter((id, index, data) => id && data.indexOf(id) === index).map(String)
|
|
349
|
-
const isAll = !qwAccountIds.length
|
|
350
|
-
const requestKey = isAll ? 'all' : qwAccountIds.slice().sort().join(',')
|
|
351
|
-
if (this.greetingUnreadRequestMap[requestKey]) {
|
|
352
|
-
return this.greetingUnreadRequestMap[requestKey]
|
|
353
|
-
}
|
|
354
|
-
const request = this.getAccountGreetingUnreadMsgCountMethod({
|
|
355
|
-
qwAccountIds: isAll ? undefined : qwAccountIds
|
|
356
|
-
}).then(rs => {
|
|
357
|
-
const targetIds = isAll ? Object.keys(this.accountMap) : qwAccountIds
|
|
358
|
-
targetIds.forEach(id => {
|
|
359
|
-
Vue.set(this.data.accountGreetingUnreadMsgCountData, id, 0)
|
|
360
|
-
})
|
|
361
|
-
;((rs && rs.data) || []).forEach(item => {
|
|
362
|
-
if (item && item.qwAccountId) {
|
|
363
|
-
Vue.set(this.data.accountGreetingUnreadMsgCountData, String(item.qwAccountId), item.count || 0)
|
|
364
|
-
}
|
|
365
|
-
})
|
|
366
|
-
this.updateAllAccountGreetingUnreadMsgCount()
|
|
367
|
-
return this.data.accountGreetingUnreadMsgCountData
|
|
368
|
-
}).finally(() => {
|
|
369
|
-
delete this.greetingUnreadRequestMap[requestKey]
|
|
370
|
-
})
|
|
371
|
-
this.greetingUnreadRequestMap[requestKey] = request
|
|
372
|
-
return request
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* 刷新所有账号的待处理好友请求数量
|
|
377
|
-
*/
|
|
378
|
-
refreshAllAccountGreetingUnreadMsgCount () {
|
|
379
|
-
return this.getAccountGreetingUnreadMsgCount()
|
|
380
|
-
}
|
|
381
|
-
|
|
382
301
|
reset () {
|
|
383
302
|
this.data.accountData = []
|
|
384
303
|
this.data.accountUnreadMessageNumData = []
|
|
385
|
-
this.data.accountGreetingUnreadMsgCountData = {}
|
|
386
|
-
this.greetingUnreadRequestMap = {}
|
|
387
304
|
if (this.cancelConnectRequest) {
|
|
388
305
|
this.cancelConnectRequest()
|
|
389
306
|
}
|
|
@@ -126,7 +126,11 @@ export default class ClientChatContacts {
|
|
|
126
126
|
*/
|
|
127
127
|
roomBindMemberMap: {},
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
/**
|
|
130
|
+
* 标记通讯录是否修改了
|
|
131
|
+
* 如果修改了,比如接收到了分配好友的会话时,一定通讯录变了,变了的时候界面需要根据这个状态刷新通讯录
|
|
132
|
+
*/
|
|
133
|
+
isModify: false
|
|
130
134
|
})
|
|
131
135
|
|
|
132
136
|
friendMap = {}
|
|
@@ -233,6 +237,10 @@ export default class ClientChatContacts {
|
|
|
233
237
|
return this.data.roomGroupData
|
|
234
238
|
}
|
|
235
239
|
|
|
240
|
+
get isModify () {
|
|
241
|
+
return this.data.isModify
|
|
242
|
+
}
|
|
243
|
+
|
|
236
244
|
setRoomGroup (data) {
|
|
237
245
|
this.data.roomGroupData = []
|
|
238
246
|
if (data && data.length) {
|
|
@@ -483,10 +491,10 @@ export default class ClientChatContacts {
|
|
|
483
491
|
}
|
|
484
492
|
}
|
|
485
493
|
const qwAccountId = this.roomMap[id].qwAccountId
|
|
486
|
-
if (qwAccountId && this.data.
|
|
487
|
-
const bindIndex = this.data.
|
|
494
|
+
if (qwAccountId && this.data.accountBindFriendMap[qwAccountId] && this.data.accountBindFriendMap[qwAccountId][groupId]) {
|
|
495
|
+
const bindIndex = this.data.accountBindFriendMap[qwAccountId][groupId].indexOf(this.roomMap[id])
|
|
488
496
|
if (bindIndex >= 0) {
|
|
489
|
-
this.data.
|
|
497
|
+
this.data.accountBindFriendMap[qwAccountId][groupId].splice(bindIndex, 1)
|
|
490
498
|
}
|
|
491
499
|
}
|
|
492
500
|
})
|
|
@@ -620,37 +628,6 @@ export default class ClientChatContacts {
|
|
|
620
628
|
return rs
|
|
621
629
|
})
|
|
622
630
|
}
|
|
623
|
-
|
|
624
|
-
/**
|
|
625
|
-
* 强制从服务端刷新好友资料,绕过本地缓存。
|
|
626
|
-
*/
|
|
627
|
-
refreshFriend (friendId) {
|
|
628
|
-
if (!friendId) {
|
|
629
|
-
return Promise.reject('缺少好友id')
|
|
630
|
-
}
|
|
631
|
-
if (!this.getContactsFriendMethod) {
|
|
632
|
-
return Promise.reject(new Error('getContactsFriendMethod未定义'))
|
|
633
|
-
}
|
|
634
|
-
return this.getContactsFriendMethod({
|
|
635
|
-
id: friendId
|
|
636
|
-
}).then(rs => {
|
|
637
|
-
if (!rs || !rs.data) {
|
|
638
|
-
return Promise.reject('未找到好友' + friendId)
|
|
639
|
-
}
|
|
640
|
-
if (this.friendMap[friendId]) {
|
|
641
|
-
const nextKeys = Object.keys(rs.data)
|
|
642
|
-
Object.keys(this.friendMap[friendId]).forEach(key => {
|
|
643
|
-
if (!nextKeys.includes(key)) {
|
|
644
|
-
Vue.delete(this.friendMap[friendId], key)
|
|
645
|
-
}
|
|
646
|
-
})
|
|
647
|
-
this.updateFriend(friendId, rs.data)
|
|
648
|
-
} else {
|
|
649
|
-
this.addFriend(rs.data)
|
|
650
|
-
}
|
|
651
|
-
return rs
|
|
652
|
-
})
|
|
653
|
-
}
|
|
654
631
|
|
|
655
632
|
setRoomMemberData (roomId, data) {
|
|
656
633
|
if (!roomId) {
|
|
@@ -761,52 +738,12 @@ export default class ClientChatContacts {
|
|
|
761
738
|
})
|
|
762
739
|
}
|
|
763
740
|
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
return Promise.reject('缺少群id')
|
|
767
|
-
}
|
|
768
|
-
if (!this.getContactsRoomMethod) {
|
|
769
|
-
return Promise.reject(new Error('getContactsRoomMethod未定义'))
|
|
770
|
-
}
|
|
771
|
-
return this.getContactsRoomMethod({
|
|
772
|
-
id
|
|
773
|
-
}).then(rs => {
|
|
774
|
-
if (!rs || !rs.data) {
|
|
775
|
-
return Promise.reject('未找到群' + id)
|
|
776
|
-
}
|
|
777
|
-
const localRoom = this.roomMap[id]
|
|
778
|
-
if (localRoom) {
|
|
779
|
-
this.removeRoom(id)
|
|
780
|
-
const nextKeys = Object.keys(rs.data)
|
|
781
|
-
Object.keys(localRoom).forEach(key => {
|
|
782
|
-
if (!nextKeys.includes(key)) {
|
|
783
|
-
Vue.delete(localRoom, key)
|
|
784
|
-
}
|
|
785
|
-
})
|
|
786
|
-
Object.keys(rs.data).forEach(key => {
|
|
787
|
-
Vue.set(localRoom, key, rs.data[key])
|
|
788
|
-
})
|
|
789
|
-
}
|
|
790
|
-
this.addRoom(localRoom || rs.data)
|
|
791
|
-
return rs
|
|
792
|
-
})
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
isModify (qwAccountId) {
|
|
796
|
-
return !!(qwAccountId && this.data.modifiedAccountMap[qwAccountId])
|
|
797
|
-
}
|
|
798
|
-
|
|
799
|
-
markModify (qwAccountIds) {
|
|
800
|
-
const ids = Array.isArray(qwAccountIds) ? qwAccountIds : [qwAccountIds]
|
|
801
|
-
ids.filter(Boolean).forEach(id => {
|
|
802
|
-
Vue.set(this.data.modifiedAccountMap, id, true)
|
|
803
|
-
})
|
|
741
|
+
markModify () {
|
|
742
|
+
this.data.isModify = true
|
|
804
743
|
}
|
|
805
744
|
|
|
806
|
-
unmarkModify (
|
|
807
|
-
|
|
808
|
-
Vue.delete(this.data.modifiedAccountMap, qwAccountId)
|
|
809
|
-
}
|
|
745
|
+
unmarkModify () {
|
|
746
|
+
this.data.isModify = false
|
|
810
747
|
}
|
|
811
748
|
|
|
812
749
|
reset () {
|
|
@@ -821,7 +758,6 @@ export default class ClientChatContacts {
|
|
|
821
758
|
this.data.groupBindRoomMap = {}
|
|
822
759
|
this.data.accountBindFriendMap = {}
|
|
823
760
|
this.data.accountBindRoomMap = {}
|
|
824
|
-
this.data.modifiedAccountMap = {}
|
|
825
761
|
this._cacheFriendGroupCountMap = null
|
|
826
762
|
this._cacheRoomGroupCountMap = null
|
|
827
763
|
if (this.cancelConnectRequest) {
|
|
@@ -833,4 +769,4 @@ export default class ClientChatContacts {
|
|
|
833
769
|
this.cancelRefreshRequest = null
|
|
834
770
|
}
|
|
835
771
|
}
|
|
836
|
-
}
|
|
772
|
+
}
|
|
@@ -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
|
-
* "
|
|
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.
|
|
218
|
+
if (data.sendStatus === 0) {
|
|
232
219
|
// 发送成功
|
|
233
|
-
} else if (data.
|
|
220
|
+
} else if (data.sendStatus === 2) {
|
|
234
221
|
// 发送失败
|
|
235
|
-
} else if (data.
|
|
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
|
+
}
|