corda-checkers/webapp/src/api/leaderboard.js
djmil 3f47654cf2 react: state -> reducer -> context
- Leaderboard: useState
- User: useReducer
- Games: useContext [...in progress]
- usePolling giveup on internal cache
  in favour of onResponce() callback
2023-11-09 12:29:47 +01:00

26 lines
774 B
JavaScript

import { useState } from "react";
import usePolling from "../util/Polling";
export default function useLeaderboardApi() {
const [leaderboard, setLeaderboard] = useState(null);
const usePoll = (pollingReducer) => {
const [polling, dispatchPolling] = pollingReducer;
const mode = (polling.enabled === true)
? { interval_sec: 300 } // update leaderbord stats every 5 min
: { interval_stop: true } // user has fliped OfflineToggel
const isPolling = usePolling('/api/leaderboard', setLeaderboard, mode);
if (isPolling !== polling.leaderboard) {
dispatchPolling({ type: 'next', leaderboard: isPolling });
}
return leaderboard;
}
return {
poll: usePoll
}
}