@@ -7,9 +7,11 @@ import { useEffect } from 'react';
7
7
import { shallow } from 'zustand/shallow' ;
8
8
9
9
import { useI18nContext } from '../../../../i18n/i18n-react' ;
10
+ import { LoaderSpinner } from '../../../../shared/components/layout/LoaderSpinner/LoaderSpinner' ;
10
11
import { MessageBox } from '../../../../shared/components/layout/MessageBox/MessageBox' ;
11
12
import { MessageBoxType } from '../../../../shared/components/layout/MessageBox/types' ;
12
13
import { useApi } from '../../../../shared/hooks/api/useApi' ;
14
+ import useEffectOnce from '../../../../shared/hooks/api/utils' ;
13
15
import { useEnrollmentStore } from '../../hooks/store/useEnrollmentStore' ;
14
16
import { ConfigureDeviceCard } from './components/ConfigureDeviceCard/ConfigureDeviceCard' ;
15
17
import { QuickGuideCard } from './components/QuickGuideCard/QuickGuideCard' ;
@@ -21,7 +23,7 @@ export const DeviceStep = () => {
21
23
const { LL } = useI18nContext ( ) ;
22
24
const setStore = useEnrollmentStore ( ( state ) => state . setState ) ;
23
25
const deviceState = useEnrollmentStore ( ( state ) => state . deviceState ) ;
24
- const vpnOptional = useEnrollmentStore ( ( state ) => state . vpnOptional ) ;
26
+ const settings = useEnrollmentStore ( ( state ) => state . enrollmentSettings ) ;
25
27
const [ userPhone , userPassword ] = useEnrollmentStore (
26
28
( state ) => [ state . userInfo ?. phone_number , state . userPassword ] ,
27
29
shallow ,
@@ -32,8 +34,8 @@ export const DeviceStep = () => {
32
34
) ;
33
35
34
36
const cn = classNames ( {
35
- required : ! vpnOptional ,
36
- optional : vpnOptional ,
37
+ required : ! settings ?. vpn_setup_optional ,
38
+ optional : settings ?. vpn_setup_optional ,
37
39
} ) ;
38
40
39
41
const { mutate } = useMutation ( {
@@ -51,7 +53,11 @@ export const DeviceStep = () => {
51
53
useEffect ( ( ) => {
52
54
if ( userPassword ) {
53
55
const sub = nextSubject . subscribe ( ( ) => {
54
- if ( ( deviceState && deviceState . device && deviceState . configs ) || vpnOptional ) {
56
+ if (
57
+ ( deviceState && deviceState . device && deviceState . configs ) ||
58
+ settings ?. vpn_setup_optional ||
59
+ settings ?. only_client_activation
60
+ ) {
55
61
setStore ( {
56
62
loading : true ,
57
63
} ) ;
@@ -66,20 +72,44 @@ export const DeviceStep = () => {
66
72
sub . unsubscribe ( ) ;
67
73
} ;
68
74
}
69
- } , [ deviceState , nextSubject , vpnOptional , setStore , userPhone , userPassword , mutate ] ) ;
75
+ } , [
76
+ deviceState ,
77
+ nextSubject ,
78
+ settings ?. vpn_setup_optional ,
79
+ setStore ,
80
+ userPhone ,
81
+ userPassword ,
82
+ mutate ,
83
+ settings ?. only_client_activation ,
84
+ ] ) ;
85
+
86
+ // If only client activation is enabled, skip manual wireguard setup
87
+ useEffectOnce ( ( ) => {
88
+ if ( settings ?. only_client_activation ) {
89
+ nextSubject . next ( ) ;
90
+ }
91
+ } ) ;
70
92
71
93
return (
72
94
< div id = "enrollment-device-step" className = { cn } >
73
- { vpnOptional && (
74
- < MessageBox
75
- type = { MessageBoxType . WARNING }
76
- message = { LL . pages . enrollment . steps . deviceSetup . optionalMessage ( ) }
77
- />
95
+ { ! settings ?. only_client_activation ? (
96
+ < >
97
+ { settings ?. vpn_setup_optional && (
98
+ < MessageBox
99
+ type = { MessageBoxType . WARNING }
100
+ message = { LL . pages . enrollment . steps . deviceSetup . optionalMessage ( ) }
101
+ />
102
+ ) }
103
+ < div className = "cards" >
104
+ < ConfigureDeviceCard />
105
+ < QuickGuideCard />
106
+ </ div >
107
+ </ >
108
+ ) : (
109
+ < div id = "loader" >
110
+ < LoaderSpinner size = { 80 } />
111
+ </ div >
78
112
) }
79
- < div className = "cards" >
80
- < ConfigureDeviceCard />
81
- < QuickGuideCard />
82
- </ div >
83
113
</ div >
84
114
) ;
85
115
} ;
0 commit comments