From 1fb4802b78e904d015b6f52a3c06ceb8ae436e87 Mon Sep 17 00:00:00 2001 From: wecaners Date: Fri, 12 Jan 2024 00:00:59 +0900 Subject: [PATCH 1/7] =?UTF-8?q?refactor:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20r?= =?UTF-8?q?eact=20query=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/services/config.ts | 35 +++---------------- components/signinForm/SigninForm.tsx | 37 +++++++++++++------- components/signupForm/SignupForm.tsx | 30 +++++++++------- package-lock.json | 51 ++++++++++++++++++++++++++++ package.json | 2 ++ pages/_app.tsx | 37 ++++++++++++++------ 6 files changed, 127 insertions(+), 65 deletions(-) diff --git a/api/services/config.ts b/api/services/config.ts index c2b74f664..0ddb3788c 100644 --- a/api/services/config.ts +++ b/api/services/config.ts @@ -1,46 +1,19 @@ -import { - getRefreshToken, - setAccessToken, - setRefreshToken, -} from "@/utils/localStorage"; import axios from "axios"; -const BASE_URL = "https://bootcamp-api.codeit.kr"; +const BASE_URL = "https://bootcamp-api.codeit.kr/api/linkbrary/v1"; const SAMPLE_USER_ENDPOINT = "/api/users/1"; const SAMPLE_FOLDER_ENDPOINT = "/api/sample/folder"; const USERS_ENDPOINT = "/api/users"; -const SIGNIN_ENDPOINT = "/api/sign-in"; -const SIGNUP_ENDPOINT = "/api/sign-up"; +const SIGNIN_ENDPOINT = "/auth/sign-in"; +const SIGNUP_ENDPOINT = "/auth/sign-up"; const FOLDER_ENDPOINT = `/api/folders`; const LINKS_ENDPOINT = `/api/links`; const instance = axios.create({ - baseURL: "https://bootcamp-api.codeit.kr", + baseURL: "https://bootcamp-api.codeit.kr/api/linkbrary/v1", timeout: 3000, }); -instance.interceptors.response.use( - (res) => res, - async (error) => { - const originalRequest = error.config; - let res; - if (error.response?.status === 401 && !originalRequest._retry) { - res = await instance.post( - "/api/refresh-token", - { - refresh_token: getRefreshToken(), - }, - { _retry: true } as any - ); - setAccessToken(res?.data.data.accessToken); - setRefreshToken(res?.data.data.refreshToken); - originalRequest._retry = true; - return instance(originalRequest); - } - return Promise.reject(error); - } -); - export { BASE_URL, SAMPLE_USER_ENDPOINT, diff --git a/components/signinForm/SigninForm.tsx b/components/signinForm/SigninForm.tsx index 607c6b6b5..757ab09eb 100644 --- a/components/signinForm/SigninForm.tsx +++ b/components/signinForm/SigninForm.tsx @@ -22,6 +22,7 @@ import { setRefreshToken, } from "@/utils/localStorage"; import useUserStore from "@/hooks/useStore"; +import { QueryClient, useMutation } from "@tanstack/react-query"; export interface FormValues { email: string; @@ -36,8 +37,10 @@ export function SigninForm() { formState: { errors }, handleSubmit, setError, + watch, } = useForm({ mode: "onBlur" }); + const queryClient = new QueryClient(); const { setUser } = useUserStore(); const getUser = async () => { @@ -54,19 +57,29 @@ export function SigninForm() { } }; + const postSignin = async () => { + const res = await instance.post(`/auth/sign-in`, { + email: watch("email"), + password: watch("password"), + }); + const accessToken = res?.data.accessToken; + const refreshToken = res?.data.refreshToken; + setAccessToken(accessToken); + setRefreshToken(refreshToken); + if (res.status === 200) { + router.push("/folder"); + } + }; + + const signinMutation = useMutation({ + mutationFn: postSignin, + }); + const onSubmit = handleSubmit(async (data: FormValues) => { - let res; try { - res = await instance.post(`${SIGNIN_ENDPOINT}`, { - email: data.email, - password: data.password, - }); - const accessToken = res?.data.data.accessToken; - const refreshToken = res?.data.data.refreshToken; - setAccessToken(accessToken); - setRefreshToken(refreshToken); - await getUser(); - res?.status === 200 && router.push("/folder"); + signinMutation.mutate(); + console.log("mutation test"); + // await getUser(); } catch (error) { if (axios.isAxiosError(error) && error.response?.status === 400) { setError("email", { message: CHECK_EMAIL_TEXT }); @@ -78,7 +91,7 @@ export function SigninForm() { return ( <> -
+