'use client' import type { SessionData } from '@/types/Auth' import { useEffect, useReducer, useState } from 'react' import { useRouter } from 'next/navigation' import { useLocalStorage } from 'usehooks-ts' import { useQuery } from '@tanstack/react-query' import { axiosInstance } from '@/libs/axios' import { useSessionStore } from '@/store/session' interface AccountState { loginId: string pwd: string } export default function Login() { const router = useRouter() //비밀번호 보이기 숨기기 const [pwShow, setPwShow] = useState(false) //ID 저장 체크박스 const [idSave, setIdSave] = useState(false) //Q.PARTNERS 체크박스 const [isPartners, setIsPartners] = useState(false) //로그인 상태 const [isLogin, setIsLogin] = useState(false) const { session, setSession } = useSessionStore() const [value, setValue, removeValue] = useLocalStorage<{ indivisualData: string }>('hanasysIndivisualState', { indivisualData: '' }) const reducer = (state: AccountState, newState: Partial) => ({ ...state, ...newState }) const [account, setAccount] = useReducer(reducer, { loginId: '', pwd: '', }) interface LoginData { code: number message: string | null result: SessionData } const { data: loginData, isPending, error, } = useQuery({ queryKey: ['login', 'account'], queryFn: async () => { const { data } = await axiosInstance('').post(`/api/auth`, { loginId: account.loginId, pwd: account.pwd, }) return data }, enabled: isLogin, staleTime: 0, retry: false, }) useEffect(() => { setIsLogin(false) if (loginData?.code === 200) { // 유저 정보 저장 setValue({ indivisualData: account.pwd, }) // 세션 정보 저장 setSession({ ...session, ...loginData?.result, }) router.push('/') } }, [loginData]) return ( <>
setAccount({ loginId: e.target.value })} />
setAccount({ pwd: e.target.value })} />
setIdSave(!idSave)} />
Q.PARTNERS
) }