discotools / utils /auth.ts
enzostvs's picture
enzostvs HF Staff
Upload 172 files
9cd6ddb verified
import Cookies from "js-cookie";
import { useQuery } from "react-query";
import { useCookie } from "react-use";
import { API, api, MY_TOKEN_KEY } from "utils/api";
export const login = async () => {
const res: any = await fetch("/api/auth", {
method: "GET",
headers: { "Content-Type": "application/json" },
});
if (!res.ok) return;
const url = await res.json();
window.location.href = url;
};
export const setToken = (token: string) => {
// localStorage.setItem(MY_TOKEN_KEY, token);
// set cookie
Cookies.set(MY_TOKEN_KEY, token);
// set api sauce header authorization globally
api.setHeader("Authorization", `Bearer ${token}`);
};
export const useUser = () => {
const [value, updateCookie, remove] = useCookie(MY_TOKEN_KEY);
const {
data,
status,
refetch,
remove: clear,
}: any = useQuery(["user.me"], async () => {
const response: any = await API.me();
if (response.status === 401) {
localStorage.set("token", null);
}
if (!response.ok) return null;
return {
...response.data,
};
});
return {
user: data,
loading: status === "loading",
refetch,
logout: () => {
remove();
clear();
api.deleteHeader("Authorization");
window.location.reload();
},
};
};