From 50b0542e28ae77005edbbea3cef98ae6b581b54b Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sun, 26 Feb 2023 10:10:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A1=8C=E9=9D=A2=E7=AB=AF=E5=B7=B2?= =?UTF-8?q?=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/electron-preload.js | 16 ++++++++++++---- electron/package.json | 12 ++++++------ .../assets/js/pages/manage/components/Report.vue | 3 +-- .../js/pages/manage/components/TaskDetail.vue | 2 +- resources/assets/js/store/actions.js | 5 ++++- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/electron/electron-preload.js b/electron/electron-preload.js index abccd3fce..fedb94bf2 100644 --- a/electron/electron-preload.js +++ b/electron/electron-preload.js @@ -6,6 +6,7 @@ const { let reqId = 1; let reqInfo = {}; let fileChangedListeners = {}; +let onlyChangedListeners = {}; ipcRenderer.on('mainResp', (event, resp) => { let callbacks = reqInfo[resp.reqId]; @@ -50,14 +51,21 @@ contextBridge.exposeInMainWorld( sendMessage: function (action, args) { ipcRenderer.send(action, args); }, - sendSyncMessage: function (action, args) { - ipcRenderer.sendSync(action, args) - }, listenOnce: function (action, callback) { ipcRenderer.once(action, function (event, args) { callback(args); }); - } + }, + listenerOnly: function (action, callback) { + if (typeof onlyChangedListeners[action] === "function") { + ipcRenderer.removeListener(action, onlyChangedListeners[action]) + delete onlyChangedListeners[action] + } + onlyChangedListeners[action] = (event, args) => { + callback(args) + } + ipcRenderer.on(action, onlyChangedListeners[action]) + }, } ); diff --git a/electron/package.json b/electron/package.json index 62240e1e4..b266a81ad 100644 --- a/electron/package.json +++ b/electron/package.json @@ -26,13 +26,13 @@ "url": "https://github.com/kuaifan/dootask.git" }, "devDependencies": { - "@electron-forge/cli": "^6.0.4", - "@electron-forge/maker-deb": "^6.0.4", - "@electron-forge/maker-rpm": "^6.0.4", - "@electron-forge/maker-squirrel": "^6.0.4", - "@electron-forge/maker-zip": "^6.0.4", + "@electron-forge/cli": "^6.0.5", + "@electron-forge/maker-deb": "^6.0.5", + "@electron-forge/maker-rpm": "^6.0.5", + "@electron-forge/maker-squirrel": "^6.0.5", + "@electron-forge/maker-zip": "^6.0.5", "dotenv": "^16.0.3", - "electron": "^23.0.0", + "electron": "^23.1.1", "electron-builder": "^23.6.0", "electron-notarize": "^1.2.2", "form-data": "^4.0.0", diff --git a/resources/assets/js/pages/manage/components/Report.vue b/resources/assets/js/pages/manage/components/Report.vue index d12c9b0a5..8592abf7f 100644 --- a/resources/assets/js/pages/manage/components/Report.vue +++ b/resources/assets/js/pages/manage/components/Report.vue @@ -60,8 +60,7 @@ export default { this.reportTabs = this.reportType; // if (this.$isMainElectron) { - this.$Electron.removeMsgListener('reportSaveSuccess') - this.$Electron.registerMsgListener('reportSaveSuccess', ({data, msg}) => { + this.$Electron.listenerOnly('reportSaveSuccess', ({data, msg}) => { $A.messageSuccess(msg) this.saveSuccess(data) }) diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue index a284dbc8f..335641e85 100644 --- a/resources/assets/js/pages/manage/components/TaskDetail.vue +++ b/resources/assets/js/pages/manage/components/TaskDetail.vue @@ -1429,7 +1429,7 @@ export default { resizeDialog() { return new Promise(resolve => { - this.$Electron.sendSyncMessage('windowSize', { + this.$Electron.sendMessage('windowSize', { width: Math.max(1100, this.windowWidth), height: Math.max(720, this.windowHeight), minWidth: 800, diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 4b823dd1e..2f43bb88e 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -636,6 +636,9 @@ export default { state.cacheProjects = []; state.cacheColumns = []; state.cacheTasks = []; + state.dialogUpdatedAt = null; + state.dialogDeletedAt = null; + state.projectDeletedAt = null; // localStorage const languageType = window.localStorage.getItem("__language:type__"); @@ -2563,7 +2566,7 @@ export default { const resData = result.data; if ($A.isJson(resData.dialog)) { const dialogData = Object.assign(resData.dialog, {user_ms: $A.TimeM(resData.dialog.user_at)}) - setTimeout(_ => dispatch("saveDialog", dialogData), 300) // 延迟更新对话详情是因为等消息处理完 + setTimeout(_ => dispatch("saveDialog", dialogData), 600) // 延迟更新对话详情是因为等消息处理完 // const ids = resData.list.map(({id}) => id) state.dialogMsgs = state.dialogMsgs.filter(item => {