From 05b75ec02e3e544deafd169cb16ea489664ead68 Mon Sep 17 00:00:00 2001 From: nalsae <101828759+nalsae@users.noreply.github.com> Date: Tue, 17 Oct 2023 16:37:14 +0900 Subject: [PATCH] =?UTF-8?q?Revert=20"[FE]=20=E2=99=BB=EF=B8=8F=20Signin,?= =?UTF-8?q?=20Signup,=20Profile,=20History=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EB=B0=8F=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/api/axios.ts | 85 --------- client/src/app/history/[id]/page.tsx | 30 ++-- client/src/app/page.tsx | 4 +- client/src/app/post/[id]/page.tsx | 14 +- client/src/app/profile/page.tsx | 43 ++--- client/src/app/signin/page.tsx | 24 +-- client/src/app/signup/page.tsx | 16 +- client/src/components/board/RankBoard.tsx | 6 +- client/src/components/common/Header.tsx | 11 +- client/src/components/common/HeaderNav.tsx | 11 +- client/src/components/common/SeoHead.tsx | 6 +- client/src/components/common/index.ts | 71 -------- .../src/components/history/ConfirmModal.tsx | 25 ++- client/src/components/history/Dropdown.tsx | 29 +-- .../src/components/history/FailureModal.tsx | 21 +-- .../src/components/history/HistoryBoard.tsx | 46 +++-- client/src/components/history/HistoryBox.tsx | 33 ++-- .../src/components/history/HistoryComment.tsx | 55 +++--- .../src/components/history/HistoryLikes.tsx | 34 ++-- .../components/history/HistoryPostCard.tsx | 26 ++- client/src/components/history/ResignModal.tsx | 101 ++++++----- .../src/components/history/SuccessedModal.tsx | 18 +- client/src/components/history/UserButton.tsx | 10 +- client/src/components/history/UserInfo.tsx | 68 +++---- client/src/components/history/index.ts | 27 --- ...ofileModal.tsx => ChangeNicknameModal.tsx} | 31 ++-- .../profile/ChangePasswordModal.tsx | 34 ++++ client/src/components/profile/ImageForm.tsx | 64 +++++-- .../src/components/profile/NicknameForm.tsx | 31 +++- .../src/components/profile/PasswordForm.tsx | 33 +++- client/src/components/profile/ProfileBox.tsx | 20 +-- client/src/components/profile/index.ts | 13 -- client/src/components/sign/SignInput.tsx | 54 ++++-- client/src/components/sign/SignLink.tsx | 5 +- client/src/components/sign/SignModalInput.tsx | 63 +++++-- .../src/components/sign/SignPasswordInput.tsx | 47 +++-- client/src/components/sign/index.ts | 6 - client/src/components/signin/FailureModal.tsx | 14 +- .../components/signin/FindPasswordModal.tsx | 102 ++++++----- client/src/components/signin/LoginButton.tsx | 51 ++++-- client/src/components/signin/SigninForm.tsx | 73 ++++++-- client/src/components/signin/SigninIntro.tsx | 13 +- .../src/components/signin/SuccessedModal.tsx | 15 +- client/src/components/signin/index.ts | 15 -- .../src/components/signup/AuthEmailModal.tsx | 88 +++++---- client/src/components/signup/FailureModal.tsx | 15 +- client/src/components/signup/SignButton.tsx | 16 +- client/src/components/signup/SignupForm.tsx | 90 ++++++---- client/src/components/signup/SignupIntro.tsx | 13 +- client/src/components/signup/index.ts | 7 - client/src/constants/contents.ts | 17 +- client/src/hooks/useAuthEmail.ts | 19 -- client/src/hooks/useChagnePassword.ts | 48 ----- client/src/hooks/useChangeImage.ts | 73 -------- client/src/hooks/useChangeNickname.ts | 40 ----- client/src/hooks/useDeleteUser.ts | 20 --- client/src/hooks/useFindPassword.ts | 41 ----- client/src/hooks/useGetMetaData.ts | 167 +++++++++--------- client/src/hooks/useGoogleLogin.ts | 47 ----- client/src/hooks/useHistoryBoard.ts | 29 --- client/src/hooks/useHistoryComment.ts | 28 --- client/src/hooks/useHistoryLikes.ts | 30 ---- client/src/hooks/useResignCheck.ts | 26 --- client/src/hooks/useSignIn.ts | 63 ------- client/src/hooks/useSignup.ts | 36 ---- client/src/hooks/useUserInfo.ts | 22 --- client/src/stores/modalStore.ts | 57 ------ client/src/stores/signStore.ts | 8 +- client/src/stores/userStore.ts | 25 ++- client/src/types/common.d.ts | 13 +- client/src/utils/getPasswordByType.ts | 34 ---- client/src/utils/getRegisterByType.ts | 61 ------- 72 files changed, 1007 insertions(+), 1624 deletions(-) delete mode 100644 client/src/api/axios.ts delete mode 100644 client/src/components/common/index.ts delete mode 100644 client/src/components/history/index.ts rename client/src/components/profile/{ChangeProfileModal.tsx => ChangeNicknameModal.tsx} (53%) create mode 100644 client/src/components/profile/ChangePasswordModal.tsx delete mode 100644 client/src/components/profile/index.ts delete mode 100644 client/src/components/sign/index.ts delete mode 100644 client/src/components/signin/index.ts delete mode 100644 client/src/components/signup/index.ts delete mode 100644 client/src/hooks/useAuthEmail.ts delete mode 100644 client/src/hooks/useChagnePassword.ts delete mode 100644 client/src/hooks/useChangeImage.ts delete mode 100644 client/src/hooks/useChangeNickname.ts delete mode 100644 client/src/hooks/useDeleteUser.ts delete mode 100644 client/src/hooks/useFindPassword.ts delete mode 100644 client/src/hooks/useGoogleLogin.ts delete mode 100644 client/src/hooks/useHistoryBoard.ts delete mode 100644 client/src/hooks/useHistoryComment.ts delete mode 100644 client/src/hooks/useHistoryLikes.ts delete mode 100644 client/src/hooks/useResignCheck.ts delete mode 100644 client/src/hooks/useSignIn.ts delete mode 100644 client/src/hooks/useSignup.ts delete mode 100644 client/src/hooks/useUserInfo.ts delete mode 100644 client/src/stores/modalStore.ts delete mode 100644 client/src/utils/getPasswordByType.ts delete mode 100644 client/src/utils/getRegisterByType.ts diff --git a/client/src/api/axios.ts b/client/src/api/axios.ts deleted file mode 100644 index a42fe30e..00000000 --- a/client/src/api/axios.ts +++ /dev/null @@ -1,85 +0,0 @@ -import axios, { - AxiosRequestConfig, - AxiosResponse, - InternalAxiosRequestConfig, -} from 'axios'; - -import useUserStore from '@/stores/userStore'; - -const { setAccessToken } = useUserStore(); - -const accessToken = - typeof window !== 'undefined' - ? JSON.parse(localStorage.getItem('user-key') as string).state.accessToken - : null; - -const refreshToken = - typeof window !== 'undefined' - ? JSON.parse(localStorage.getItem('user-key') as string).state.refreshToken - : null; - -const instance = axios.create({ - baseURL: process.env.NEXT_PUBLIC_API_URL, - headers: { - Authorization: accessToken, - Refresh: refreshToken, - }, - withCredentials: true, -}); - -// atob을 활용한 JWT 디코딩 -const parseJWT = (token: string | null) => { - if (token) return JSON.parse(atob(token.split('.')[1])); -}; - -const authVerify = () => { - const decodedAccess = parseJWT(accessToken); - const decodedRefresh = parseJWT(refreshToken); - - if (decodedAccess.exp * 1000 < Date.now()) { - return 'Access Token Expired'; - } - - if (decodedRefresh.exp * 1000 < Date.now()) { - return 'Refresh Token Expired'; - } - - return true; -}; - -// 응답 받기 전, 새로운 accessToke이 존재하면 바꿔주기 -export const onFulfiled = async (response: AxiosResponse) => { - if (authVerify() === 'Access Token Expired') { - const { authorization: newAccessToken } = response.headers; - - setAccessToken(newAccessToken); - - // 타입 호환을 위해 새로운 객체를 만들어서 업데이트하기 - response.config.headers = Object.assign({}, response.config.headers, { - authorization: `${newAccessToken}`, - }); - - return await axios(response.config); - } - - return response; -}; - -instance.interceptors.request.use( - //! AxiosRequestConfig 대신 InternalAxiosRequestConfig를 사용하라고 하는데... - // InternalAxiosRequestConfig를 개발자가 직접 건드는게 좋은건 아니라고 하던데 흠... - async (config: InternalAxiosRequestConfig) => { - config.headers = config.headers ?? {}; - - if (accessToken) { - config.headers.Authorization = `${accessToken}`; - } - - return config; - }, - (error) => Promise.reject(error), -); - -instance.interceptors.response.use(onFulfiled, (error) => { - return Promise.reject(error); -}); diff --git a/client/src/app/history/[id]/page.tsx b/client/src/app/history/[id]/page.tsx index 21c5cdaa..6e864f64 100644 --- a/client/src/app/history/[id]/page.tsx +++ b/client/src/app/history/[id]/page.tsx @@ -2,16 +2,14 @@ import { motion } from 'framer-motion'; -import useModalStore, { ModalType } from '@/stores/modalStore'; +import useSignModalStore from '@/stores/signModalStore'; -import { - ResignModal, - ConfirmModal, - SuccessedModal, - FailureModal, - HistoryBox, -} from '@/components/history'; -import { Footer } from '@/components/common'; +import ResignModal from '@/components/history/ResignModal'; +import ConfirmModal from '@/components/history/ConfirmModal'; +import SuccessedModal from '@/components/history/SuccessedModal'; +import FailureModal from '@/components/history/FailureModal'; +import HistoryBox from '@/components/history/HistoryBox'; +import Footer from '@/components/common/Footer'; import { MOUNT_ANIMATION_VALUES } from '@/constants/values'; @@ -20,14 +18,7 @@ interface HistoryProps { } export default function History({ params }: HistoryProps) { - const { isOpen, type } = useModalStore(); - - const renderModal = (type: ModalType) => { - if (type === 'ResignModal') return ; - if (type === 'ConfirmModal') return ; - if (type === 'SuccessedModal') return ; - if (type === 'FailureModal') return ; - }; + const currentState = useSignModalStore((state) => state.currentState); return ( <> @@ -38,7 +29,10 @@ export default function History({ params }: HistoryProps) { className="flex flex-col justify-center items-center h-auto min-h-full pb-[343px] mx-4"> - {isOpen && renderModal(type)} + {currentState === 'ResignModal' && } + {currentState === 'ConfirmModal' && } + {currentState === 'FailureModal' && } + {currentState === 'SuccessedModal' && }