1
1
import { useEffect } from 'react'
2
2
3
3
import type { TMetric } from '@/spec'
4
- import { EVENT , PAYMENT_USAGE } from '@/constant'
4
+ import { EVENT } from '@/constant'
5
5
6
6
import asyncSuit from '@/utils/async'
7
7
import { send } from '@/utils/helper'
8
8
import { buildLog } from '@/utils/logger'
9
- // import S from './schema'
9
+ import uid from '@/utils/uid'
10
+ import S from './schema'
10
11
11
12
import type { TStore } from './store'
12
13
13
14
/* eslint-disable-next-line */
14
15
const log = buildLog ( 'L:Footer2' )
15
16
16
- const { SR71 , $solver} = asyncSuit
17
+ const { SR71 , $solver, asyncRes } = asyncSuit
17
18
const sr71$ = new SR71 ( )
18
19
19
20
let sub$ = null
@@ -25,11 +26,27 @@ export const toggleSponsorHelper = (): void =>
25
26
export const onLogin = ( ) :void => store . authWarning ( { hideToast :true } )
26
27
export const queryDoraemon = ( data ) :void => send ( EVENT . QUERY_DORAMON , { data} )
27
28
29
+ const getOnlineStatus = ( ) :void => {
30
+ sr71$ . query ( S . onlineStatus , { freshkey :uid . gen ( ) } )
31
+
32
+ setInterval ( ( ) => {
33
+ sr71$ . query ( S . onlineStatus , { freshkey :uid . gen ( ) } )
34
+ } , 10000 )
35
+ }
36
+
28
37
// ###############################
29
38
// Data & Error handlers
30
39
// ###############################
31
40
32
- const DataSolver = [ ]
41
+ const DataSolver = [
42
+ {
43
+ match :asyncRes ( 'onlineStatus' ) ,
44
+ action :( { onlineStatus} ) :void => {
45
+ const { realtimeVisitors} = onlineStatus
46
+ store . mark ( { realtimeVisitors} )
47
+ } ,
48
+ } ,
49
+ ]
33
50
const ErrSolver = [ ]
34
51
35
52
// ###############################
@@ -40,6 +57,7 @@ export const useInit = (_store: TStore, metric: TMetric): void => {
40
57
store = _store
41
58
store . mark ( { metric} )
42
59
sub$ = sr71$ . data ( ) . subscribe ( $solver ( DataSolver , ErrSolver ) )
60
+ getOnlineStatus ( )
43
61
44
62
return ( ) => {
45
63
sub$ . unsubscribe ( )