@@ -19,6 +19,38 @@ import SignUp from "./SignUp/SignUp";
19
19
function App ( ) {
20
20
const qbUIKitContext : QBDataContextType = useQbUIKitDataContext ( ) ;
21
21
22
+ const [ isOnline , setIsOnline ] = useState < boolean > (
23
+ navigator . onLine
24
+ ) ;
25
+
26
+ qbUIKitContext . storage . CONNECTION_REPOSITORY . subscribe ( ( status ) => {
27
+ console . log ( `Connection status: ${ status ? 'CONNECTED' : 'DISCONNECTED' } ` ) ;
28
+ if ( status ) { setIsOnline ( true ) ; }
29
+ else {
30
+ setIsOnline ( false ) ;
31
+ setErrorMessage ( 'Error! No Connection.' ) ;
32
+ }
33
+ } ) ;
34
+
35
+ useEffect ( ( ) => {
36
+ const handleOnline = ( ) => setIsOnline ( true ) ;
37
+ const handleOffline = ( ) => setIsOnline ( false ) ;
38
+
39
+ window . addEventListener ( 'online' , handleOnline ) ;
40
+ window . addEventListener ( 'offline' , handleOffline ) ;
41
+
42
+ return ( ) => {
43
+ window . removeEventListener ( 'online' , handleOnline ) ;
44
+ window . removeEventListener ( 'offline' , handleOffline ) ;
45
+ } ;
46
+ } , [ ] ) ;
47
+
48
+ useEffect ( ( ) => {
49
+ if ( isOnline ) {
50
+ setErrorMessage ( '' ) ;
51
+ }
52
+ } , [ isOnline ] ) ;
53
+
22
54
const [ isUserAuthorized , setUserAuthorized ] = React . useState ( false ) ;
23
55
const [ isSDKInitialized , setSDKInitialized ] = React . useState ( false ) ;
24
56
@@ -34,46 +66,59 @@ function App() {
34
66
const navigate = useNavigate ( ) ;
35
67
36
68
const loginHandler = async ( data : any ) : Promise < void > => {
37
- setErrorMessage ( '' ) ;
38
- const loginData : LoginData = {
39
- login : data . login ,
40
- password : data . password
69
+ if ( isOnline ) {
70
+ setErrorMessage ( '' ) ;
71
+ const loginData : LoginData = {
72
+ login : data . login ,
73
+ password : data . password
74
+ }
75
+ setCurrentUser ( loginData ) ;
76
+ setTheme ( data . nameTheme ) ;
77
+ await loginAction ( loginData ) ;
78
+ document . documentElement . setAttribute ( 'data-theme' , data . nameTheme ) ;
79
+ } else {
80
+ setErrorMessage ( 'Error! No connection.' )
41
81
}
42
- setCurrentUser ( loginData ) ;
43
- setTheme ( data . nameTheme ) ;
44
- await loginAction ( loginData ) ;
45
82
} ;
46
83
47
84
const createUserHandler = async ( data : UserData ) : Promise < void > => {
48
- setErrorMessage ( '' ) ;
49
-
50
- const resultCreateUser = await createUserAction ( data ) ;
51
-
52
- logout ( ) ;
53
- switch ( resultCreateUser ) {
54
- case UserCreationStatus . UserCreated :
55
- setUserAuthorized ( false ) ;
56
- navigate ( '/sign-in' ) ;
57
- break ;
58
- case UserCreationStatus . UserExists :
59
- setErrorMessage ( 'User already exists' ) ;
60
- setUserAuthorized ( false ) ;
61
- navigate ( '/sign-up' ) ;
62
- break ;
63
- default :
64
- setErrorMessage ( 'Auth Fail' ) ;
65
- setUserAuthorized ( false ) ;
66
- navigate ( '/sign-up' ) ;
67
- break ;
85
+ if ( isOnline ) {
86
+ setErrorMessage ( '' ) ;
87
+
88
+ const resultCreateUser = await createUserAction ( data ) ;
89
+
90
+ logout ( ) ;
91
+ switch ( resultCreateUser ) {
92
+ case UserCreationStatus . UserCreated :
93
+ setUserAuthorized ( false ) ;
94
+ navigate ( '/sign-in' ) ;
95
+ break ;
96
+ case UserCreationStatus . UserExists :
97
+ setErrorMessage ( 'User already exists' ) ;
98
+ setUserAuthorized ( false ) ;
99
+ navigate ( '/sign-up' ) ;
100
+ break ;
101
+ default :
102
+ setErrorMessage ( 'Auth Fail' ) ;
103
+ setUserAuthorized ( false ) ;
104
+ navigate ( '/sign-up' ) ;
105
+ break ;
106
+ }
107
+ } else {
108
+ setErrorMessage ( 'Error! No connection.' ) ;
68
109
}
69
110
} ;
70
111
71
112
const logoutUIKitHandler = async ( ) => {
72
- qbUIKitContext . release ( ) ;
73
- setCurrentUser ( { login : '' , password : '' } ) ;
74
- setUserAuthorized ( false ) ;
75
- document . documentElement . setAttribute ( 'data-theme' , 'light' ) ;
76
- navigate ( '/sign-in' ) ;
113
+ if ( isOnline ) {
114
+ qbUIKitContext . release ( ) ;
115
+ setCurrentUser ( { login : '' , password : '' } ) ;
116
+ setUserAuthorized ( false ) ;
117
+ document . documentElement . setAttribute ( 'data-theme' , 'light' ) ;
118
+ navigate ( '/sign-in' ) ;
119
+ } else {
120
+ setErrorMessage ( 'Error! No connection.' )
121
+ }
77
122
}
78
123
79
124
const loginAction = async ( loginData : LoginData ) : Promise < void > => {
@@ -149,16 +194,15 @@ function App() {
149
194
login : currentUser . login ,
150
195
password : currentUser . password ,
151
196
} }
152
- qbConfig = { { ...QBConfig } } // NEW !!!
197
+ qbConfig = { { ...QBConfig } }
153
198
>
154
- < div className = "App" >
199
+ < div >
155
200
156
201
< Routes >
157
202
< Route
158
203
path = "/" element = {
159
204
isUserAuthorized
160
205
?
161
- < div >
162
206
< div >
163
207
< div className = "main-buttons-wrapper" >
164
208
< MainButton
@@ -185,13 +229,12 @@ function App() {
185
229
/>
186
230
</ div >
187
231
{ /*<QuickBloxUIKitDesktopLayout theme={new CustomTheme()} />*/ }
188
- < QuickBloxUIKitDesktopLayout uikitHeightOffset = { "32px" } />
232
+ < QuickBloxUIKitDesktopLayout uikitHeightOffset = "32px" />
189
233
</ div >
190
- </ div >
191
234
:
192
- < Auth children = { < SignIn signInHandler = { loginHandler } errorMessage = { errorMessage } /> } /> } />
193
- < Route path = "/sign-in" element = { < Auth children = { < SignIn signInHandler = { loginHandler } errorMessage = { errorMessage } /> } /> } />
194
- < Route path = "/sign-up" element = { < Auth children = { < SignUp signUpHandler = { createUserHandler } errorMessage = { errorMessage } /> } /> } />
235
+ < Auth children = { < SignIn signInHandler = { loginHandler } errorMessage = { errorMessage } isOnline = { isOnline } /> } /> } />
236
+ < Route path = "/sign-in" element = { < Auth children = { < SignIn signInHandler = { loginHandler } errorMessage = { errorMessage } isOnline = { isOnline } /> } /> } />
237
+ < Route path = "/sign-up" element = { < Auth children = { < SignUp signUpHandler = { createUserHandler } errorMessage = { errorMessage } isOnline = { isOnline } /> } /> } />
195
238
</ Routes >
196
239
</ div >
197
240
</ QuickBloxUIKitProvider >
0 commit comments