import { fetchUser } from "apiCalls/apiEndpoints";
import { AnyRecord } from "dns";
import React, { useContext, useState, useEffect } from "react";
import { useQuery } from "react-query";
import { useRouter } from "next/router";
import { ISSERVER } from "utilFuncs/utilFunctions";
import { usePath } from "./HistoryContext";

export const themes = {
  light: {
    foreground: "#000000",
    background: "#eeeeee",
  },
  dark: {
    foreground: "#ffffff",
    background: "#222222",
  },
};

export const UserContext = React.createContext<any>({
  user: null,
});

export const useUser: any = () => useContext(UserContext);

export const UserProvider = ({ children }: any) => {
  const [user, setUser] = useState<any>(null);
  const [isAuthenticated, setisAuthenticated] = useState(null);
  const { setpath, path } = usePath();

  const { data, isLoading, isSuccess, isError, status, error } = useQuery(
    ["user"],
    fetchUser,
    {
      retry: false,
      refetchOnWindowFocus: false,
      onSuccess: (data) => {
        setUser(data?.data);
        setisAuthenticated(true);
      },
      onError: (err: any) => {
        console.log("anerror", err);
        if (err?.response?.status == 401) {
          setisAuthenticated(false)
        }
      },
    }
  );

  const router = useRouter();


  return (
    <UserContext.Provider
      value={{
        user,
        setUser,
        isAuthenticated,
        setisAuthenticated,
        isLoading,
        isError,
        data,
        error,
        status,
      }}
    >
      {children}
    </UserContext.Provider>
  );
};
