1
- import { useState , useEffect } from 'react'
1
+ import { useState , useLayoutEffect } from 'react'
2
2
import { useCookieState } from './use-cookie-state'
3
3
import { BinarySocketBase } from 'common/websocket/socket_base'
4
4
import { getDateFromToday } from 'common/utility'
@@ -10,13 +10,13 @@ export const useWebsiteStatus = () => {
10
10
const [ website_status , setWebsiteStatus ] = useCookieState ( null , WEBSITE_STATUS_COUNTRY_KEY , {
11
11
expires : getDateFromToday ( COOKIE_EXPIRY_DAYS ) ,
12
12
} )
13
+
13
14
const [ is_loading , setLoading ] = useState ( true )
14
15
15
- useEffect ( ( ) => {
16
+ useLayoutEffect ( ( ) => {
16
17
setLoading ( true )
17
18
if ( ! website_status ) {
18
19
const binary_socket = BinarySocketBase . init ( )
19
-
20
20
binary_socket . onopen = ( ) => {
21
21
binary_socket . send ( JSON . stringify ( { website_status : 1 } ) )
22
22
}
@@ -26,13 +26,30 @@ export const useWebsiteStatus = () => {
26
26
27
27
if ( ! response . error ) {
28
28
const { clients_country, crypto_config } = response . website_status
29
+
29
30
setWebsiteStatus ( { clients_country, crypto_config } )
30
31
}
31
32
setLoading ( false )
32
33
binary_socket . close ( )
33
34
}
34
35
} else {
35
- setLoading ( false )
36
+ const binary_socket = BinarySocketBase . init ( )
37
+ binary_socket . onopen = ( ) => {
38
+ binary_socket . send ( JSON . stringify ( { website_status : 1 } ) )
39
+ }
40
+
41
+ binary_socket . onmessage = ( msg ) => {
42
+ const response = JSON . parse ( msg . data )
43
+
44
+ if ( ! response . error ) {
45
+ const { clients_country, crypto_config } = response . website_status
46
+ if ( clients_country !== website_status . clients_country ) {
47
+ setWebsiteStatus ( { clients_country, crypto_config } )
48
+ }
49
+ }
50
+ binary_socket . close ( )
51
+ setLoading ( false )
52
+ }
36
53
}
37
54
} , [ website_status ] )
38
55
0 commit comments