38 lines
958 B
TypeScript
38 lines
958 B
TypeScript
import { useEffect } from "react";
|
|
import { useAuth } from "./useAuth";
|
|
|
|
export const useUser = () => {
|
|
const { token, user, setUser, logout } = useAuth();
|
|
|
|
useEffect(() => {
|
|
const fetchUser = async () => {
|
|
if (!token || user) return;
|
|
|
|
try {
|
|
console.log("Fetching user with token:", token);
|
|
const response = await fetch("http://localhost:3000/api/users/me", {
|
|
headers: {
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
});
|
|
|
|
if (!response.ok) {
|
|
const errorText = await response.text();
|
|
throw new Error(`Failed to fetch user: ${errorText}`);
|
|
}
|
|
|
|
const userData = await response.json();
|
|
console.log("Fetched user data:", userData);
|
|
setUser(userData);
|
|
} catch (error) {
|
|
console.error("Error fetching user:", error);
|
|
logout();
|
|
}
|
|
};
|
|
|
|
fetchUser();
|
|
}, [token, user, setUser, logout]);
|
|
|
|
return user;
|
|
};
|