30 lines
778 B
JavaScript
30 lines
778 B
JavaScript
import React from "react"
|
|
import { reducer, initialState } from "./reducer"
|
|
|
|
import Poll from "./Poll"
|
|
|
|
export const AppData = React.createContext({
|
|
state: initialState,
|
|
dispatch: () => null
|
|
})
|
|
|
|
export const AppDataProvider = ({ children }) => {
|
|
|
|
const [data, dispatchData] = React.useReducer(reducer, initialState)
|
|
|
|
const [games, gamesFetching ] = Poll('api/gamestate' , 30, data.offlineMode)
|
|
const [leaderboard, leaderboardFetching ] = Poll('api/leaderboard', 60, data.offlineMode)
|
|
|
|
data.games = games
|
|
data.gamesFetching = gamesFetching
|
|
|
|
data.leaderboard = leaderboard
|
|
data.leaderboardFetching = leaderboardFetching
|
|
|
|
return (
|
|
<AppData.Provider value={[data, dispatchData]}>
|
|
{children}
|
|
</AppData.Provider>
|
|
)
|
|
}
|