summaryrefslogtreecommitdiffhomepage
path: root/desktop
diff options
context:
space:
mode:
authorTobias Järvelöv <tobias.jarvelov@mullvad.net>2025-04-11 15:47:01 +0200
committerSebastian Holmin <sebastian.holmin@mullvad.net>2025-05-28 13:25:30 +0200
commitd9ea4bf074aac717843df2fd3a56bc63cd6bddf2 (patch)
treea4e74656393b546443fb3d3f0a105ac4657cdfb0 /desktop
parent0d6c131296b71e3331dffd87a80da822f17a873a (diff)
downloadmullvadvpn-d9ea4bf074aac717843df2fd3a56bc63cd6bddf2.tar.xz
mullvadvpn-d9ea4bf074aac717843df2fd3a56bc63cd6bddf2.zip
Add Manual download button
Diffstat (limited to 'desktop')
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/index.ts1
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/ManualDownloadButton.tsx23
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/index.ts2
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/useDisabled.ts9
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/hooks/useHandleClick.ts16
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/app-upgrade/components/manual-download-button/index.ts1
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';