From 03feb01af414f92a3a43312bfd94020696865e75 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Tue, 6 Sep 2022 16:20:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E5=BC=B9=E5=87=BA=E5=A4=9A=E6=AC=A1=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E6=8F=90=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/electron-preload.js | 68 ++++++++++--------- .../js/pages/manage/components/Report.vue | 1 + .../js/pages/manage/components/ReportMy.vue | 2 - 3 files changed, 38 insertions(+), 33 deletions(-) diff --git a/electron/electron-preload.js b/electron/electron-preload.js index 44f4b252d..4300d33e8 100644 --- a/electron/electron-preload.js +++ b/electron/electron-preload.js @@ -1,67 +1,73 @@ -const { - contextBridge, - ipcRenderer -} = require("electron"); +const {contextBridge, ipcRenderer} = require("electron") -let reqId = 1; -let reqInfo = {}; -let fileChangedListeners = {}; +let reqId = 1 +let reqInfo = {} +let msgChangedListeners = {} +let fileChangedListeners = {} ipcRenderer.on('mainResp', (event, resp) => { - let callbacks = reqInfo[resp.reqId]; + let callbacks = reqInfo[resp.reqId] if (resp.error) { - callbacks.error(resp.msg, resp.e); + callbacks.error(resp.msg, resp.e) } else { - callbacks.callback(resp.data); + callbacks.callback(resp.data) } - delete reqInfo[resp.reqId]; -}); + delete reqInfo[resp.reqId] +}) ipcRenderer.on('fileChanged', (event, resp) => { - let listener = fileChangedListeners[resp.path]; + let listener = fileChangedListeners[resp.path] if (listener) { - listener(resp.curr, resp.prev); + listener(resp.curr, resp.prev) } -}); +}) contextBridge.exposeInMainWorld( 'electron', { request: (msg, callback, error) => { - msg.reqId = reqId++; - reqInfo[msg.reqId] = {callback: callback, error: error}; + msg.reqId = reqId++ + reqInfo[msg.reqId] = {callback: callback, error: error} if (msg.action == 'watchFile') { - fileChangedListeners[msg.path] = msg.listener; - delete msg.listener; + fileChangedListeners[msg.path] = msg.listener + delete msg.listener } - ipcRenderer.send('rendererReq', msg); + ipcRenderer.send('rendererReq', msg) }, registerMsgListener: (action, callback) => { - ipcRenderer.on(action, (event, args) => { - callback(args); - }); + msgChangedListeners[action] = (event, args) => { + callback(args) + } + ipcRenderer.on(action, msgChangedListeners[action]) }, - listenOnce: (action, callback) => { - ipcRenderer.once(action, (event, args) => { - callback(args); - }); + registerMsgListenOnce: (action, callback) => { + msgChangedListeners[action] = (event, args) => { + callback(args) + } + ipcRenderer.once(action, msgChangedListeners[action]) + }, + removeMsgListener: (action) => { + if (typeof msgChangedListeners[action] === "function") { + ipcRenderer.removeListener(action, msgChangedListeners[action]) + delete msgChangedListeners[action] + } }, sendMessage: (action, args) => { - ipcRenderer.send(action, args); + ipcRenderer.send(action, args) }, sendSyncMessage: (action, args) => { - ipcRenderer.sendSync(action, args); + ipcRenderer.sendSync(action, args) } } -); +) contextBridge.exposeInMainWorld( 'process', { type: process.type, versions: process.versions } -); +) diff --git a/resources/assets/js/pages/manage/components/Report.vue b/resources/assets/js/pages/manage/components/Report.vue index 59d89548c..2db4e43fe 100644 --- a/resources/assets/js/pages/manage/components/Report.vue +++ b/resources/assets/js/pages/manage/components/Report.vue @@ -63,6 +63,7 @@ export default { this.reportTabs = this.reportType; // if (this.$isMainElectron) { + this.$Electron.removeMsgListener('reportSaveSuccess') this.$Electron.registerMsgListener('reportSaveSuccess', ({data, msg}) => { $A.messageSuccess(msg) this.saveSuccess(data) diff --git a/resources/assets/js/pages/manage/components/ReportMy.vue b/resources/assets/js/pages/manage/components/ReportMy.vue index 21fce1d22..8d39c3229 100644 --- a/resources/assets/js/pages/manage/components/ReportMy.vue +++ b/resources/assets/js/pages/manage/components/ReportMy.vue @@ -71,8 +71,6 @@