diff options
5 files changed, 15 insertions, 8 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/app.tsx b/desktop/packages/mullvad-vpn/src/renderer/app.tsx index b92dbd9179..5f416e7bd4 100644 --- a/desktop/packages/mullvad-vpn/src/renderer/app.tsx +++ b/desktop/packages/mullvad-vpn/src/renderer/app.tsx @@ -9,6 +9,7 @@ import { ILinuxSplitTunnelingApplication, ISplitTunnelingApplication, } from '../shared/application-types'; +import { Link } from '../shared/constants'; import { AccessMethodSetting, AccountNumber, @@ -358,7 +359,7 @@ export default class AppRenderer { IpcRendererEventChannel.problemReport.collectLogs(toRedact); public viewLog = (path: string) => IpcRendererEventChannel.problemReport.viewLog(path); public quit = () => IpcRendererEventChannel.app.quit(); - public openUrl = (url: string) => IpcRendererEventChannel.app.openUrl(url); + public openUrl = (url: Link) => IpcRendererEventChannel.app.openUrl(url); public getPathBaseName = (path: string) => IpcRendererEventChannel.app.getPathBaseName(path); public showOpenDialog = (options: Electron.OpenDialogOptions) => IpcRendererEventChannel.app.showOpenDialog(options); @@ -462,7 +463,7 @@ export default class AppRenderer { return devices; }; - public openLinkWithAuth = async (link: string): Promise<void> => { + public openLinkWithAuth = async (link: Link): Promise<void> => { let token = ''; try { token = await IpcRendererEventChannel.account.getWwwAuthToken(); diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/Login.tsx b/desktop/packages/mullvad-vpn/src/renderer/components/Login.tsx index 94216a23d0..d71e53395b 100644 --- a/desktop/packages/mullvad-vpn/src/renderer/components/Login.tsx +++ b/desktop/packages/mullvad-vpn/src/renderer/components/Login.tsx @@ -1,6 +1,7 @@ import React, { useCallback } from 'react'; import { sprintf } from 'sprintf-js'; +import { Link } from '../../shared/constants'; import { AccountDataError, AccountNumber } from '../../shared/daemon-rpc-types'; import { messages } from '../../shared/gettext'; import { useAppContext } from '../context'; @@ -74,7 +75,7 @@ interface IProps { accountHistory?: AccountNumber; loginState: LoginState; showBlockMessage: boolean; - openExternalLink: (type: string) => void; + openExternalLink: (type: Link) => void; login: (accountNumber: AccountNumber) => void; resetLoginError: () => void; updateAccountNumber: (accountNumber: AccountNumber) => void; diff --git a/desktop/packages/mullvad-vpn/src/shared/constants/links.ts b/desktop/packages/mullvad-vpn/src/shared/constants/links.ts index e55adad68c..2d99ebd22c 100644 --- a/desktop/packages/mullvad-vpn/src/shared/constants/links.ts +++ b/desktop/packages/mullvad-vpn/src/shared/constants/links.ts @@ -6,3 +6,7 @@ export const links = { privacyGuide: 'https://mullvad.net/help/first-steps-towards-online-privacy/', download: 'https://mullvad.net/download/vpn/', } as const; + +type LinkValue = (typeof links)[keyof typeof links]; +type LinkWithSuffix = `${LinkValue}${string}`; +export type Link = LinkValue | LinkWithSuffix; diff --git a/desktop/packages/mullvad-vpn/src/shared/notifications/notification.ts b/desktop/packages/mullvad-vpn/src/shared/notifications/notification.ts index 48561c555b..bff0e9e57c 100644 --- a/desktop/packages/mullvad-vpn/src/shared/notifications/notification.ts +++ b/desktop/packages/mullvad-vpn/src/shared/notifications/notification.ts @@ -1,8 +1,9 @@ import { LinkProps } from '../../renderer/lib/components'; +import { Link } from '../constants'; export type NotificationAction = { type: 'open-url'; - url: string; + url: Link; text?: string; withAuth?: boolean; }; diff --git a/desktop/packages/mullvad-vpn/src/shared/version.ts b/desktop/packages/mullvad-vpn/src/shared/version.ts index e8a3bc5b19..338077e6ec 100644 --- a/desktop/packages/mullvad-vpn/src/shared/version.ts +++ b/desktop/packages/mullvad-vpn/src/shared/version.ts @@ -1,7 +1,7 @@ -import { links } from './constants'; +import { Link, links } from './constants'; -export function getDownloadUrl(suggestedIsBeta: boolean): string { - let url = links.download; +export function getDownloadUrl(suggestedIsBeta: boolean): Link { + let url: Link = links.download; switch (process.platform ?? window.env.platform) { case 'win32': url += 'windows/'; @@ -18,5 +18,5 @@ export function getDownloadUrl(suggestedIsBeta: boolean): string { url += 'beta/'; } - return url; + return url as Link; } |
