@aochuang/client-sdk 1.0.345 → 1.0.347

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 (140) hide show
  1. package/components/index.js +6 -1
  2. package/components/session-select/session-select-item.vue +8 -9
  3. package/components/wework-chat-control/company-card/company-card.vue +1 -1
  4. package/components/wework-chat-control/file-url/file-url.vue +2 -5
  5. package/components/wework-chat-control/image/image.vue +137 -2
  6. package/components/wework-chat-control/index.js +6 -6
  7. package/components/wework-chat-control/text/text.vue +22 -3
  8. package/components/wework-chat-control/util.js +12 -6
  9. package/components/wework-chat-control/video/video.vue +10 -2
  10. package/components/wework-chat-control/voice/voice.vue +1 -1
  11. package/components/wework-chat-control/wework-chat-control-config-item.vue +24 -0
  12. package/components/wework-chat-control/wework-chat-control-config-msg.vue +25 -0
  13. package/{uni-components/chat-control/chat-control-config.vue → components/wework-chat-control/wework-chat-control-config.vue} +16 -13
  14. package/components/wework-chat-panel/chat-panel-chat-status/chat-panel-chat-status.vue +73 -0
  15. package/components/wework-chat-panel/chat-panel-item.vue +12 -35
  16. package/components/wework-chat-panel/chat-panel.vue +95 -12
  17. package/package.json +10 -3
  18. package/services/client-chat/client-chat-wechat/client-chat-account.js +1 -1
  19. package/services/client-chat/client-chat-wechat/client-chat-session.js +26 -105
  20. package/services/client-chat/client-chat-wechat/client-chat.js +110 -224
  21. package/services/client-chat/client-chat-wework/client-chat-concats.js +81 -17
  22. package/services/client-chat/client-chat-wework/client-chat-message.js +46 -6
  23. package/services/client-chat/client-chat-wework/client-chat-session.js +50 -2
  24. package/services/client-chat/client-chat-wework/client-chat-socket.js +9 -1
  25. package/services/client-chat/client-chat-wework/client-chat.js +281 -11
  26. package/services/client-chat/client-chat-wework/utils.js +5 -5
  27. package/components/wework-chat-panel/chat-panel-controls/company-card/company-card.vue +0 -35
  28. package/components/wework-chat-panel/chat-panel-controls/expression/expression.vue +0 -36
  29. package/components/wework-chat-panel/chat-panel-controls/file-url/file-url.vue +0 -35
  30. package/components/wework-chat-panel/chat-panel-controls/image/image.vue +0 -36
  31. package/components/wework-chat-panel/chat-panel-controls/index.js +0 -35
  32. package/components/wework-chat-panel/chat-panel-controls/jx-sys-text/jx-sys-text.vue +0 -28
  33. package/components/wework-chat-panel/chat-panel-controls/link/link.vue +0 -35
  34. package/components/wework-chat-panel/chat-panel-controls/location/location.vue +0 -35
  35. package/components/wework-chat-panel/chat-panel-controls/text/text.vue +0 -43
  36. package/components/wework-chat-panel/chat-panel-controls/unkonw/unkonw.vue +0 -39
  37. package/components/wework-chat-panel/chat-panel-controls/video/video.vue +0 -37
  38. package/components/wework-chat-panel/chat-panel-controls/voice/voice.vue +0 -35
  39. package/uni-common/account-portray/account-portray.vue +0 -51
  40. package/uni-common/account-select/account-select-item.vue +0 -172
  41. package/uni-common/account-select/account-select.vue +0 -252
  42. package/uni-common/all-friend-avatar/all-friend-avatar.vue +0 -49
  43. package/uni-common/friend-avatar/default.svg +0 -1
  44. package/uni-common/friend-avatar/friend-avatar.vue +0 -27
  45. package/uni-common/friend-avatar/index.js +0 -3
  46. package/uni-common/friend-loader/friend-loader.vue +0 -53
  47. package/uni-common/friend-portray/friend-portray.vue +0 -56
  48. package/uni-common/group-avatar/default.svg +0 -1
  49. package/uni-common/group-avatar/group-avatar.vue +0 -18
  50. package/uni-common/group-avatar/index.js +0 -3
  51. package/uni-common/room-avatar/default.svg +0 -6
  52. package/uni-common/room-avatar/index.js +0 -3
  53. package/uni-common/room-avatar/room-avatar.vue +0 -27
  54. package/uni-common/room-loader/room-loader.vue +0 -53
  55. package/uni-common/room-portray/room-portray.vue +0 -56
  56. package/uni-components/chat-control/calling/calling.vue +0 -91
  57. package/uni-components/chat-control/calling/phone-fill.svg +0 -1
  58. package/uni-components/chat-control/calling/vidicon-fill.svg +0 -1
  59. package/uni-components/chat-control/channel-video/channel-video.vue +0 -89
  60. package/uni-components/chat-control/channel-video-card/channel-video-card.vue +0 -105
  61. package/uni-components/chat-control/channel-video-live/channel-video-live.vue +0 -92
  62. package/uni-components/chat-control/chat-control-config-item/chat-control-config-item.vue +0 -20
  63. package/uni-components/chat-control/chat-control-config-item/index.js +0 -3
  64. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-app.vue +0 -25
  65. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-h5.vue +0 -21
  66. package/uni-components/chat-control/chat-control.vue +0 -218
  67. package/uni-components/chat-control/company-card/company-card.vue +0 -123
  68. package/uni-components/chat-control/const.js +0 -28
  69. package/uni-components/chat-control/expression/expression.vue +0 -41
  70. package/uni-components/chat-control/image/image.vue +0 -68
  71. package/uni-components/chat-control/index.js +0 -89
  72. package/uni-components/chat-control/location/location.vue +0 -110
  73. package/uni-components/chat-control/member-change/member-change.vue +0 -32
  74. package/uni-components/chat-control/quote-message/quote-message.vue +0 -216
  75. package/uni-components/chat-control/real-time-position/real-time-position.vue +0 -62
  76. package/uni-components/chat-control/redpacket/red-envelope.svg +0 -1
  77. package/uni-components/chat-control/redpacket/redpacket.vue +0 -75
  78. package/uni-components/chat-control/share-card/share-card.vue +0 -101
  79. package/uni-components/chat-control/system/system.vue +0 -69
  80. package/uni-components/chat-control/system-batch-message/system-batch-message.vue +0 -30
  81. package/uni-components/chat-control/system-text/system-text.vue +0 -32
  82. package/uni-components/chat-control/text/text.vue +0 -67
  83. package/uni-components/chat-control/text-with-at/text-with-at.vue +0 -51
  84. package/uni-components/chat-control/transfer/red-transfer.svg +0 -1
  85. package/uni-components/chat-control/transfer/transfer.vue +0 -80
  86. package/uni-components/chat-control/unkonw/unkonw.vue +0 -37
  87. package/uni-components/chat-control/url/icons/file-excel-line.svg +0 -1
  88. package/uni-components/chat-control/url/icons/file-info-line.svg +0 -1
  89. package/uni-components/chat-control/url/icons/file-music-line.svg +0 -1
  90. package/uni-components/chat-control/url/icons/file-pdf-line.svg +0 -1
  91. package/uni-components/chat-control/url/icons/file-ppt-line.svg +0 -1
  92. package/uni-components/chat-control/url/icons/file-settings-line.svg +0 -1
  93. package/uni-components/chat-control/url/icons/file-text-line.svg +0 -1
  94. package/uni-components/chat-control/url/icons/file-unknow-line.svg +0 -1
  95. package/uni-components/chat-control/url/icons/file-word-line.svg +0 -1
  96. package/uni-components/chat-control/url/icons/file-zip-line.svg +0 -1
  97. package/uni-components/chat-control/url/icons/index.js +0 -24
  98. package/uni-components/chat-control/url/miniprogram.svg +0 -1
  99. package/uni-components/chat-control/url/url-miniprogram.vue +0 -116
  100. package/uni-components/chat-control/url/url.vue +0 -306
  101. package/uni-components/chat-control/url-new/icons/file-excel-line.svg +0 -1
  102. package/uni-components/chat-control/url-new/icons/file-info-line.svg +0 -1
  103. package/uni-components/chat-control/url-new/icons/file-music-line.svg +0 -1
  104. package/uni-components/chat-control/url-new/icons/file-pdf-line.svg +0 -1
  105. package/uni-components/chat-control/url-new/icons/file-ppt-line.svg +0 -1
  106. package/uni-components/chat-control/url-new/icons/file-settings-line.svg +0 -1
  107. package/uni-components/chat-control/url-new/icons/file-text-line.svg +0 -1
  108. package/uni-components/chat-control/url-new/icons/file-unknow-line.svg +0 -1
  109. package/uni-components/chat-control/url-new/icons/file-word-line.svg +0 -1
  110. package/uni-components/chat-control/url-new/icons/file-zip-line.svg +0 -1
  111. package/uni-components/chat-control/url-new/icons/index.js +0 -24
  112. package/uni-components/chat-control/url-new/url-new.vue +0 -110
  113. package/uni-components/chat-control/utils.js +0 -12
  114. package/uni-components/chat-control/video/video.vue +0 -156
  115. package/uni-components/chat-control/voice/voice.vue +0 -166
  116. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-collect.vue +0 -84
  117. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-system.vue +0 -28
  118. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet.vue +0 -85
  119. package/uni-components/chat-editor/chat-editor-func/chat-editor-func.vue +0 -157
  120. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at-panel.vue +0 -158
  121. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at.vue +0 -61
  122. package/uni-components/chat-editor/chat-editor-func-button/chat-editor-func-button.vue +0 -58
  123. package/uni-components/chat-editor/chat-editor-func-file/chat-editor-func-file.vue +0 -54
  124. package/uni-components/chat-editor/chat-editor-func-image/chat-editor-func-image.vue +0 -42
  125. package/uni-components/chat-editor/chat-editor-func-video/chat-editor-func-video.vue +0 -42
  126. package/uni-components/chat-editor/chat-editor-func-voice/chat-editor-func-voice.vue +0 -25
  127. package/uni-components/chat-editor/chat-editor-message-send/chat-editor-message-send.vue +0 -158
  128. package/uni-components/chat-editor/chat-editor-quote/chat-editor-quote.vue +0 -75
  129. package/uni-components/chat-editor/chat-editor.vue +0 -257
  130. package/uni-components/chat-editor/index.js +0 -10
  131. package/uni-components/chat-editor/util.js +0 -65
  132. package/uni-components/chat-panel/chat-panel-chats-box.vue +0 -238
  133. package/uni-components/chat-panel/chat-panel-chats-forward/chat-panel-chats-forward.vue +0 -273
  134. package/uni-components/chat-panel/chat-panel-chats-item.vue +0 -578
  135. package/uni-components/chat-panel/chat-panel-chats-status/chat-panel-chats-status.vue +0 -71
  136. package/uni-components/chat-panel/chat-panel-chats.vue +0 -368
  137. package/uni-components/chat-panel/chat-panel.vue +0 -227
  138. package/uni-components/contacts-group-select/contacts-group-select-item.vue +0 -85
  139. package/uni-components/contacts-group-select/contacts-group-select-panel.vue +0 -119
  140. package/uni-components/contacts-group-select/contacts-group-select.vue +0 -150
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <wechat-chat-control-config-msg
2
+ <wework-chat-control-config-msg
3
3
  :msgData="item"
4
4
  >
5
5
  <template slot-scope="{ configData }">
@@ -7,7 +7,7 @@
7
7
  <template v-if="item.msgType !== '_EMPTY_'">
8
8
  <slot name="chat-prefix" :item="item"></slot>
9
9
  </template>
10
- <template v-if="[0, 1, 2].includes(item.msgType)">
10
+ <template v-if="item.msgType === MESSAGE_TYPE.TEXT || item.msgType === MESSAGE_TYPE.TEXT_W">
11
11
  <sdk-chat-panel-box
12
12
  :dir="dir"
13
13
  :data="item"
@@ -26,7 +26,7 @@
26
26
  </template>
27
27
  </sdk-chat-panel-box>
28
28
  </template>
29
- <template v-else-if="[14, 101].includes(item.msgType)">
29
+ <template v-else-if="item.msgType === MESSAGE_TYPE.IMAGE">
30
30
  <sdk-chat-panel-box
31
31
  :dir="dir"
32
32
  :data="item"
@@ -45,7 +45,7 @@
45
45
  </template>
46
46
  </sdk-chat-panel-box>
47
47
  </template>
48
- <template v-else-if="[22, 23, 103].includes(item.msgType)">
48
+ <template v-else-if="item.msgType === MESSAGE_TYPE.VIDEO">
49
49
  <sdk-chat-panel-box
50
50
  :dir="dir"
51
51
  :data="item"
@@ -289,7 +289,7 @@
289
289
  </template>
290
290
  </sdk-chat-panel-box>
291
291
  </template>
292
- <template v-else-if="item.msgType == MESSAGE_TYPE.URL">
292
+ <template v-else-if="item.msgType == MESSAGE_TYPE.URL || item.msgType == MESSAGE_TYPE.URLNew">
293
293
  <sdk-chat-panel-box
294
294
  :dir="dir"
295
295
  :data="item"
@@ -312,29 +312,6 @@
312
312
  </template>
313
313
  </sdk-chat-panel-box>
314
314
  </template>
315
- <template v-else-if="[13, 15, 20, 102].includes(item.msgType)">
316
- <sdk-chat-panel-box
317
- :dir="dir"
318
- :data="item"
319
- :fetchUserMethod="fetchUserMethod"
320
- bg-color="#fff"
321
- br-color="#ddd"
322
- @user-avatar-click="handleUserAvatarClick"
323
- @user-avatar-contextmenu="handleUserAvatarContextmenu"
324
- >
325
- <template slot-scope="{ updateProp }">
326
- <sdk-chat-control-file-url
327
- v-bind="configData"
328
- :id="item.id"
329
- :content="msgContent"
330
- :update-chat-box-prop="updateProp"
331
- ></sdk-chat-control-file-url>
332
- </template>
333
- <template slot="append" slot-scope="{ updateProp }">
334
- <slot name="chat-append" :item="item" :update-chat-box-prop="updateProp"></slot>
335
- </template>
336
- </sdk-chat-panel-box>
337
- </template>
338
315
  <template v-else-if="item.msgType == MESSAGE_TYPE.CUSTOM_EXPRESSION">
339
316
  <sdk-chat-panel-box
340
317
  :dir="dir"
@@ -510,7 +487,7 @@
510
487
  :content="msgContent"
511
488
  ></sdk-chat-control-empty>
512
489
  </template>
513
- <!-- <template v-else>
490
+ <template v-else>
514
491
  <sdk-chat-panel-box
515
492
  :dir="dir"
516
493
  :data="item"
@@ -523,10 +500,10 @@
523
500
  :content="msgContent"
524
501
  ></sdk-chat-control-unknow>
525
502
  </sdk-chat-panel-box>
526
- </template> -->
503
+ </template>
527
504
  </div>
528
505
  </template>
529
- </wechat-chat-control-config-msg>
506
+ </wework-chat-control-config-msg>
530
507
  </template>
531
508
  <script>
532
509
  import SdkChatPanelBox from '../chat-panel/chat-panel-box'
@@ -564,10 +541,10 @@ import {
564
541
  unknow as SdkChatControlUnknow
565
542
  } from '../wework-chat-control'
566
543
  import { MESSAGE_TYPE } from '../wework-chat-control/util'
567
- import WechatChatControlConfigMsg from '../wechat-chat-control/wechat-chat-control-config-msg.vue'
544
+ import WeworkChatControlConfigMsg from '../wework-chat-control/wework-chat-control-config-msg.vue'
568
545
 
569
546
  export default {
570
- name: 'SdkWechatPanelItem',
547
+ name: 'SdkWeworkPanelItem',
571
548
  components: {
572
549
  SdkChatPanelBox,
573
550
  SdkChatControlText,
@@ -601,7 +578,7 @@ export default {
601
578
  // SdkChatControlRevokeMeMessage,
602
579
  // SdkChatControlRevokeOtherMessage,
603
580
  // SdkChatControlRevokeYouMessage,
604
- WechatChatControlConfigMsg
581
+ WeworkChatControlConfigMsg
605
582
  },
606
583
  props: {
607
584
  dir: {
@@ -647,4 +624,4 @@ export default {
647
624
  }
648
625
  }
649
626
  }
650
- </script>
627
+ </script>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <sdk-chat-panel
3
3
  ref="panel"
4
- v-bind="$props"
4
+ v-bind="props"
5
5
  :is-sender-method="handleIsSenderMethod"
6
6
  @initloaded="handleChatsInitLoaded"
7
7
  @chat-contextmenu="handleChatContext"
@@ -17,12 +17,12 @@
17
17
  :fetch-user-method="fetchUserMethod"
18
18
  :config="config"
19
19
  >
20
- <!-- <template slot="chat-append" slot-scope="{ item, updateProp }">
20
+ <template slot="chat-append" slot-scope="{ item, updateProp }">
21
21
  <chat-panel-chat-status
22
22
  :data="item"
23
23
  :update-chat-box-prop="updateProp"
24
24
  ></chat-panel-chat-status>
25
- </template> -->
25
+ </template>
26
26
  <template slot="chat-prefix" slot-scope="{ item }">
27
27
  <template v-if="selectable && handleFilterSelectMessageMethod(item)">
28
28
  <div class="sdk-wechat-chat-panel__checkbox">
@@ -37,18 +37,23 @@
37
37
  </template>
38
38
  <template slot="main">
39
39
  <slot name="main"></slot>
40
+ <template v-if="selectable">
41
+ <slot name="selection" :total="checkTotal"></slot>
42
+ </template>
40
43
  </template>
41
44
  </sdk-chat-panel>
42
45
  </template>
43
46
  <script>
44
47
  import SdkChatPanel from '../chat-panel'
45
48
  import ChatPanelItem from './chat-panel-item.vue'
49
+ import ChatPanelChatStatus from './chat-panel-chat-status/chat-panel-chat-status.vue'
46
50
 
47
51
  export default {
48
52
  name: 'SdkWeworkChatPanel',
49
53
  components: {
50
54
  SdkChatPanel,
51
- ChatPanelItem
55
+ ChatPanelItem,
56
+ ChatPanelChatStatus
52
57
  },
53
58
  props: {
54
59
  mode: {
@@ -59,7 +64,8 @@ export default {
59
64
  }
60
65
  },
61
66
  keyField: {
62
- type: String
67
+ type: String,
68
+ default: 'id'
63
69
  },
64
70
  startDate: {
65
71
  type: Number
@@ -88,9 +94,6 @@ export default {
88
94
  type: Boolean,
89
95
  default: true
90
96
  },
91
- renderControl: {
92
- type: Function
93
- },
94
97
  fetchUserMethod: {
95
98
  type: Function
96
99
  },
@@ -126,12 +129,33 @@ export default {
126
129
  },
127
130
  contextChatId: {
128
131
  type: String
132
+ },
133
+ onBeforeSelectionChange: {
134
+ type: Function
129
135
  }
130
136
  },
131
- methods: {
132
- handleRenderControl ({ item }) {
133
- return ChatControls[item.msgType] || ChatControls.unkonw
137
+ data () {
138
+ return {
139
+ checkMsgMap: {}
140
+ }
141
+ },
142
+ computed: {
143
+ props () {
144
+ const { config, ...nextProps } = this.$props
145
+ return nextProps
134
146
  },
147
+ checkTotal () {
148
+ return Object.keys(this.checkMsgMap).length
149
+ }
150
+ },
151
+ watch: {
152
+ selectable () {
153
+ if (!this.selectable) {
154
+ this.checkMsgMap = {}
155
+ }
156
+ }
157
+ },
158
+ methods: {
135
159
  handleIsSenderMethod ({ item }) {
136
160
  return !!item.send
137
161
  },
@@ -148,8 +172,67 @@ export default {
148
172
  this.currentContextChat = null
149
173
  return this.$refs.panel && this.$refs.panel.reload()
150
174
  },
175
+ handleFilterSelectMessageMethod (msg) {
176
+ if (!this.filterSelectMessageMethod) {
177
+ return true
178
+ }
179
+ return this.filterSelectMessageMethod({
180
+ item: msg
181
+ })
182
+ },
183
+ handleMsgCheckboxChange (msg, value) {
184
+ if (value) {
185
+ this.selectChat(msg)
186
+ } else {
187
+ this.unselectChat(msg)
188
+ }
189
+ },
190
+ selectChat (chat) {
191
+ if (!chat) {
192
+ return
193
+ }
194
+ if (!this.selectable) {
195
+ console.warn('未开启选择')
196
+ return
197
+ }
198
+ if (this.onBeforeSelectionChange && this.onBeforeSelectionChange({
199
+ chat,
200
+ value: true
201
+ }) === false) {
202
+ return
203
+ }
204
+ this.$set(this.checkMsgMap, chat[this.keyField], chat)
205
+ },
206
+ unselectChat (chat) {
207
+ if (!chat) {
208
+ return
209
+ }
210
+ if (!this.selectable) {
211
+ console.warn('未开启选择')
212
+ return
213
+ }
214
+ if (this.onBeforeSelectionChange && this.onBeforeSelectionChange({
215
+ chat,
216
+ value: false
217
+ }) === false) {
218
+ return
219
+ }
220
+ this.$delete(this.checkMsgMap, chat[this.keyField])
221
+ },
222
+ unselectAllChat () {
223
+ return Object.keys(this.checkMsgMap).map(key => {
224
+ return this.unselectChat(this.checkMsgMap[key])
225
+ })
226
+ },
227
+ getSelectChats () {
228
+ return Object.keys(this.checkMsgMap).map(key => {
229
+ return this.checkMsgMap[key]
230
+ })
231
+ },
151
232
  handleChatContext (item, evt) {
152
- this.$emit('chat-contextmenu', item, evt)
233
+ this.$emit('chat-contextmenu', {
234
+ item
235
+ }, evt)
153
236
  },
154
237
  handleChatViewContext ({ item }) {
155
238
  this.$emit('chat-view-context', {
package/package.json CHANGED
@@ -1,9 +1,16 @@
1
1
  {
2
2
  "name": "@aochuang/client-sdk",
3
- "version": "1.0.345",
3
+ "version": "1.0.347",
4
4
  "description": "",
5
- "scripts": {
6
- "test": "echo \"Error: no test specified\" && exit 1"
5
+ "files": [
6
+ "common",
7
+ "components",
8
+ "services",
9
+ "utils",
10
+ "dist"
11
+ ],
12
+ "exports": {
13
+ ".": "./components/index.js"
7
14
  },
8
15
  "repository": {
9
16
  "type": "git",
@@ -203,7 +203,7 @@ export default class ClientChatAccount {
203
203
 
204
204
  refreshAccountUnreadMessageNum (params) {
205
205
  const { wechatAccountId, ...nextParams } = params
206
- return this.getAccountUnreadMessageNumMethod(Object.assign({
206
+ this.getAccountUnreadMessageNumMethod(Object.assign({
207
207
  wechatAccountIds: [wechatAccountId]
208
208
  }, nextParams)).then(rs => {
209
209
  if (!rs || !rs.data || !rs.data.length) {
@@ -5,39 +5,20 @@ import { createPollRequest } from '../../../utils/util.js'
5
5
 
6
6
  const ALL_WECHAT_ACCOUNT_ID = 'all'
7
7
 
8
- const ASSIGN_SESSION_LOG_PREFIX = '[client-chat][assign-session]'
9
- const ASSIGN_SESSION_MERGE_EXCLUDE_FIELDS = [
10
- 'conversationId',
11
- 'wechatAccountId',
12
- 'lastMsgTime',
13
- 'lastUpdateTime',
14
- 'stickyOnTop',
15
- 'mute',
16
- 'lastAtMsgContent'
17
- ]
18
-
19
- const loopLoadAssignSessionData = (fetchFn, params, onPageLoaded) => {
8
+ const loopLoadAssignSessionData = (fetchFn, params) => {
20
9
  let lastPs = null
21
10
  let lastRs = null
22
11
  let result = []
23
- let page = 0
24
12
  const loopFn = (params, total) => {
25
13
  const { taskId, size, ...nextParams } = params
26
- page += 1
27
14
  lastPs = fetchFn(Object.assign({}, nextParams, {
28
15
  size,
29
16
  taskId,
30
17
  total
31
18
  }))
32
19
  lastRs = lastPs.then(rs => {
33
- const pageData = rs.data || []
34
- result = result.concat(pageData)
35
- onPageLoaded && onPageLoaded({
36
- page,
37
- pageSize: pageData.length,
38
- total: result.length
39
- })
40
- if (pageData.length < size) {
20
+ result = result.concat(rs.data || [])
21
+ if (rs.data.length < size) {
41
22
  return result
42
23
  } else {
43
24
  return loopFn(params, result.length)
@@ -207,7 +188,7 @@ export default class ClientChatSession {
207
188
  * @params { Object } data - 会话数据集合
208
189
  * @params { String } wechatAccountId - 如果传wechatAccountId那么后面addSession的时候如果传wechatAccountId那么才会更新lastUpdateTime或者lastMsgTime,本质的意思是只有通过reload和loadData才刷新lastUpdateTime或者lastMsgTime,避免这个时间乱套了
209
190
  */
210
- setSessionData (data, wechatAccountId, reset = true, context) {
191
+ setSessionData (data, wechatAccountId, reset = true) {
211
192
  if (reset) {
212
193
  this.sessionMap = {}
213
194
  this.data.sessionGroupData = {}
@@ -219,7 +200,7 @@ export default class ClientChatSession {
219
200
  if (item.isDeleted) {
220
201
  this.removeSession(item.conversationId)
221
202
  } else {
222
- this.addSession(item, wechatAccountId, context)
203
+ this.addSession(item, wechatAccountId)
223
204
  }
224
205
  })
225
206
  }
@@ -247,7 +228,11 @@ export default class ClientChatSession {
247
228
  })
248
229
  }
249
230
 
250
- getSession (sessionId, serializeMethod) {
231
+ getSession (sessionId, serializeMethod, callback = null, isCache = true) {
232
+ if (typeof callback === 'boolean') {
233
+ isCache = callback
234
+ callback = null
235
+ }
251
236
  if (this.sessionMap[sessionId]) {
252
237
  return Promise.resolve({
253
238
  data: this.sessionMap[sessionId]
@@ -255,7 +240,12 @@ export default class ClientChatSession {
255
240
  }
256
241
  // 这里需要轮询从后端获取会话,后端会话更新和创建是异步的,所以要多轮训请求几次
257
242
  if (this.pollRequestMap[sessionId]) {
258
- return this.pollRequestMap[sessionId].ps
243
+ // 因为有的地方要复用缓存,有的地方不能缓存,比如onAddMessagSuccess的时候不能缓存
244
+ if (isCache) {
245
+ return this.pollRequestMap[sessionId].ps
246
+ } else {
247
+ this.pollRequestMap[sessionId].stop()
248
+ }
259
249
  }
260
250
  const pollRequest = createPollRequest(({ done, fail }) => {
261
251
  return this.getSessionMethod({
@@ -272,7 +262,7 @@ export default class ClientChatSession {
272
262
  rs = serializeMethod(rs)
273
263
  }
274
264
  if (rs.data) {
275
- this.addSession(rs.data)
265
+ this.addSession(rs.data, null, callback)
276
266
  return rs
277
267
  } else {
278
268
  return Promise.reject('未找到会话' + sessionId)
@@ -407,7 +397,7 @@ export default class ClientChatSession {
407
397
  * "wechatAccountId": "2a39a725814acf07502299ab2285fff8d44377f5"
408
398
  * }
409
399
  */
410
- addSession (data, wechatAccountId, context) {
400
+ addSession (data, wechatAccountId, callback) {
411
401
  if (!data || !data.conversationId) {
412
402
  throw new Error('缺少必须参数conversationId')
413
403
  }
@@ -423,54 +413,11 @@ export default class ClientChatSession {
423
413
  return
424
414
  }
425
415
  let nextData = data
426
- let assignMergeLog = null
427
416
  // 如果会话已经存在,那么取已经存在的,以后有需要可以用data更新已经存在的会话,保持引用关系
428
417
  if (this.sessionMap[data.conversationId]) {
429
418
  nextData = this.sessionMap[data.conversationId]
430
- const unreadBefore = nextData.unreadMsgCount || 0
431
- const muteBefore = !!nextData.mute
432
- const changedFields = []
433
- Object.keys(data).forEach(key => {
434
- if (ASSIGN_SESSION_MERGE_EXCLUDE_FIELDS.indexOf(key) >= 0 || nextData[key] === data[key]) {
435
- return
436
- }
437
- changedFields.push(key)
438
- Vue.set(nextData, key, data[key])
439
- })
440
- if (context && context.source === 'assign-task') {
441
- assignMergeLog = {
442
- taskId: context.taskId,
443
- conversationId: data.conversationId,
444
- wechatAccountId: data.wechatAccountId,
445
- existed: true,
446
- changedFields,
447
- unreadBefore,
448
- unreadFromServer: data.unreadMsgCount || 0,
449
- unreadAfter: nextData.unreadMsgCount || 0,
450
- muteBefore,
451
- muteFromServer: !!data.mute,
452
- muteAfter: !!nextData.mute,
453
- preservedFields: ASSIGN_SESSION_MERGE_EXCLUDE_FIELDS.slice()
454
- }
455
- }
456
419
  } else {
457
420
  this.sessionMap[data.conversationId] = nextData
458
- if (context && context.source === 'assign-task') {
459
- assignMergeLog = {
460
- taskId: context.taskId,
461
- conversationId: data.conversationId,
462
- wechatAccountId: data.wechatAccountId,
463
- existed: false,
464
- changedFields: [],
465
- unreadBefore: null,
466
- unreadFromServer: data.unreadMsgCount || 0,
467
- unreadAfter: data.unreadMsgCount || 0,
468
- muteBefore: null,
469
- muteFromServer: !!data.mute,
470
- muteAfter: !!data.mute,
471
- preservedFields: []
472
- }
473
- }
474
421
  }
475
422
  const topField = nextData.stickyOnTop ? 0 : 1 // 置顶
476
423
  if (wechatAccountId && wechatAccountId !== ALL_WECHAT_ACCOUNT_ID && nextData.wechatAccountId !== wechatAccountId) {
@@ -551,12 +498,12 @@ export default class ClientChatSession {
551
498
  if (virtualSessionIndex > -1) {
552
499
  this.data.virtualSessionData.splice(virtualSessionIndex, 1)
553
500
  }
501
+ callback && callback({
502
+ session: data
503
+ })
554
504
  this.onAddSession && this.onAddSession({
555
- session: nextData
505
+ session: data
556
506
  })
557
- if (assignMergeLog) {
558
- console.info(ASSIGN_SESSION_LOG_PREFIX, 'merge', assignMergeLog)
559
- }
560
507
  }
561
508
 
562
509
  removeSession (conversationId) {
@@ -690,9 +637,7 @@ export default class ClientChatSession {
690
637
  return true
691
638
  }
692
639
  })
693
- if (index >= 0) {
694
- this.data.sessionGroupData[groupId][topField][oldSortFields.day][oldSortFields.milliseconds].splice(index, 1)
695
- }
640
+ this.data.sessionGroupData[groupId][topField][oldSortFields.day][oldSortFields.milliseconds].splice(index, 1)
696
641
  }
697
642
  })
698
643
  })
@@ -752,9 +697,7 @@ export default class ClientChatSession {
752
697
  return true
753
698
  }
754
699
  })
755
- if (index >= 0) {
756
- this.data.sessionGroupData[groupId][topField][sortFields.day][sortFields.milliseconds].splice(index, 1)
757
- }
700
+ this.data.sessionGroupData[groupId][topField][sortFields.day][sortFields.milliseconds].splice(index, 1)
758
701
  }
759
702
  })
760
703
  })
@@ -899,36 +842,14 @@ export default class ClientChatSession {
899
842
  total: 0 , // 已获取总数
900
843
  size: 50 // 每次获取数量
901
844
  }, params)
902
- const taskId = params.taskId
903
- console.info(ASSIGN_SESSION_LOG_PREFIX, 'load-start', {
904
- taskId,
905
- total: params.total,
906
- size: params.size
907
- })
908
845
  this.data.loadAssignTaskSessioning = true
909
846
  return loopLoadAssignSessionData((nextParams) => {
910
847
  return this.loadAssignTaskSessionDataMethod(nextParams)
911
- }, params, pageInfo => {
912
- console.info(ASSIGN_SESSION_LOG_PREFIX, 'page-loaded', Object.assign({ taskId }, pageInfo))
913
- }).then(rs => {
848
+ }, params).then(rs => {
914
849
  if (rs && rs.length) {
915
- this.setSessionData(rs, null, false, {
916
- source: 'assign-task',
917
- taskId
918
- })
850
+ this.setSessionData(rs, null, false)
919
851
  }
920
- console.info(ASSIGN_SESSION_LOG_PREFIX, 'load-complete', {
921
- taskId,
922
- sessionCount: rs ? rs.length : 0,
923
- wechatAccountIds: Array.from(new Set((rs || []).map(session => session.wechatAccountId)))
924
- })
925
852
  return rs
926
- }).catch(error => {
927
- console.error(ASSIGN_SESSION_LOG_PREFIX, 'load-error', {
928
- taskId,
929
- message: error && error.message ? error.message : String(error)
930
- })
931
- throw error
932
853
  }).finally(() => {
933
854
  this.data.loadAssignTaskSessioning = false
934
855
  })