summaryrefslogtreecommitdiffhomepage
path: root/desktop
diff options
context:
space:
mode:
authorMarkus Pettersson <markus.pettersson@mullvad.net>2025-07-17 18:24:56 +0200
committerDavid Lönnhager <david.l@mullvad.net>2025-07-23 09:41:54 +0200
commit38b8388e06b0fd60c3e4e6aa351eb541329dd3dd (patch)
tree0082708fb62cadfe9f1fd405c6ec7ac9ec75556d /desktop
parentbb4b111acc09a92fdf12e0fc6d504180f91421c8 (diff)
downloadmullvadvpn-38b8388e06b0fd60c3e4e6aa351eb541329dd3dd.tar.xz
mullvadvpn-38b8388e06b0fd60c3e4e6aa351eb541329dd3dd.zip
Refactor Relay protobuf type
Remove the dependency on google/protobuf/any.proto.
Diffstat (limited to 'desktop')
-rw-r--r--desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts53
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/lib/filter-locations.ts2
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/redux/settings/reducers.ts4
-rw-r--r--desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts9
4 files changed, 27 insertions, 41 deletions
diff --git a/desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts b/desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts
index 1a49dae202..4b79b0b1d9 100644
--- a/desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts
+++ b/desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts
@@ -25,7 +25,6 @@ import {
ErrorStateCause,
ErrorStateDetails,
FeatureIndicator,
- FeaturesType,
FirewallPolicyError,
FirewallPolicyErrorType,
IAppVersionInfo,
@@ -53,7 +52,7 @@ import {
ObfuscationType,
Ownership,
ProxyType,
- RelayEndpointType,
+ Quic,
RelayLocation,
RelayLocationGeographical,
RelayProtocol,
@@ -119,43 +118,35 @@ function convertFromRelayListCity(city: grpcTypes.RelayListCity): IRelayListCity
function convertFromRelayListRelay(relay: grpcTypes.Relay): IRelayListHostname {
const relayObject = relay.toObject();
- let daita = false;
- if (relayObject.endpointType === grpcTypes.Relay.RelayType.WIREGUARD) {
- const endpointDataU8 = relay.getEndpointData()?.getValue_asU8();
- if (endpointDataU8) {
- daita = grpcTypes.WireguardRelayEndpointData.deserializeBinary(endpointDataU8).getDaita();
- }
- }
+ // The relay type is determined by the variant of the extra endpoint data
+ const wireguard = relayObject.endpointData?.wireguard;
+ const openvpn = relayObject.endpointData?.openvpn;
+ const bridge = relayObject.endpointData?.bridge;
+
+ const endpointType = wireguard
+ ? 'wireguard'
+ : openvpn
+ ? 'openvpn'
+ : bridge
+ ? 'bridge'
+ : /*This case should never happen ..*/ 'bridge';
+
+ const daita = wireguard ? wireguard.daita : false;
+ const quic = wireguard?.quic ? quicFromRelayType(wireguard.quic) : undefined;
return {
...relayObject,
- endpointType: convertFromRelayType(relayObject.endpointType),
- features: relayObject.features ? featuresFromRelayType(relayObject.features) : undefined,
+ endpointType,
daita,
+ quic,
};
}
-function convertFromRelayType(relayType: grpcTypes.Relay.RelayType): RelayEndpointType {
- const protocolMap: Record<grpcTypes.Relay.RelayType, RelayEndpointType> = {
- [grpcTypes.Relay.RelayType.OPENVPN]: 'openvpn',
- [grpcTypes.Relay.RelayType.BRIDGE]: 'bridge',
- [grpcTypes.Relay.RelayType.WIREGUARD]: 'wireguard',
- };
- return protocolMap[relayType];
-}
-
-function featuresFromRelayType(features: grpcTypes.Relay.Features.AsObject): FeaturesType {
- const daita = features.daita;
- const quic = features.quic
- ? {
- domain: features.quic.domain,
- token: features.quic.token,
- addr_in: features.quic.addrInList,
- }
- : undefined;
+function quicFromRelayType(quic: grpcTypes.Relay.RelayData.Wireguard.Quic.AsObject): Quic {
return {
- daita,
- quic,
+ domain: quic.domain,
+ token: quic.token,
+ addrIn: quic.addrInList,
};
}
diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/filter-locations.ts b/desktop/packages/mullvad-vpn/src/renderer/lib/filter-locations.ts
index fcfd3a38da..29ce00f1ff 100644
--- a/desktop/packages/mullvad-vpn/src/renderer/lib/filter-locations.ts
+++ b/desktop/packages/mullvad-vpn/src/renderer/lib/filter-locations.ts
@@ -38,7 +38,7 @@ export function filterLocationsByQuic(
tunnelProtocol: TunnelProtocol,
): IRelayLocationCountryRedux[] {
const quicFilterActive = quic && tunnelProtocol !== 'openvpn';
- const quickOnRelay = (relay: IRelayLocationRelayRedux) => relay.features?.quic !== undefined;
+ const quickOnRelay = (relay: IRelayLocationRelayRedux) => relay.quic !== undefined;
return quicFilterActive ? filterLocationsImpl(locations, quickOnRelay) : locations;
}
diff --git a/desktop/packages/mullvad-vpn/src/renderer/redux/settings/reducers.ts b/desktop/packages/mullvad-vpn/src/renderer/redux/settings/reducers.ts
index 9fc8a6d30e..9ac8bb3a61 100644
--- a/desktop/packages/mullvad-vpn/src/renderer/redux/settings/reducers.ts
+++ b/desktop/packages/mullvad-vpn/src/renderer/redux/settings/reducers.ts
@@ -7,7 +7,6 @@ import {
BridgeType,
CustomLists,
CustomProxy,
- FeaturesType,
IDaitaSettings,
IDnsOptions,
IpVersion,
@@ -16,6 +15,7 @@ import {
ObfuscationSettings,
ObfuscationType,
Ownership,
+ Quic,
RelayEndpointType,
RelayLocation,
RelayOverride,
@@ -78,7 +78,7 @@ export interface IRelayLocationRelayRedux {
weight: number;
endpointType: RelayEndpointType;
daita: boolean;
- features?: FeaturesType;
+ quic?: Quic;
}
export interface IRelayLocationCityRedux {
diff --git a/desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts b/desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts
index f12c3123f8..49164a3770 100644
--- a/desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts
+++ b/desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts
@@ -396,15 +396,10 @@ export interface IRelayListHostname {
weight: number;
owned: boolean;
endpointType: RelayEndpointType;
- daita: boolean; // TODO: Deprecate in favor of Features 👇
- features?: FeaturesType;
-}
-
-// The absence of a value signals that the relay does not have it enabled.
-export type FeaturesType = {
daita: boolean;
+ // The absence of this value signals that the relay does not deploy QUIC.
quic?: Quic;
-};
+}
export type Quic = {
domain: string;