summaryrefslogtreecommitdiffhomepage
path: root/gui/src
diff options
context:
space:
mode:
authorJoakim Hulthe <joakim.hulthe@mullvad.net>2024-08-12 17:29:21 +0200
committerJoakim Hulthe <joakim.hulthe@mullvad.net>2024-09-17 11:29:23 +0200
commitfb92bf539e21542989c5bd31142b265f33812e0d (patch)
treed2945132ded2bd2b1cc4f0746d399a99badce541 /gui/src
parent09f779cf14749e19cbc7c702ca3314376b06bcc3 (diff)
downloadmullvadvpn-fb92bf539e21542989c5bd31142b265f33812e0d.tar.xz
mullvadvpn-fb92bf539e21542989c5bd31142b265f33812e0d.zip
Add temporary gui toggle for `use_anywhere`
Diffstat (limited to 'gui/src')
-rw-r--r--gui/src/main/daemon-rpc.ts1
-rw-r--r--gui/src/renderer/components/WireguardSettings.tsx19
-rw-r--r--gui/src/renderer/components/select-location/RelayListContext.tsx5
-rw-r--r--gui/src/shared/daemon-rpc-types.ts1
4 files changed, 23 insertions, 3 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts
index c85189cea7..754f0b8d47 100644
--- a/gui/src/main/daemon-rpc.ts
+++ b/gui/src/main/daemon-rpc.ts
@@ -589,6 +589,7 @@ export class DaemonRpc {
public async setDaitaSettings(daitaSettings: IDaitaSettings): Promise<void> {
const grpcDaitaSettings = new grpcTypes.DaitaSettings();
grpcDaitaSettings.setEnabled(daitaSettings.enabled);
+ grpcDaitaSettings.setUseAnywhere(daitaSettings.useAnywhere);
await this.call<grpcTypes.DaitaSettings, Empty>(
this.client.setDaitaSettings,
grpcDaitaSettings,
diff --git a/gui/src/renderer/components/WireguardSettings.tsx b/gui/src/renderer/components/WireguardSettings.tsx
index 1f4709159f..5beeab26c9 100644
--- a/gui/src/renderer/components/WireguardSettings.tsx
+++ b/gui/src/renderer/components/WireguardSettings.tsx
@@ -531,6 +531,7 @@ function MtuSetting() {
function DaitaSettings() {
const { setDaitaSettings } = useAppContext();
const daita = useSelector((state) => state.settings.wireguard.daita?.enabled ?? false);
+ const useAnywhere = useSelector((state) => state.settings.wireguard.daita?.useAnywhere ?? false);
const [confirmationDialogVisible, showConfirmationDialog, hideConfirmationDialog] = useBoolean();
@@ -538,12 +539,16 @@ function DaitaSettings() {
if (value) {
showConfirmationDialog();
} else {
- void setDaitaSettings({ enabled: value });
+ void setDaitaSettings({ enabled: value, useAnywhere: useAnywhere });
}
}, []);
+ const setUseAnywhere = useCallback((value: boolean) => {
+ void setDaitaSettings({ enabled: daita, useAnywhere: value });
+ }, []);
+
const confirmDaita = useCallback(() => {
- void setDaitaSettings({ enabled: true });
+ void setDaitaSettings({ enabled: true, useAnywhere: useAnywhere });
hideConfirmationDialog();
}, []);
@@ -579,6 +584,16 @@ function DaitaSettings() {
</AriaInput>
</Cell.Container>
</AriaInputGroup>
+ <AriaInputGroup>
+ <Cell.Container>
+ <AriaLabel>
+ <Cell.InputLabel>The "Just make it work" Button</Cell.InputLabel>
+ </AriaLabel>
+ <AriaInput>
+ <Cell.Switch isOn={useAnywhere} onChange={setUseAnywhere} />
+ </AriaInput>
+ </Cell.Container>
+ </AriaInputGroup>
<ModalAlert
isOpen={confirmationDialogVisible}
type={ModalAlertType.caution}
diff --git a/gui/src/renderer/components/select-location/RelayListContext.tsx b/gui/src/renderer/components/select-location/RelayListContext.tsx
index 13e2dc28e8..13156dd045 100644
--- a/gui/src/renderer/components/select-location/RelayListContext.tsx
+++ b/gui/src/renderer/components/select-location/RelayListContext.tsx
@@ -62,8 +62,11 @@ interface RelayListContextProviderProps {
export function RelayListContextProvider(props: RelayListContextProviderProps) {
const { locationType, searchTerm } = useSelectLocationContext();
const daita = useSelector((state) => state.settings.wireguard.daita?.enabled ?? false);
+ const useAnywhere = useSelector((state) => state.settings.wireguard.daita?.useAnywhere ?? false);
+
const fullRelayList = useSelector((state) => state.settings.relayLocations);
const relaySettings = useNormalRelaySettings();
+ const multihop = relaySettings?.wireguard.useMultihop ?? false;
// Filters the relays to only keep the ones of the desired endpoint type, e.g. "wireguard",
// "openvpn" or "bridge"
@@ -76,7 +79,7 @@ export function RelayListContextProvider(props: RelayListContextProviderProps) {
const relayListForDaita = useMemo(() => {
return filterLocationsByDaita(
relayListForEndpointType,
- daita,
+ daita && (!useAnywhere || multihop),
locationType,
relaySettings?.tunnelProtocol ?? 'any',
relaySettings?.wireguard.useMultihop ?? false,
diff --git a/gui/src/shared/daemon-rpc-types.ts b/gui/src/shared/daemon-rpc-types.ts
index b84ee8a72e..9cb3c15b5d 100644
--- a/gui/src/shared/daemon-rpc-types.ts
+++ b/gui/src/shared/daemon-rpc-types.ts
@@ -551,6 +551,7 @@ export interface RelayOverride {
export interface IDaitaSettings {
enabled: boolean;
+ useAnywhere: boolean;
}
export function parseSocketAddress(socketAddrStr: string): ISocketAddress {