import { useEffect } from "react";
import { useLocation, useNavigate } from "react-router-dom";
import Cookies from "js-cookie";
import { useUserStore } from "../store/user.store";
import Result from "../components/Result";

interface IGuardProps {
  children: JSX.Element;
}

const needAuthList = ["course/detail"];

export const Guard = (props: IGuardProps) => {
  const navigate = useNavigate();
  const user = useUserStore((s: any) => s.user);
  const fetchUser = useUserStore((s: any) => s.fetchUser);

  const location = useLocation();
  const sign = Cookies.get("_sign_web");
  const needAuth = needAuthList.some((p) => location.pathname.indexOf(p) > -1);

  useEffect(() => {
    if (!user) fetchUser();
  }, [location.pathname]);

  if (!sign && needAuth) return <Result />;
  return props.children;
};
