summaryrefslogtreecommitdiffhomepage
path: root/gui/src/shared
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2024-05-28 15:41:34 +0200
committerOskar Nyberg <oskar@mullvad.net>2024-05-28 15:41:34 +0200
commit2b04fed8d6a486d97af47f1add45b0eeb1071db8 (patch)
tree0d53951c8d6939526d41173269cba9d57e58b611 /gui/src/shared
parentb6db0f3487d5096e08b077c3d806c96b50aecf35 (diff)
parent58556c0da8a4f3abc441d18c9dd0c026b1986dfb (diff)
downloadmullvadvpn-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.ts36
-rw-r--r--gui/src/shared/ipc-schema.ts20
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>(),
},
};