From 88fb1d8e62600e20ea505bdd902fdaa6945d8604 Mon Sep 17 00:00:00 2001 From: Pang Date: Fri, 12 Jan 2024 22:51:52 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/assets/js/store/actions.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 7ad03e984..cc0d22e81 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -2857,20 +2857,36 @@ export default { }); } else if ($A.isJson(data)) { const index = state.dialogMsgs.findIndex(({id}) => id == data.id); - data = Object.assign({}, state.dialogMsgs[index], data) if (index > -1) { + const original = state.dialogMsgs[index] + if (original.read_at) { + delete data.read_at + } + data = Object.assign({}, original, data) state.dialogMsgs.splice(index, 1, data); } else { state.dialogMsgs.push(data); } $A.IDBSave("dialogMsgs", state.dialogMsgs, 600) // - const dialog = state.cacheDialogs.find(({id, last_msg}) => id == data.dialog_id && last_msg && last_msg.id === data.id); + const dialog = state.cacheDialogs.find(({id}) => id == data.dialog_id); if (dialog) { - dispatch("saveDialog", { - id: data.dialog_id, - last_msg: Object.assign({}, dialog.last_msg, data), - }) + let isUpdate = false + if (!data.read_at) { + if (dialog.unread_one) { + dialog.unread_one = Math.min(dialog.unread_one, data.id) + } else { + dialog.unread_one = data.id + } + isUpdate = true + } + if (dialog.last_msg && dialog.last_msg.id == data.id) { + dialog.last_msg = Object.assign({}, dialog.last_msg, data) + isUpdate = true + } + if (isUpdate) { + dispatch("saveDialog", dialog) + } } } },