Files
encoach_ui_odoo19/src/hooks/useUser.tsx
2023-04-12 17:28:52 +01:00

30 lines
999 B
TypeScript

import {useEffect} from "react";
import Router from "next/router";
import useSWR from "swr";
import {User} from "@/interfaces/user";
import axios from "axios";
const fetcher = (url: string) => axios.get(url).then((res) => res.data);
export default function useUser({redirectTo = "", redirectIfFound = false} = {}) {
const {data: user, mutate: mutateUser, isLoading} = useSWR<User>("/api/user", fetcher);
useEffect(() => {
console.log("HERE!!!");
// if no redirect needed, just return (example: already on /dashboard)
// if user data not yet there (fetch in progress, logged in or not) then don't do anything yet
if (!redirectTo || !user) return;
if (
// If redirectTo is set, redirect if the user was not found.
(redirectTo && !redirectIfFound && !user) ||
// If redirectIfFound is also set, redirect if the user was found
(redirectIfFound && user)
) {
Router.push(redirectTo);
}
}, [user, redirectIfFound, redirectTo]);
return {user, mutateUser, isLoading};
}