nestjs_boilerpalte/client/app/hooks/useUser.ts
2024-12-13 11:00:04 +01:00

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;
};