diff --git a/i18n/en.json b/i18n/en.json index 26f79452..ce63337f 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -278,6 +278,7 @@ "renderer.downloadsDropdown.Downloads": "Downloads", "renderer.downloadsDropdown.remaining": "remaining", "renderer.downloadsDropdown.Update.ANewVersionIsAvailableToInstall": "A new version of the {appName} Desktop App (version {version}) is available to install.", + "renderer.downloadsDropdown.Update.Downloading": "Downloading", "renderer.downloadsDropdown.Update.DownloadUpdate": "Download Update", "renderer.downloadsDropdown.Update.MattermostVersionX": "{appName} version {version}", "renderer.downloadsDropdown.Update.NewDesktopVersionAvailable": "New Desktop version available", diff --git a/src/renderer/components/DownloadsDropdown/Update/UpdateAvailable.tsx b/src/renderer/components/DownloadsDropdown/Update/UpdateAvailable.tsx index 34cbfa18..defff7f2 100644 --- a/src/renderer/components/DownloadsDropdown/Update/UpdateAvailable.tsx +++ b/src/renderer/components/DownloadsDropdown/Update/UpdateAvailable.tsx @@ -1,10 +1,12 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import React from 'react'; +import React, {useState} from 'react'; import {Button} from 'react-bootstrap'; import {FormattedMessage} from 'react-intl'; +import LoadingWrapper from 'renderer/components/SaveButton/LoadingWrapper'; + import type {DownloadedItem} from 'types/downloads'; import Thumbnail from '../Thumbnail'; @@ -15,7 +17,12 @@ type OwnProps = { } const UpdateAvailable = ({item, appName}: OwnProps) => { + const [isProcessing, setIsProcessing] = useState(false); const onButtonClick = (e: React.MouseEvent) => { + if (isProcessing) { + return; + } + setIsProcessing(true); e?.preventDefault?.(); window.desktop.downloadsDropdown.startUpdateDownload(); }; @@ -42,13 +49,25 @@ const UpdateAvailable = ({item, appName}: OwnProps) => { diff --git a/src/renderer/css/downloadsDropdown.scss b/src/renderer/css/downloadsDropdown.scss index a952c337..70688f8c 100644 --- a/src/renderer/css/downloadsDropdown.scss +++ b/src/renderer/css/downloadsDropdown.scss @@ -383,7 +383,7 @@ body { } &.disabled { background: transparent; - color: rgba(63, 67, 80, 0.52); + color: rgba(221, 223, 228, 0.32); } } .DownloadsDropdown__Downloads { @@ -459,6 +459,14 @@ body { .DownloadsDropdown__Update__Details__Description { color: rgba(221, 223, 228, 0.64); } + + .DownloadsDropdown__Update__Details__Button { + &:disabled { + background: rgba(221, 223, 228, 0.08); + color: rgba(221, 223, 228, 0.32) !important; + opacity: 1; + } + } } } }