From 7d79cab916be0c2315080543bbd8cff0ed44cbce Mon Sep 17 00:00:00 2001 From: KyeongSoo Kim Date: Tue, 17 Jan 2023 07:05:24 +0900 Subject: [PATCH] open a file when it is clicked from the download list (#2501) --- src/common/communication.ts | 1 + src/main/preload/downloadsDropdown.js | 4 ++++ src/main/views/downloadsDropdownView.ts | 8 ++++++++ .../DownloadsDropdown/DownloadsDropdownItemFile.tsx | 4 ++-- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/common/communication.ts b/src/common/communication.ts index 7fbaf786..58c076ef 100644 --- a/src/common/communication.ts +++ b/src/common/communication.ts @@ -152,6 +152,7 @@ export const HIDE_DOWNLOADS_DROPDOWN_BUTTON_BADGE = 'hide-downloads-dropdown-but export const REQUEST_DOWNLOADS_DROPDOWN_INFO = 'request-downloads-dropdown-info'; export const UPDATE_DOWNLOADS_DROPDOWN = 'update-downloads-dropdown'; export const DOWNLOADS_DROPDOWN_SHOW_FILE_IN_FOLDER = 'downloads-dropdown-show-file-in-folder'; +export const DOWNLOADS_DROPDOWN_OPEN_FILE = 'downloads-dropdown-open-file'; export const REQUEST_HAS_DOWNLOADS = 'request-has-downloads'; export const DOWNLOADS_DROPDOWN_FOCUSED = 'downloads-dropdown-focused'; export const RECEIVE_DOWNLOADS_DROPDOWN_SIZE = 'receive-downloads-dropdown-size'; diff --git a/src/main/preload/downloadsDropdown.js b/src/main/preload/downloadsDropdown.js index ecf9e073..e0e29708 100644 --- a/src/main/preload/downloadsDropdown.js +++ b/src/main/preload/downloadsDropdown.js @@ -21,6 +21,7 @@ import { TOGGLE_DOWNLOADS_DROPDOWN_MENU, UPDATE_DOWNLOADS_DROPDOWN, GET_DOWNLOADED_IMAGE_THUMBNAIL_LOCATION, + DOWNLOADS_DROPDOWN_OPEN_FILE, } from 'common/communication'; console.log('preloaded for the downloadsDropdown!'); @@ -61,6 +62,9 @@ window.addEventListener('message', async (event) => { case REQUEST_CLEAR_DOWNLOADS_DROPDOWN: ipcRenderer.send(REQUEST_CLEAR_DOWNLOADS_DROPDOWN); break; + case DOWNLOADS_DROPDOWN_OPEN_FILE: + ipcRenderer.send(DOWNLOADS_DROPDOWN_OPEN_FILE, event.data.payload.item); + break; case DOWNLOADS_DROPDOWN_SHOW_FILE_IN_FOLDER: ipcRenderer.send(DOWNLOADS_DROPDOWN_SHOW_FILE_IN_FOLDER, event.data.payload.item); break; diff --git a/src/main/views/downloadsDropdownView.ts b/src/main/views/downloadsDropdownView.ts index 36b98324..2ab7aaf7 100644 --- a/src/main/views/downloadsDropdownView.ts +++ b/src/main/views/downloadsDropdownView.ts @@ -20,6 +20,7 @@ import { UPDATE_DOWNLOADS_DROPDOWN, UPDATE_DOWNLOADS_DROPDOWN_MENU_ITEM, GET_DOWNLOADED_IMAGE_THUMBNAIL_LOCATION, + DOWNLOADS_DROPDOWN_OPEN_FILE, } from 'common/communication'; import {TAB_BAR_HEIGHT, DOWNLOADS_DROPDOWN_WIDTH, DOWNLOADS_DROPDOWN_HEIGHT, DOWNLOADS_DROPDOWN_FULL_WIDTH} from 'common/utils/constants'; import {getLocalPreload, getLocalURLString} from 'main/utils'; @@ -66,6 +67,7 @@ export default class DownloadsDropdownView { ipcMain.on(REQUEST_DOWNLOADS_DROPDOWN_INFO, this.updateDownloadsDropdown); ipcMain.on(REQUEST_CLEAR_DOWNLOADS_DROPDOWN, this.clearDownloads); ipcMain.on(RECEIVE_DOWNLOADS_DROPDOWN_SIZE, this.handleReceivedDownloadsDropdownSize); + ipcMain.on(DOWNLOADS_DROPDOWN_OPEN_FILE, this.openFile); ipcMain.on(DOWNLOADS_DROPDOWN_SHOW_FILE_IN_FOLDER, this.showFileInFolder); ipcMain.on(UPDATE_DOWNLOADS_DROPDOWN, this.updateDownloads); ipcMain.on(UPDATE_DOWNLOADS_DROPDOWN_MENU_ITEM, this.updateDownloadsDropdownMenuItem); @@ -144,6 +146,12 @@ export default class DownloadsDropdownView { this.handleClose(); } + openFile = (e: IpcMainEvent, item: DownloadedItem) => { + log.debug('DownloadsDropdownView.openFile', {item}); + + downloadsManager.openFile(item); + } + showFileInFolder = (e: IpcMainEvent, item: DownloadedItem) => { log.debug('DownloadsDropdownView.showFileInFolder', {item}); diff --git a/src/renderer/components/DownloadsDropdown/DownloadsDropdownItemFile.tsx b/src/renderer/components/DownloadsDropdown/DownloadsDropdownItemFile.tsx index c1bdde83..3221ee4f 100644 --- a/src/renderer/components/DownloadsDropdown/DownloadsDropdownItemFile.tsx +++ b/src/renderer/components/DownloadsDropdown/DownloadsDropdownItemFile.tsx @@ -7,7 +7,7 @@ import classNames from 'classnames'; import {useIntl} from 'react-intl'; -import {DOWNLOADS_DROPDOWN_SHOW_FILE_IN_FOLDER} from 'common/communication'; +import {DOWNLOADS_DROPDOWN_OPEN_FILE} from 'common/communication'; import FileSizeAndStatus from './FileSizeAndStatus'; import ProgressBar from './ProgressBar'; @@ -26,7 +26,7 @@ const DownloadsDropdownItemFile = ({item, activeItem}: OwnProps) => { const onFileClick = (e: React.MouseEvent) => { e.preventDefault(); - window.postMessage({type: DOWNLOADS_DROPDOWN_SHOW_FILE_IN_FOLDER, payload: {item}}, window.location.href); + window.postMessage({type: DOWNLOADS_DROPDOWN_OPEN_FILE, payload: {item}}, window.location.href); }; const itemFilename = item.type === 'update' ?