@@ -19,6 +19,38 @@ import SignUp from "./SignUp/SignUp";
1919function App ( ) {
2020 const qbUIKitContext : QBDataContextType = useQbUIKitDataContext ( ) ;
2121
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+
2254 const [ isUserAuthorized , setUserAuthorized ] = React . useState ( false ) ;
2355 const [ isSDKInitialized , setSDKInitialized ] = React . useState ( false ) ;
2456
@@ -34,46 +66,59 @@ function App() {
3466 const navigate = useNavigate ( ) ;
3567
3668 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.' )
4181 }
42- setCurrentUser ( loginData ) ;
43- setTheme ( data . nameTheme ) ;
44- await loginAction ( loginData ) ;
4582 } ;
4683
4784 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.' ) ;
68109 }
69110 } ;
70111
71112 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+ }
77122 }
78123
79124 const loginAction = async ( loginData : LoginData ) : Promise < void > => {
@@ -149,16 +194,15 @@ function App() {
149194 login : currentUser . login ,
150195 password : currentUser . password ,
151196 } }
152- qbConfig = { { ...QBConfig } } // NEW !!!
197+ qbConfig = { { ...QBConfig } }
153198 >
154- < div className = "App" >
199+ < div >
155200
156201 < Routes >
157202 < Route
158203 path = "/" element = {
159204 isUserAuthorized
160205 ?
161- < div >
162206 < div >
163207 < div className = "main-buttons-wrapper" >
164208 < MainButton
@@ -185,13 +229,12 @@ function App() {
185229 />
186230 </ div >
187231 { /*<QuickBloxUIKitDesktopLayout theme={new CustomTheme()} />*/ }
188- < QuickBloxUIKitDesktopLayout uikitHeightOffset = { "32px" } />
232+ < QuickBloxUIKitDesktopLayout uikitHeightOffset = "32px" />
189233 </ div >
190- </ div >
191234 :
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 } /> } /> } />
195238 </ Routes >
196239 </ div >
197240 </ QuickBloxUIKitProvider >
0 commit comments