12345678910111213141516171819202122232425262728293031323334 |
- import { useState, useEffect, useCallback } from "react";
- import { UNKNOWN, OK, BAD, FAILED } from "../components/shared/StatusMessage";
- export default ({
- url,
- ms = 20000,
- fetchOptions = {},
- }) => {
- const [status, setStatus] = useState(UNKNOWN);
- const checkServer = useCallback(async () => {
- console.log(`Polling ${url}`);
- try {
- const res = await fetch(url, fetchOptions);
- if (res.ok) {
- setStatus(OK);
- } else {
- setStatus(BAD);
- }
- } catch (err) {
- console.log(err);
- setStatus(FAILED);
- }
- }, [url, fetchOptions]);
- useEffect(() => {
- checkServer();
-
- const interval = setInterval(checkServer, ms);
- return () => clearInterval(interval);
- }, [ms, checkServer]);
- return status;
- }
|