import api from "./api";
const validateId = async (email) => {
const response = await api.get("/users");
const existingId = response.data.map((user) => user.id);
if (existingId.includes(email)) {
throw new Error("이미 사용중인 아이디입니다.");
}
};
export const register = async (email, password, nickname) => {
await validateId(email);
const response = await api.post("/users", {
email,
password,
nickname,
});
return response.data;
};
export const login = async (email, password) => {
const response = await api.get("/users", {
email,
password,
});
const { token } = response.data;
localStorage.setItem("authToken", token);
return response.data;
};
export const logout = async () => {
localStorage.removeItem("authToken");
};
export const getUserProfile = async () => {
const token = localStorage.getItem("authToken");
if (!token) {
throw new Error("No token found");
}
const response = await api.get("/profile", {
headers: { Authorization: `Bearer ${token}` },
});
return response.data;
};
export const updateProfile = async (formData) => {
const token = localStorage.getItem("authToken");
if (!token) {
throw new Error("No token found");
}
const response = await api.put("/profile", formData, {
headers: { Authorization: `Bearer ${token}` },
});
return response.data;
};
import React from "react";
import { useParams } from "react-router-dom";
import useBearsStore from "../../zustand/bearsStore";
import { useEffect } from "react";
const Profile = () => {
const { id } = useParams();
const { getUserProfile, user, loading, error } = useBearsStore((state) => ({
getUserProfile: state.getUserProfile,
user: state.user,
loading: state.loading,
error: state.error,
}));
useEffect(() => {
getUserProfile();
}, [getUserProfile]);
return (
<div className="h-[85vh]">
<p className="mb-4 mt-4 w-[200px] bg-navy text-white mx-auto rounded">
Profile
</p>
{user ? (
<div>
<p>ID : {user.id}</p>
<p>NICKNAME : {user.nickname}</p>
</div>
) : (
<div>
<p>NO USER</p>
</div>
)}
</div>
);
};
export default Profile;