diff options
| author | Tobias Järvelöv <tobias.jarvelov@mullvad.net> | 2025-04-11 15:47:01 +0200 |
|---|---|---|
| committer | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2025-05-28 13:25:30 +0200 |
| commit | d9ea4bf074aac717843df2fd3a56bc63cd6bddf2 (patch) | |
| tree | a4e74656393b546443fb3d3f0a105ac4657cdfb0 | |
| parent | 0d6c131296b71e3331dffd87a80da822f17a873a (diff) | |
| download | mullvadvpn-d9ea4bf074aac717843df2fd3a56bc63cd6bddf2.tar.xz mullvadvpn-d9ea4bf074aac717843df2fd3a56bc63cd6bddf2.zip | |
Add Manual download button
6 files changed, 52 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/index.ts index b38a80c80e..993e7ce8ce 100644 --- a/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/index.ts +++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/index.ts @@ -1,6 +1,7 @@ export * from './cancel-button'; export * from './download-progress'; export * from './install-button'; +export * from './manual-download-button'; export * from './report-problem-button'; export * from './retry-upgrade-button'; export * from './upgrade-button'; diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/ManualDownloadButton.tsx b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/ManualDownloadButton.tsx new file mode 100644 index 0000000000..e130670446 --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/ManualDownloadButton.tsx @@ -0,0 +1,23 @@ +import { messages } from '../../../../../../shared/gettext'; +import { Button, Icon } from '../../../../../lib/components'; +import { useDisabled, useHandleClick } from './hooks'; + +export function ManualDownloadButton() { + const disabled = useDisabled(); + const handleClick = useHandleClick(); + + return ( + <Button + aria-description={messages.pgettext('accessibility', 'Opens externally')} + disabled={disabled} + onClick={handleClick}> + <Button.Text> + { + // TRANSLATORS: Button text to manually download the update + messages.pgettext('app-upgrade-view', 'Manual download') + } + </Button.Text> + <Icon icon="external" /> + </Button> + ); +} diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/index.ts new file mode 100644 index 0000000000..f0418cde6c --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './useDisabled'; +export * from './useHandleClick'; diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/useDisabled.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/useDisabled.ts new file mode 100644 index 0000000000..e41c5b12ff --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/useDisabled.ts @@ -0,0 +1,9 @@ +import { useConnectionIsBlocked } from '../../../../../../redux/hooks'; + +export const useDisabled = () => { + const { isBlocked } = useConnectionIsBlocked(); + + const disabled = isBlocked; + + return disabled; +}; diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/useHandleClick.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/useHandleClick.ts new file mode 100644 index 0000000000..2f844c7bee --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/useHandleClick.ts @@ -0,0 +1,16 @@ +import { useCallback } from 'react'; + +import { getDownloadUrl } from '../../../../../../../shared/version'; +import { useAppContext } from '../../../../../../context'; +import { useVersionSuggestedIsBeta } from '../../../../../../redux/hooks'; + +export const useHandleClick = () => { + const { suggestedIsBeta } = useVersionSuggestedIsBeta(); + const { openUrl } = useAppContext(); + + const handleClick = useCallback(async () => { + await openUrl(getDownloadUrl(suggestedIsBeta)); + }, [openUrl, suggestedIsBeta]); + + return handleClick; +}; diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/index.ts new file mode 100644 index 0000000000..11338008b7 --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/index.ts @@ -0,0 +1 @@ +export * from './ManualDownloadButton'; |
