diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 8ada3b24c..2ae0a0fb8 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -873,9 +873,11 @@ export default { mounted() { this.subMsgListener() + emitter.on('dialogMsgChange', this.onMsgChange); }, beforeDestroy() { + emitter.off('dialogMsgChange', this.onMsgChange); this.subMsgListener(true) this.generateUnreadData(this.dialogId) // @@ -905,7 +907,6 @@ export default { 'dialogMsgTransfer', 'dialogMsgKeep', 'dialogIns', - 'dialogMsgStream', 'cacheDialogs', 'wsOpenNum', 'touchBackInProgress', @@ -1484,34 +1485,6 @@ export default { return } document.getSelection().removeAllRanges(); - }, - - dialogMsgStream(data) { - const item = this.allMsgs.find(({type, id}) => type == "text" && id == data.id) - if (!item) { - return - } - if (typeof this.msgChangeCache[data.id] === "undefined") { - this.msgChangeCache[data.id] = [] - this.msgChangeCache[`${data.id}_load`] = false - } - switch (data.type) { - case 'append': - data.text && this.msgChangeCache[data.id].push(...`${data.text}`.split("").map(text => { - return { - type: 'append', - text - } - })) - break; - case 'replace': - this.msgChangeCache[data.id] = [{ - type: 'replace', - text: data.text - }] - break; - } - this.onMsgOutput(data.id, item.msg) } }, @@ -1887,6 +1860,38 @@ export default { } }, + /** + * 消息变化处理 + * @param data + */ + onMsgChange(data) { + const item = this.allMsgs.find(({type, id}) => type == "text" && id == data.id) + if (!item) { + return + } + if (typeof this.msgChangeCache[data.id] === "undefined") { + this.msgChangeCache[data.id] = [] + this.msgChangeCache[`${data.id}_load`] = false + } + switch (data.type) { + case 'append': + data.text && this.msgChangeCache[data.id].push(...`${data.text}`.split("").map(text => { + return { + type: 'append', + text + } + })) + break; + case 'replace': + this.msgChangeCache[data.id] = [{ + type: 'replace', + text: data.text + }] + break; + } + this.onMsgOutput(data.id, item.msg) + }, + /** * 追加或替换消息 * @param id diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index eb32fca69..e9fd0c7e9 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -3452,10 +3452,9 @@ export default { * 消息流 * @param state * @param dispatch - * @param commit * @param streamUrl */ - streamDialogMsg({state, dispatch, commit}, streamUrl) { + streamDialogMsg({state, dispatch}, streamUrl) { if (!/^https?:\/\//i.test(streamUrl)) { streamUrl = $A.mainUrl(streamUrl.substring(1)) } @@ -3468,7 +3467,7 @@ export default { case 'append': case 'replace': const data = $A.jsonParse(e.data); - commit('setDialogMsgStream', { + emitter.emit('dialogMsgChange', { type, id: e.lastEventId, text: data.content diff --git a/resources/assets/js/store/mutations.js b/resources/assets/js/store/mutations.js index 9b47c2196..03048022a 100644 --- a/resources/assets/js/store/mutations.js +++ b/resources/assets/js/store/mutations.js @@ -1,5 +1,3 @@ export default { - setDialogMsgStream(state, data) { - state.dialogMsgStream = data; - } + } diff --git a/resources/assets/js/store/state.js b/resources/assets/js/store/state.js index 1d6f5fb95..f2af66a71 100644 --- a/resources/assets/js/store/state.js +++ b/resources/assets/js/store/state.js @@ -121,7 +121,6 @@ export default { dialogHistory: [], dialogDraftTimer: {}, dialogMsgTransfer: {time: 0}, - dialogMsgStream: {}, dialogSseList: [], dialogDroupWordChain: {}, dialogGroupVote: {},