diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2024-05-28 15:41:34 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2024-05-28 15:41:34 +0200 |
| commit | 2b04fed8d6a486d97af47f1add45b0eeb1071db8 (patch) | |
| tree | 0d53951c8d6939526d41173269cba9d57e58b611 /gui/src/shared | |
| parent | b6db0f3487d5096e08b077c3d806c96b50aecf35 (diff) | |
| parent | 58556c0da8a4f3abc441d18c9dd0c026b1986dfb (diff) | |
| download | mullvadvpn-2b04fed8d6a486d97af47f1add45b0eeb1071db8.tar.xz mullvadvpn-2b04fed8d6a486d97af47f1add45b0eeb1071db8.zip | |
Merge branch 'add-macos-split-tunneling-gui-des-786'
Diffstat (limited to 'gui/src/shared')
| -rw-r--r-- | gui/src/shared/application-types.ts | 36 | ||||
| -rw-r--r-- | gui/src/shared/ipc-schema.ts | 20 |
2 files changed, 47 insertions, 9 deletions
diff --git a/gui/src/shared/application-types.ts b/gui/src/shared/application-types.ts index 5f9fb80fd0..526d994d7b 100644 --- a/gui/src/shared/application-types.ts +++ b/gui/src/shared/application-types.ts @@ -6,7 +6,7 @@ export interface IApplication { icon?: string; } -export interface IWindowsApplication extends IApplication { +export interface ISplitTunnelingApplication extends IApplication { deletable: boolean; } @@ -24,3 +24,37 @@ export interface ILinuxApplication extends IApplication { export interface ILinuxSplitTunnelingApplication extends ILinuxApplication { warning?: Warning; } + +export interface ISplitTunnelingAppListRetriever { + /** + * Returns a list of all applications known to the app. + * @param updateCaches Specifies if the application list should be fetched again and merged into the existing cache. + */ + getApplications( + updateCaches?: boolean, + ): Promise<{ fromCache: boolean; applications: ISplitTunnelingApplication[] }>; + + /** + * Returns an object containing information about whether or not it was fetched from the cache, + * and a list of ISplitTunnelingApplication corresponding to the provided paths. + */ + getMetadataForApplications( + applicationPaths: string[], + ): Promise<{ fromCache: boolean; applications: ISplitTunnelingApplication[] }>; + + /** + * Resolves the actual executable path when an app is provided. On Windows this resolves links and + * on macOS this finds the executable when an application bundle is provided. + */ + resolveExecutablePath(providedPath: string): Promise<string>; + + /** + * Adds an application to the internal cache. + */ + addApplicationPathToCache(applicationPath: string): Promise<void>; + + /** + * Removes an application from the internal cache. + */ + removeApplicationFromCache(application: ISplitTunnelingApplication): void; +} diff --git a/gui/src/shared/ipc-schema.ts b/gui/src/shared/ipc-schema.ts index 561ec924a0..e33736bcf8 100644 --- a/gui/src/shared/ipc-schema.ts +++ b/gui/src/shared/ipc-schema.ts @@ -1,6 +1,6 @@ import { GetTextTranslations } from 'gettext-parser'; -import { ILinuxSplitTunnelingApplication, IWindowsApplication } from './application-types'; +import { ILinuxSplitTunnelingApplication, ISplitTunnelingApplication } from './application-types'; import { AccessMethodSetting, AccountDataError, @@ -71,12 +71,13 @@ export interface IAppStateSnapshot { upgradeVersion: IAppVersionInfo; guiSettings: IGuiSettingsState; translations: ITranslations; - windowsSplitTunnelingApplications?: IWindowsApplication[]; + splitTunnelingApplications?: ISplitTunnelingApplication[]; macOsScrollbarVisibility?: MacOsScrollbarVisibility; changelog: IChangelog; forceShowChanges: boolean; navigationHistory?: IHistoryObject; currentApiAccessMethod?: AccessMethodSetting; + isMacOs13OrNewer: boolean; } // The different types of requests are: @@ -238,12 +239,15 @@ export const ipcSchema = { getApplications: invoke<void, ILinuxSplitTunnelingApplication[]>(), launchApplication: invoke<ILinuxSplitTunnelingApplication | string, LaunchApplicationResult>(), }, - windowsSplitTunneling: { - '': notifyRenderer<IWindowsApplication[]>(), + splitTunneling: { + '': notifyRenderer<ISplitTunnelingApplication[]>(), setState: invoke<boolean, void>(), - getApplications: invoke<boolean, { fromCache: boolean; applications: IWindowsApplication[] }>(), - addApplication: invoke<IWindowsApplication | string, void>(), - removeApplication: invoke<IWindowsApplication, void>(), - forgetManuallyAddedApplication: invoke<IWindowsApplication, void>(), + getApplications: invoke< + boolean, + { fromCache: boolean; applications: ISplitTunnelingApplication[] } + >(), + addApplication: invoke<ISplitTunnelingApplication | string, void>(), + removeApplication: invoke<ISplitTunnelingApplication, void>(), + forgetManuallyAddedApplication: invoke<ISplitTunnelingApplication, void>(), }, }; |
