Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion src/pages/signin/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { useRouter } from 'next/router';
import { FormProvider, useForm, type SubmitHandler } from 'react-hook-form';
import z from 'zod';

import { getUser } from '@/api/user';
import KakaoIcon from '@/assets/icons/kakao.svg';
import AuthLayout from '@/components/auth/AuthLayout';
import AuthLogo from '@/components/auth/AuthLogo';
Expand All @@ -17,7 +18,9 @@ import { Button } from '@/components/ui/button';
import useErrorModal from '@/hooks/useErrorModal';
import useTokenCheckRedirect from '@/hooks/useTokenCheckRedirect';
import { emailSchema, passwordSchema } from '@/lib/form/schemas';
import { useUserStore } from '@/stores/userStore';
import { LoginRequest, LoginResponse } from '@/types/AuthTypes';
import { GetUserResponse } from '@/types/UserTypes';

import { loginUser } from '../../api/auth';

Expand All @@ -29,6 +32,7 @@ const LoginSchema = z.object({
type LoginData = z.infer<typeof LoginSchema>;

const SignIn = () => {
const { setUser } = useUserStore();
const { open, setOpen, handleError, errorMessage } = useErrorModal();
const { isLoading } = useTokenCheckRedirect();
const router = useRouter();
Expand All @@ -48,7 +52,7 @@ const SignIn = () => {
const loginMutation = useMutation<LoginResponse, AxiosError, LoginRequest>({
mutationFn: loginUser,
onSuccess: () => {
router.push('/');
userMutation.mutate();
},
onError: (error) => {
if (error.response?.status === 400) {
Expand All @@ -61,6 +65,18 @@ const SignIn = () => {
},
});

const userMutation = useMutation<GetUserResponse, AxiosError>({
mutationFn: getUser,
onSuccess: (data) => {
setUser(data);
router.push('/');
},
onError: (error) => {
// API 에러를 모달로 출력
handleError(error.response?.data as Error);
},
});

const handleOnClickLogin: SubmitHandler<LoginData> = (formData) => {
loginMutation.mutate(formData);
};
Expand Down
16 changes: 16 additions & 0 deletions src/pages/signup/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { FormProvider, useForm, type SubmitHandler } from 'react-hook-form';
import z from 'zod';

import { createUser, loginUser } from '@/api/auth';
import { getUser } from '@/api/user';
import AuthLayout from '@/components/auth/AuthLayout';
import AuthLogo from '@/components/auth/AuthLogo';
import FormInput from '@/components/common/FormInput';
Expand All @@ -22,7 +23,9 @@ import {
passwordSchema,
passwordConfirmationSchema,
} from '@/lib/form/schemas';
import { useUserStore } from '@/stores/userStore';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

죄송해요 제가 예시를 잘못 적어놨네요 ㅋㅋ ㅠㅠ
hook 파일에 useUser라는 훅 파일이 있습니다 내부 한번 확인해보시고 아래처럼 수정해주시면 감사하겠습니다!

import { getUser } from '@/api/user';
import { useUser } from '@/hooks/useUser';

export const useLoginSuccess = () => {
  const { setUser } = useUser();

  const handleLoginSuccess = async () => {
    try {
      const user = await getUser();
      setUser(user);
    } catch (e) {
      console.warn('유저 정보 불러오기 실패', e);
    }
  };

  return { handleLoginSuccess };
};

import { LoginRequest, LoginResponse, SignupRequest, SignupResponse } from '@/types/AuthTypes';
import { GetUserResponse } from '@/types/UserTypes';

const SignupSchema = z
.object({
Expand All @@ -39,6 +42,7 @@ const SignupSchema = z
type SignupData = z.infer<typeof SignupSchema>;

const Signup = () => {
const { setUser } = useUserStore();
const { open, setOpen, handleError, errorMessage } = useErrorModal();
const { isLoading } = useTokenCheckRedirect();
const router = useRouter();
Expand Down Expand Up @@ -77,6 +81,18 @@ const Signup = () => {
const loginMutation = useMutation<LoginResponse, AxiosError, LoginRequest>({
mutationFn: loginUser,
onSuccess: () => {
userMutation.mutate();
},
onError: (error) => {
// API 에러를 모달로 출력
handleError(error.response?.data as Error);
},
});

const userMutation = useMutation<GetUserResponse, AxiosError>({
mutationFn: getUser,
onSuccess: (data) => {
setUser(data);
router.push('/');
},
onError: (error) => {
Expand Down