From bbf162e7d0fa567630194bb8ef8a08e09b9cb7b9 Mon Sep 17 00:00:00 2001 From: Tasos Boulis Date: Thu, 20 Oct 2022 16:20:51 +0300 Subject: [PATCH] Disabled Clear All button when downloads include only the application update and when they also include files, clear only the files (#2294) --- src/main/downloadsManager.ts | 16 +++++++++++++--- src/renderer/css/downloadsDropdown.scss | 12 ++++++++++-- src/renderer/downloadsDropdown.tsx | 12 ++++++++++-- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/main/downloadsManager.ts b/src/main/downloadsManager.ts index d37b6526..41bc8bf3 100644 --- a/src/main/downloadsManager.ts +++ b/src/main/downloadsManager.ts @@ -157,10 +157,16 @@ export class DownloadsManager extends JsonFileManager { clearDownloadsDropDown = () => { log.debug('DownloadsManager.clearDownloadsDropDown'); - this.saveAll({}); - this.fileSizes = new Map(); + if (this.hasUpdate()) { + this.saveAll({ + [APP_UPDATE_KEY]: this.downloads[APP_UPDATE_KEY], + }); + } else { + this.saveAll({}); + this.toggleAppMenuDownloadsEnabled(false); + } this.closeDownloadsDropdown(); - this.toggleAppMenuDownloadsEnabled(false); + this.fileSizes = new Map(); } showFileInFolder = (item?: DownloadedItem) => { @@ -282,6 +288,10 @@ export class DownloadsManager extends JsonFileManager { WindowManager.sendToRenderer(HIDE_DOWNLOADS_DROPDOWN_BUTTON_BADGE); } + hasUpdate = () => { + return Boolean(this.downloads[APP_UPDATE_KEY]?.type === DownloadItemTypeEnum.UPDATE); + } + private markFileAsDeleted = (item: DownloadedItem) => { const fileId = this.getDownloadedFileId(item); const file = this.downloads[fileId]; diff --git a/src/renderer/css/downloadsDropdown.scss b/src/renderer/css/downloadsDropdown.scss index 13897ad6..73e117e9 100644 --- a/src/renderer/css/downloadsDropdown.scss +++ b/src/renderer/css/downloadsDropdown.scss @@ -158,6 +158,7 @@ body { } &.disabled { + background: transparent; cursor: default; color: rgba(63, 67, 80, 0.32); } @@ -438,8 +439,15 @@ body { background: #1f1f1f; border: 1px solid rgba(221, 223, 228, 0.16); - .DownloadsDropdown__header .DownloadsDropdown__Downloads { - color: #DDD; + .DownloadsDropdown__header { + .DownloadsDropdown__Downloads { + color: #DDD; + } + .DownloadsDropdown__clearAllButton { + &.disabled { + color: rgba(63, 67, 80, 0.52); + } + } } .DownloadsDropdown__divider { diff --git a/src/renderer/downloadsDropdown.tsx b/src/renderer/downloadsDropdown.tsx index 901f4171..cecd5c74 100644 --- a/src/renderer/downloadsDropdown.tsx +++ b/src/renderer/downloadsDropdown.tsx @@ -74,7 +74,13 @@ class DownloadsDropdown extends React.PureComponent, State } clearAll = () => { - window.postMessage({type: REQUEST_CLEAR_DOWNLOADS_DROPDOWN}, window.location.href); + if (!this.clearAllButtonDisabled()) { + window.postMessage({type: REQUEST_CLEAR_DOWNLOADS_DROPDOWN}, window.location.href); + } + } + + clearAllButtonDisabled = () => { + return this.state.downloads?.length === 1 && this.state.downloads[0]?.type === 'update'; } render() { @@ -93,7 +99,9 @@ class DownloadsDropdown extends React.PureComponent, State />