@@ -2,12 +2,12 @@ import './style.scss';
22
33import { error } from '@tauri-apps/plugin-log' ;
44import { useMemo } from 'react' ;
5-
65import { useI18nContext } from '../../../../../../../../i18n/i18n-react' ;
76import { Toggle } from '../../../../../../../../shared/defguard-ui/components/Layout/Toggle/Toggle' ;
87import type { ToggleOption } from '../../../../../../../../shared/defguard-ui/components/Layout/Toggle/types' ;
98import { clientApi } from '../../../../../../clientAPI/clientApi' ;
109import {
10+ ClientConnectionType ,
1111 ClientTrafficPolicy ,
1212 type CommonWireguardFields ,
1313 type DefguardInstance ,
@@ -36,18 +36,19 @@ export const LocationCardRoute = ({ location, selectedDefguardInstance }: Props)
3636 } ;
3737
3838 const { LL } = useI18nContext ( ) ;
39+
3940 const toggleOptions = useMemo ( ( ) => {
40- const res : ToggleOption < number > [ ] = [
41+ const res : ToggleOption < boolean > [ ] = [
4142 {
4243 text : LL . pages . client . pages . instancePage . controls . traffic . predefinedTraffic ( ) ,
43- value : 0 ,
44+ value : false ,
4445 disabled :
4546 selectedDefguardInstance ?. client_traffic_policy ===
4647 ClientTrafficPolicy . FORCE_ALL_TRAFFIC ,
4748 } ,
4849 {
4950 text : LL . pages . client . pages . instancePage . controls . traffic . allTraffic ( ) ,
50- value : 1 ,
51+ value : true ,
5152 disabled :
5253 selectedDefguardInstance ?. client_traffic_policy ===
5354 ClientTrafficPolicy . DISABLE_ALL_TRAFFIC ,
@@ -56,17 +57,26 @@ export const LocationCardRoute = ({ location, selectedDefguardInstance }: Props)
5657 return res ;
5758 } , [ LL . pages , selectedDefguardInstance ?. client_traffic_policy ] ) ;
5859
59- let selected : number ;
60- if ( selectedDefguardInstance ?. client_traffic_policy === ClientTrafficPolicy . NONE ) {
61- selected = Number ( location ?. route_all_traffic ) ;
62- } else if (
63- selectedDefguardInstance ?. client_traffic_policy ===
64- ClientTrafficPolicy . DISABLE_ALL_TRAFFIC
65- ) {
66- selected = 0 ;
67- } else {
68- selected = 1 ;
69- }
60+ const selected = useMemo ( ( ) : boolean => {
61+ // handle undefined location
62+ if ( ! location ) return false ;
63+
64+ // tunnel
65+ if ( location . connection_type === ClientConnectionType . TUNNEL )
66+ return location . route_all_traffic ;
67+
68+ // Defguard location
69+ if ( ! selectedDefguardInstance ) return false ;
70+ switch ( selectedDefguardInstance . client_traffic_policy ) {
71+ case ClientTrafficPolicy . DISABLE_ALL_TRAFFIC :
72+ return false ;
73+ case ClientTrafficPolicy . FORCE_ALL_TRAFFIC :
74+ return true ;
75+ case ClientTrafficPolicy . NONE :
76+ return location . route_all_traffic ?? false ;
77+ }
78+ } , [ location , selectedDefguardInstance ] ) ;
79+
7080 return (
7181 < Toggle
7282 className = "location-traffic-toggle"
@@ -75,7 +85,7 @@ export const LocationCardRoute = ({ location, selectedDefguardInstance }: Props)
7585 disabled = { location ?. active }
7686 onChange = { ( v ) => {
7787 if ( ! location ?. active ) {
78- handleChange ( Boolean ( v ) ) ;
88+ handleChange ( v ) ;
7989 }
8090 } }
8191 />
0 commit comments