n39librarian/frontend/src/shared/utils/useAuthentication.ts

32 lines
817 B
TypeScript

import { useCallback, useContext } from "react";
import { AuthContext } from "../../App";
import { useQuery } from "@tanstack/react-query";
type UseAuthHook = { authenticated: boolean };
export const useAuth = (): UseAuthHook => {
const auth = useContext(AuthContext);
const authenticationCheck = useCallback(
async () =>
await fetch("/api/authenticate", {
method: "POST",
body: JSON.stringify({ password: "authCheck" }),
headers: {
"Content-Type": "application/json",
},
}).then((res) => {
auth.setAuthenticated?.(res.ok);
//react-query can't handle undefined without throwing a warning ...
return null;
}),
[auth]
);
useQuery({
queryFn: authenticationCheck,
queryKey: ["auth"],
});
return auth;
};