diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2024-05-24 08:04:31 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2024-05-28 15:40:41 +0200 |
| commit | 86d9cc33442ea87f19b0d9a3d7fa30fad38700c4 (patch) | |
| tree | d524ac5d01ba0b642b64e2904e8d989bc99f30a5 /gui/src/renderer | |
| parent | 22eda0924e9747abf598d129ddaafc6dc96ff534 (diff) | |
| download | mullvadvpn-86d9cc33442ea87f19b0d9a3d7fa30fad38700c4.tar.xz mullvadvpn-86d9cc33442ea87f19b0d9a3d7fa30fad38700c4.zip | |
Make Windows split tunneling types more general
Diffstat (limited to 'gui/src/renderer')
| -rw-r--r-- | gui/src/renderer/app.tsx | 29 | ||||
| -rw-r--r-- | gui/src/renderer/components/SplitTunnelingSettings.tsx | 56 | ||||
| -rw-r--r-- | gui/src/renderer/redux/settings/actions.ts | 6 | ||||
| -rw-r--r-- | gui/src/renderer/redux/settings/reducers.ts | 4 |
4 files changed, 47 insertions, 48 deletions
diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx index 92c4cb5698..95f7e3d0cf 100644 --- a/gui/src/renderer/app.tsx +++ b/gui/src/renderer/app.tsx @@ -4,7 +4,10 @@ import { bindActionCreators } from 'redux'; import { StyleSheetManager } from 'styled-components'; import { closeToExpiry, hasExpired } from '../shared/account-expiry'; -import { ILinuxSplitTunnelingApplication, IWindowsApplication } from '../shared/application-types'; +import { + ILinuxSplitTunnelingApplication, + ISplitTunnelingApplication, +} from '../shared/application-types'; import { AccessMethodSetting, AccountToken, @@ -185,7 +188,7 @@ export default class AppRenderer { this.storeAutoStart(autoStart); }); - IpcRendererEventChannel.windowsSplitTunneling.listen((applications: IWindowsApplication[]) => { + IpcRendererEventChannel.splitTunneling.listen((applications: ISplitTunnelingApplication[]) => { this.reduxActions.settings.setSplitTunnelingApplications(applications); }); @@ -258,9 +261,9 @@ export default class AppRenderer { this.checkContentHeight(true); }); - if (initialState.windowsSplitTunnelingApplications) { + if (initialState.splitTunnelingApplications) { this.reduxActions.settings.setSplitTunnelingApplications( - initialState.windowsSplitTunnelingApplications, + initialState.splitTunnelingApplications, ); } @@ -334,11 +337,11 @@ export default class AppRenderer { public launchExcludedApplication = (application: ILinuxSplitTunnelingApplication | string) => IpcRendererEventChannel.linuxSplitTunneling.launchApplication(application); public setSplitTunnelingState = (state: boolean) => - IpcRendererEventChannel.windowsSplitTunneling.setState(state); - public addSplitTunnelingApplication = (application: string | IWindowsApplication) => - IpcRendererEventChannel.windowsSplitTunneling.addApplication(application); - public forgetManuallyAddedSplitTunnelingApplication = (application: IWindowsApplication) => - IpcRendererEventChannel.windowsSplitTunneling.forgetManuallyAddedApplication(application); + IpcRendererEventChannel.splitTunneling.setState(state); + public addSplitTunnelingApplication = (application: string | ISplitTunnelingApplication) => + IpcRendererEventChannel.splitTunneling.addApplication(application); + public forgetManuallyAddedSplitTunnelingApplication = (application: ISplitTunnelingApplication) => + IpcRendererEventChannel.splitTunneling.forgetManuallyAddedApplication(application); public setObfuscationSettings = (obfuscationSettings: ObfuscationSettings) => IpcRendererEventChannel.settings.setObfuscationSettings(obfuscationSettings); public setDaitaSettings = (daitaSettings: IDaitaSettings) => @@ -513,12 +516,12 @@ export default class AppRenderer { return IpcRendererEventChannel.autoStart.set(autoStart); }; - public getWindowsSplitTunnelingApplications(updateCache = false) { - return IpcRendererEventChannel.windowsSplitTunneling.getApplications(updateCache); + public getSplitTunnelingApplications(updateCache = false) { + return IpcRendererEventChannel.splitTunneling.getApplications(updateCache); } - public removeSplitTunnelingApplication(application: IWindowsApplication) { - void IpcRendererEventChannel.windowsSplitTunneling.removeApplication(application); + public removeSplitTunnelingApplication(application: ISplitTunnelingApplication) { + void IpcRendererEventChannel.splitTunneling.removeApplication(application); } public async showLaunchDaemonSettings() { diff --git a/gui/src/renderer/components/SplitTunnelingSettings.tsx b/gui/src/renderer/components/SplitTunnelingSettings.tsx index e26b9ac089..ad7dbccfb1 100644 --- a/gui/src/renderer/components/SplitTunnelingSettings.tsx +++ b/gui/src/renderer/components/SplitTunnelingSettings.tsx @@ -6,7 +6,7 @@ import { colors, strings } from '../../config.json'; import { IApplication, ILinuxSplitTunnelingApplication, - IWindowsApplication, + ISplitTunnelingApplication, } from '../../shared/application-types'; import { messages } from '../../shared/gettext'; import { useAppContext } from '../context'; @@ -92,7 +92,7 @@ function PlatformSpecificSplitTunnelingSettings(props: IPlatformSplitTunnelingSe case 'linux': return <LinuxSplitTunnelingSettings {...props} />; case 'win32': - return <WindowsSplitTunnelingSettings {...props} />; + return <SplitTunnelingSettings {...props} />; default: throw new Error(`Split tunneling not implemented on ${window.env.platform}`); } @@ -300,12 +300,12 @@ function LinuxApplicationRow(props: ILinuxApplicationRowProps) { ); } -export function WindowsSplitTunnelingSettings(props: IPlatformSplitTunnelingSettingsProps) { +export function SplitTunnelingSettings(props: IPlatformSplitTunnelingSettingsProps) { const { addSplitTunnelingApplication, removeSplitTunnelingApplication, forgetManuallyAddedSplitTunnelingApplication, - getWindowsSplitTunnelingApplications, + getSplitTunnelingApplications, setSplitTunnelingState, } = useAppContext(); const splitTunnelingEnabled = useSelector((state: IReduxState) => state.settings.splitTunneling); @@ -314,13 +314,13 @@ export function WindowsSplitTunnelingSettings(props: IPlatformSplitTunnelingSett ); const [searchTerm, setSearchTerm] = useState(''); - const [applications, setApplications] = useState<IWindowsApplication[]>(); + const [applications, setApplications] = useState<ISplitTunnelingApplication[]>(); useAsyncEffect(async () => { - const { fromCache, applications } = await getWindowsSplitTunnelingApplications(); + const { fromCache, applications } = await getSplitTunnelingApplications(); setApplications(applications); if (fromCache) { - const { applications } = await getWindowsSplitTunnelingApplications(true); + const { applications } = await getSplitTunnelingApplications(true); setApplications(applications); } }, []); @@ -345,7 +345,7 @@ export function WindowsSplitTunnelingSettings(props: IPlatformSplitTunnelingSett }, [applications, splitTunnelingApplications, searchTerm]); const addApplication = useCallback( - async (application: IWindowsApplication | string) => { + async (application: ISplitTunnelingApplication | string) => { if (!splitTunnelingEnabled) { await setSplitTunnelingState(true); } @@ -354,26 +354,26 @@ export function WindowsSplitTunnelingSettings(props: IPlatformSplitTunnelingSett [addSplitTunnelingApplication, splitTunnelingEnabled, setSplitTunnelingState], ); - const addApplicationAndUpdate = useCallback( - async (application: IWindowsApplication | string) => { + const addBrowsedForApplication = useCallback( + async (application: string) => { await addApplication(application); - const { applications } = await getWindowsSplitTunnelingApplications(); + const { applications } = await getSplitTunnelingApplications(); setApplications(applications); }, - [addApplication, getWindowsSplitTunnelingApplications], + [addApplication, getSplitTunnelingApplications], ); const forgetManuallyAddedApplicationAndUpdate = useCallback( - async (application: IWindowsApplication) => { + async (application: ISplitTunnelingApplication) => { await forgetManuallyAddedSplitTunnelingApplication(application); - const { applications } = await getWindowsSplitTunnelingApplications(); + const { applications } = await getSplitTunnelingApplications(); setApplications(applications); }, - [forgetManuallyAddedSplitTunnelingApplication, getWindowsSplitTunnelingApplications], + [forgetManuallyAddedSplitTunnelingApplication, getSplitTunnelingApplications], ); const removeApplication = useCallback( - async (application: IWindowsApplication) => { + async (application: ISplitTunnelingApplication) => { if (!splitTunnelingEnabled) { await setSplitTunnelingState(true); } @@ -395,21 +395,17 @@ export function WindowsSplitTunnelingSettings(props: IPlatformSplitTunnelingSett }, [filePickerCallback, props.scrollToTop]); const excludedRowRenderer = useCallback( - (application: IWindowsApplication) => ( - <WindowsApplicationRow application={application} onRemove={removeApplication} /> + (application: ISplitTunnelingApplication) => ( + <ApplicationRow application={application} onRemove={removeApplication} /> ), [removeApplication], ); const includedRowRenderer = useCallback( - (application: IWindowsApplication) => { + (application: ISplitTunnelingApplication) => { const onForget = application.deletable ? forgetManuallyAddedApplicationAndUpdate : undefined; return ( - <WindowsApplicationRow - application={application} - onAdd={addApplication} - onDelete={onForget} - /> + <ApplicationRow application={application} onAdd={addApplication} onDelete={onForget} /> ); }, [addApplication, forgetManuallyAddedApplicationAndUpdate], @@ -516,14 +512,14 @@ function applicationGetKey<T extends IApplication>(application: T): string { return application.absolutepath; } -interface IWindowsApplicationRowProps { - application: IWindowsApplication; - onAdd?: (application: IWindowsApplication) => void; - onRemove?: (application: IWindowsApplication) => void; - onDelete?: (application: IWindowsApplication) => void; +interface IApplicationRowProps { + application: ISplitTunnelingApplication; + onAdd?: (application: ISplitTunnelingApplication) => void; + onRemove?: (application: ISplitTunnelingApplication) => void; + onDelete?: (application: ISplitTunnelingApplication) => void; } -function WindowsApplicationRow(props: IWindowsApplicationRowProps) { +function ApplicationRow(props: IApplicationRowProps) { const onAdd = useCallback(() => { props.onAdd?.(props.application); }, [props.onAdd, props.application]); diff --git a/gui/src/renderer/redux/settings/actions.ts b/gui/src/renderer/redux/settings/actions.ts index ba6e4ce5a8..d2a3fb1c4a 100644 --- a/gui/src/renderer/redux/settings/actions.ts +++ b/gui/src/renderer/redux/settings/actions.ts @@ -1,4 +1,4 @@ -import { IWindowsApplication } from '../../../shared/application-types'; +import { ISplitTunnelingApplication } from '../../../shared/application-types'; import { AccessMethodSetting, ApiAccessMethodSettings, @@ -100,7 +100,7 @@ export interface IUpdateSplitTunnelingStateAction { export interface ISetSplitTunnelingApplicationsAction { type: 'SET_SPLIT_TUNNELING_APPLICATIONS'; - applications: IWindowsApplication[]; + applications: ISplitTunnelingApplication[]; } export interface ISetObfuscationSettings { @@ -281,7 +281,7 @@ function updateSplitTunnelingState(enabled: boolean): IUpdateSplitTunnelingState } function setSplitTunnelingApplications( - applications: IWindowsApplication[], + applications: ISplitTunnelingApplication[], ): ISetSplitTunnelingApplicationsAction { return { type: 'SET_SPLIT_TUNNELING_APPLICATIONS', diff --git a/gui/src/renderer/redux/settings/reducers.ts b/gui/src/renderer/redux/settings/reducers.ts index 18873eea20..eae413fe22 100644 --- a/gui/src/renderer/redux/settings/reducers.ts +++ b/gui/src/renderer/redux/settings/reducers.ts @@ -1,5 +1,5 @@ import { getDefaultApiAccessMethods } from '../../../main/default-settings'; -import { IWindowsApplication } from '../../../shared/application-types'; +import { ISplitTunnelingApplication } from '../../../shared/application-types'; import { AccessMethodSetting, ApiAccessMethodSettings, @@ -115,7 +115,7 @@ export interface ISettingsReduxState { }; dns: IDnsOptions; splitTunneling: boolean; - splitTunnelingApplications: IWindowsApplication[]; + splitTunnelingApplications: ISplitTunnelingApplication[]; obfuscationSettings: ObfuscationSettings; customLists: CustomLists; apiAccessMethods: ApiAccessMethodSettings; |
