11import { useEffect } from 'react'
22
33import type { TMetric } from '@/spec'
4- import { EVENT , PAYMENT_USAGE } from '@/constant'
4+ import { EVENT } from '@/constant'
55
66import asyncSuit from '@/utils/async'
77import { send } from '@/utils/helper'
88import { buildLog } from '@/utils/logger'
9- // import S from './schema'
9+ import uid from '@/utils/uid'
10+ import S from './schema'
1011
1112import type { TStore } from './store'
1213
1314/* eslint-disable-next-line */
1415const log = buildLog ( 'L:Footer2' )
1516
16- const { SR71 , $solver } = asyncSuit
17+ const { SR71 , $solver, asyncRes } = asyncSuit
1718const sr71$ = new SR71 ( )
1819
1920let sub$ = null
@@ -25,11 +26,27 @@ export const toggleSponsorHelper = (): void =>
2526export const onLogin = ( ) : void => store . authWarning ( { hideToast : true } )
2627export const queryDoraemon = ( data ) : void => send ( EVENT . QUERY_DORAMON , { data } )
2728
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+
2837// ###############################
2938// Data & Error handlers
3039// ###############################
3140
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+ ]
3350const ErrSolver = [ ]
3451
3552// ###############################
@@ -40,6 +57,7 @@ export const useInit = (_store: TStore, metric: TMetric): void => {
4057 store = _store
4158 store . mark ( { metric } )
4259 sub$ = sr71$ . data ( ) . subscribe ( $solver ( DataSolver , ErrSolver ) )
60+ getOnlineStatus ( )
4361
4462 return ( ) => {
4563 sub$ . unsubscribe ( )
0 commit comments