RoutesProvider.tsx 640 B

1234567891011121314151617181920
  1. import { ReactNode, useEffect, useMemo, useState } from "react";
  2. import { RoutesContext } from "./RoutesContext";
  3. import { Result } from "../../result";
  4. import { Route, apiErrorToString, getRoutes } from "../../api";
  5. export const RoutesProvider = ({ children }: { children: ReactNode }) => {
  6. const [result, setResult] = useState<Result<Route[]>>(Result.of([]));
  7. const res = useMemo(() => {
  8. return Result.from(() => getRoutes(), [], apiErrorToString);
  9. }, []);
  10. useEffect(() => {
  11. res.then(setResult);
  12. }, [res, setResult]);
  13. return (
  14. <RoutesContext.Provider value={result}>{children}</RoutesContext.Provider>
  15. );
  16. };