From 6c18bcb130002e50ac16dec65b4c62aa27b18b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E8=90=8C=E5=93=92=E8=B5=AB=E8=90=9D?= Date: Mon, 10 Apr 2023 19:50:36 +0800 Subject: [PATCH] :bug: Fix: fix repeated upload bug when listening clipboard --- src/main/apis/app/system/index.ts | 27 +++++++++++++-------------- src/main/events/ipcList.ts | 12 +++++------- src/main/lifeCycle/index.ts | 13 +++++-------- src/main/utils/clipboardPoll.ts | 3 --- 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/src/main/apis/app/system/index.ts b/src/main/apis/app/system/index.ts index df482656..d8237d63 100644 --- a/src/main/apis/app/system/index.ts +++ b/src/main/apis/app/system/index.ts @@ -58,6 +58,7 @@ export function setDockMenu () { click () { db.set('settings.isListeningClipboard', false) clipboardPoll.stopListening() + clipboardPoll.removeAllListeners() setDockMenu() }, enabled: isListeningClipboard @@ -152,6 +153,7 @@ export function createContextMenu () { click () { db.set('settings.isListeningClipboard', false) ClipboardWatcher.stopListening() + ClipboardWatcher.removeAllListeners() createContextMenu() }, enabled: isListeningClipboard @@ -175,7 +177,7 @@ export function createContextMenu () { label: T('OPEN_MINI_WINDOW'), click () { const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)! - + miniWindow.removeAllListeners() if (db.get('settings.miniWindowOntop')) { miniWindow.setAlwaysOnTop(true) } @@ -186,14 +188,12 @@ export function createContextMenu () { } else { miniWindow.setPosition(width - 100, height - 100) } - miniWindow.on('close', () => { + const setPositionFunc = () => { const position = miniWindow.getPosition() db.set('settings.miniWindowPosition', position) - }) - miniWindow.on('move', () => { - const position = miniWindow.getPosition() - db.set('settings.miniWindowPosition', position) - }) + } + miniWindow.on('close', setPositionFunc) + miniWindow.on('move', setPositionFunc) miniWindow.show() miniWindow.focus() } @@ -225,7 +225,7 @@ export function createContextMenu () { label: T('OPEN_MINI_WINDOW'), click () { const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)! - + miniWindow.removeAllListeners() if (db.get('settings.miniWindowOntop')) { miniWindow.setAlwaysOnTop(true) } @@ -236,14 +236,12 @@ export function createContextMenu () { } else { miniWindow.setPosition(width - 100, height - 100) } - miniWindow.on('close', () => { + const setPositionFunc = () => { const position = miniWindow.getPosition() db.set('settings.miniWindowPosition', position) - }) - miniWindow.on('move', () => { - const position = miniWindow.getPosition() - db.set('settings.miniWindowPosition', position) - }) + } + miniWindow.on('close', setPositionFunc) + miniWindow.on('move', setPositionFunc) miniWindow.show() miniWindow.focus() } @@ -266,6 +264,7 @@ export function createContextMenu () { click () { db.set('settings.isListeningClipboard', false) ClipboardWatcher.stopListening() + ClipboardWatcher.removeAllListeners() createContextMenu() }, enabled: isListeningClipboard diff --git a/src/main/events/ipcList.ts b/src/main/events/ipcList.ts index 9c2a093f..419c4ed2 100644 --- a/src/main/events/ipcList.ts +++ b/src/main/events/ipcList.ts @@ -168,7 +168,7 @@ export default { ipcMain.on('openMiniWindow', () => { const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)! const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)! - + miniWindow.removeAllListeners() if (db.get('settings.miniWindowOntop')) { miniWindow.setAlwaysOnTop(true) } @@ -179,14 +179,12 @@ export default { } else { miniWindow.setPosition(width - 100, height - 100) } - miniWindow.on('close', () => { + const setPositionFunc = () => { const position = miniWindow.getPosition() db.set('settings.miniWindowPosition', position) - }) - miniWindow.on('move', () => { - const position = miniWindow.getPosition() - db.set('settings.miniWindowPosition', position) - }) + } + miniWindow.on('close', setPositionFunc) + miniWindow.on('move', setPositionFunc) miniWindow.show() miniWindow.focus() settingWindow.hide() diff --git a/src/main/lifeCycle/index.ts b/src/main/lifeCycle/index.ts index f15415d7..dce3baa0 100644 --- a/src/main/lifeCycle/index.ts +++ b/src/main/lifeCycle/index.ts @@ -190,6 +190,7 @@ class LifeCycle { if (startMode === 'mini') { windowManager.create(IWindowList.MINI_WINDOW) const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)! + miniWindow.removeAllListeners() if (db.get('settings.miniWindowOntop')) { miniWindow.setAlwaysOnTop(true) } @@ -200,14 +201,12 @@ class LifeCycle { } else { miniWindow.setPosition(width - 100, height - 100) } - miniWindow.on('close', () => { + const setPositionFunc = () => { const position = miniWindow.getPosition() db.set('settings.miniWindowPosition', position) - }) - miniWindow.on('move', () => { - const position = miniWindow.getPosition() - db.set('settings.miniWindowPosition', position) - }) + } + miniWindow.on('close', setPositionFunc) + miniWindow.on('move', setPositionFunc) miniWindow.show() miniWindow.focus() } else if (startMode === 'main') { @@ -269,8 +268,6 @@ class LifeCycle { globalShortcut.unregisterAll() bus.removeAllListeners() server.shutdown() - const clipboardWatcher = process.platform === 'darwin' ? clipboardPoll : clipboardListener - clipboardWatcher.stopListening() }) // Exit cleanly on request from parent process in development mode. if (isDevelopment) { diff --git a/src/main/utils/clipboardPoll.ts b/src/main/utils/clipboardPoll.ts index cb9c5dbc..4582ff60 100644 --- a/src/main/utils/clipboardPoll.ts +++ b/src/main/utils/clipboardPoll.ts @@ -13,7 +13,6 @@ class ClipboardWatcher extends EventEmitter { startListening (watchDelay = 500) { this.stopListening() - console.log('timer', this.timer) const image = clipboard.readImage() if (!image.isEmpty()) { @@ -40,12 +39,10 @@ class ClipboardWatcher extends EventEmitter { this.lastImage = currentImage this.emit('change', currentImage) }, watchDelay) - console.log('start timer', this.timer) } stopListening () { if (this.timer) { - console.log('stop timer') clearInterval(this.timer) this.timer = null }