From 8773d3b18ac40cd2b2ff5133d55aa8359d235fff Mon Sep 17 00:00:00 2001 From: mandelina Date: Sun, 26 Oct 2025 14:06:42 +0900 Subject: [PATCH 1/5] =?UTF-8?q?Fix=20:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=EB=B3=84=20=EC=BF=BC=EB=A6=AC=ED=9B=85=20ena?= =?UTF-8?q?bled=20=EC=86=8D=EC=84=B1=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=EB=B3=84=20=EB=B0=A9=EC=96=B4=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/myinfo/apiHooks/useGetNicknameRandom.ts | 5 +++ .../myinfo/components/NicknameResultModal.tsx | 16 +++++++- pages/myinfo/hooks/useNicknameModals.tsx | 38 +++++++++++++------ 3 files changed, 46 insertions(+), 13 deletions(-) diff --git a/pages/myinfo/apiHooks/useGetNicknameRandom.ts b/pages/myinfo/apiHooks/useGetNicknameRandom.ts index 2916afe2..0332a45d 100644 --- a/pages/myinfo/apiHooks/useGetNicknameRandom.ts +++ b/pages/myinfo/apiHooks/useGetNicknameRandom.ts @@ -2,6 +2,8 @@ import axios from 'axios'; import { useQuery } from '@tanstack/react-query'; +import { useLoginStatusStore } from '@stores/loginStore'; + import { MYPAGE_NICKNAME_RANDOM } from '@/constants/apiConstants'; export const getNicknameRandom = async () => { @@ -12,9 +14,12 @@ export const getNicknameRandom = async () => { }; export const useGetNicknameRandom = () => { + const { loginStatus } = useLoginStatusStore(); + return useQuery({ queryKey: ['getNicknameRandom'], queryFn: getNicknameRandom, select: (data) => data.data, + enabled: loginStatus === 'login', }); }; diff --git a/pages/myinfo/components/NicknameResultModal.tsx b/pages/myinfo/components/NicknameResultModal.tsx index b9481c70..2a1f6eb1 100644 --- a/pages/myinfo/components/NicknameResultModal.tsx +++ b/pages/myinfo/components/NicknameResultModal.tsx @@ -2,6 +2,7 @@ import React, { useEffect } from 'react'; import { useModalStore } from '@stores/modalStore'; import { useNicknameStore } from '@stores/nicknameStore'; +import { useLoginStatusStore } from '@stores/loginStore'; import { useMediaQueryContext } from '@/contexts/MediaQueryContext'; @@ -17,19 +18,28 @@ export default function NicknameResultModal({ const { isMobile } = useMediaQueryContext(); const { data, isFetching, refetch } = useGetNicknameRandom(); + const { loginStatus } = useLoginStatusStore(); const { setDisabled } = useModalStore(); const { setNickname } = useNicknameStore(); useEffect(() => { + if (loginStatus !== 'login') return; + refetch(); - }, []); + }, [loginStatus, refetch]); useEffect(() => { if (isFetching) { setDisabled?.(true); return; } + + if (!data) { + setDisabled?.(false); + return; + } + setNickname(data); setDisabled?.(false); }, [data, isFetching, setDisabled, setNickname]); @@ -63,11 +73,13 @@ export default function NicknameResultModal({ const nicknameRegex = /{nickname}/; const nicknameTitleArray = title.split(nicknameRegex); + const displayNickname = newNickname ?? data ?? ''; + return ( <>

{nicknameTitleArray[0]} - {newNickname ?? data} + {displayNickname} {nicknameTitleArray[1]}

diff --git a/pages/myinfo/hooks/useNicknameModals.tsx b/pages/myinfo/hooks/useNicknameModals.tsx index 224a355f..2ee43c0c 100644 --- a/pages/myinfo/hooks/useNicknameModals.tsx +++ b/pages/myinfo/hooks/useNicknameModals.tsx @@ -2,6 +2,7 @@ import { useRouter } from 'next/router'; import { getRandomIndex } from '@utils/randomNumber'; +import { useLoginStatusStore } from '@stores/loginStore'; import { useModalStore } from '@stores/modalStore'; import { useNicknameStore } from '@stores/nicknameStore'; import { useToastVisibleStore } from '@stores/toastVisibleStore'; @@ -31,6 +32,7 @@ export const useNicknameModals = () => { const { pushModal, popModal } = useModalStore(); const { setToastVisible } = useToastVisibleStore(); const { setNickname } = useNicknameStore(); + const { loginStatus } = useLoginStatusStore(); const { mutate: patchNicknameMutate } = usePatchNickname(); const { refetch: refetchChangeable } = useGetNicknameChangeable(); @@ -54,10 +56,15 @@ export const useNicknameModals = () => { contents: , submitFunction: () => pushCompleteModal(), cancelFunction: async () => { - const data = await refetch(); - setNickname(data.data); + if (loginStatus !== 'login') return; - pushNicknameResult20Modal(nextCount, data.data); + const refetchResult = await refetch(); + const nextNickname = refetchResult.data; + if (!nextNickname) return; + + setNickname(nextNickname); + + pushNicknameResult20Modal(nextCount, nextNickname); }, }); }; @@ -77,12 +84,17 @@ export const useNicknameModals = () => { contents: , submitFunction: () => pushCompleteModal(), cancelFunction: async () => { - const data = await refetch(); - setNickname(data.data); + if (loginStatus !== 'login') return; + + const refetchResult = await refetch(); + const nextNickname = refetchResult.data; + if (!nextNickname) return; + + setNickname(nextNickname); count >= NICKNAME_MODAL_SECOND_OVER_COUNT - 1 - ? pushNicknameResult20Modal(nextCount, data.data) - : pushNicknameResult10Modal(nextCount, data.data); + ? pushNicknameResult20Modal(nextCount, nextNickname) + : pushNicknameResult10Modal(nextCount, nextNickname); }, }); }; @@ -102,12 +114,16 @@ export const useNicknameModals = () => { contents: , submitFunction: () => pushCompleteModal(), cancelFunction: async () => { - const { data } = await refetch(); - setNickname(data); + if (loginStatus !== 'login') return; + + const { data: nextNickname } = await refetch(); + if (!nextNickname) return; + + setNickname(nextNickname); count >= NICKNAME_MODAL_FIRST_OVER_COUNT - 1 - ? pushNicknameResult10Modal(nextCount, data) - : pushNicknameResultModal(nextCount, data); + ? pushNicknameResult10Modal(nextCount, nextNickname) + : pushNicknameResultModal(nextCount, nextNickname); }, }); }; From 7dcb734c7973df0d146ac42cc3fdebaae32cc270 Mon Sep 17 00:00:00 2001 From: "minyoung.kim" Date: Sun, 26 Oct 2025 14:48:01 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20return=EB=AC=B8=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../myinfo/components/NicknameResultModal.tsx | 17 +++++++++----- pages/myinfo/hooks/useNicknameModals.tsx | 22 ++++++++++++++----- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/pages/myinfo/components/NicknameResultModal.tsx b/pages/myinfo/components/NicknameResultModal.tsx index 2a1f6eb1..cfc19787 100644 --- a/pages/myinfo/components/NicknameResultModal.tsx +++ b/pages/myinfo/components/NicknameResultModal.tsx @@ -1,9 +1,11 @@ import React, { useEffect } from 'react'; +import { useLoginStatusStore } from '@stores/loginStore'; import { useModalStore } from '@stores/modalStore'; import { useNicknameStore } from '@stores/nicknameStore'; -import { useLoginStatusStore } from '@stores/loginStore'; +import { useToastVisibleStore } from '@stores/toastVisibleStore'; +import { PAGE_ERROR_MESSAGE2 } from '@/constants/errorMessageConstants'; import { useMediaQueryContext } from '@/contexts/MediaQueryContext'; import { useGetNicknameRandom } from '../apiHooks/useGetNicknameRandom'; @@ -22,22 +24,27 @@ export default function NicknameResultModal({ const { setDisabled } = useModalStore(); const { setNickname } = useNicknameStore(); + const { popModal } = useModalStore(); + const { setToastVisible } = useToastVisibleStore(); useEffect(() => { - if (loginStatus !== 'login') return; + if (loginStatus !== 'login') { + popModal(); + return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); + } refetch(); - }, [loginStatus, refetch]); + }, [loginStatus, popModal, refetch, setToastVisible]); useEffect(() => { if (isFetching) { setDisabled?.(true); - return; + return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); } if (!data) { setDisabled?.(false); - return; + return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); } setNickname(data); diff --git a/pages/myinfo/hooks/useNicknameModals.tsx b/pages/myinfo/hooks/useNicknameModals.tsx index 2ee43c0c..b2d4b172 100644 --- a/pages/myinfo/hooks/useNicknameModals.tsx +++ b/pages/myinfo/hooks/useNicknameModals.tsx @@ -21,6 +21,7 @@ import { NICKNAME_MODAL_FIRST_OVER_COUNT, NICKNAME_MODAL_SECOND_OVER_COUNT, } from '@/constants/UserInfoConstants'; +import { PAGE_ERROR_MESSAGE2 } from '@/constants/errorMessageConstants'; import { useGetNicknameChangeable } from '../apiHooks/useGetNicknameChangeable'; import { useGetNicknameRandom } from '../apiHooks/useGetNicknameRandom'; @@ -56,11 +57,14 @@ export const useNicknameModals = () => { contents: , submitFunction: () => pushCompleteModal(), cancelFunction: async () => { - if (loginStatus !== 'login') return; + if (loginStatus !== 'login') { + popModal(); + return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); + } const refetchResult = await refetch(); const nextNickname = refetchResult.data; - if (!nextNickname) return; + if (!nextNickname) return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); setNickname(nextNickname); @@ -84,11 +88,14 @@ export const useNicknameModals = () => { contents: , submitFunction: () => pushCompleteModal(), cancelFunction: async () => { - if (loginStatus !== 'login') return; + if (loginStatus !== 'login') { + popModal(); + return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); + } const refetchResult = await refetch(); const nextNickname = refetchResult.data; - if (!nextNickname) return; + if (!nextNickname) return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); setNickname(nextNickname); @@ -114,10 +121,13 @@ export const useNicknameModals = () => { contents: , submitFunction: () => pushCompleteModal(), cancelFunction: async () => { - if (loginStatus !== 'login') return; + if (loginStatus !== 'login') { + popModal(); + return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); + } const { data: nextNickname } = await refetch(); - if (!nextNickname) return; + if (!nextNickname) return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); setNickname(nextNickname); From f01b0299d0e56d06bc5f2d55b2f3ed969d9c3fca Mon Sep 17 00:00:00 2001 From: "minyoung.kim" Date: Sun, 26 Oct 2025 15:05:54 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20isFetching=20return=20=EB=AC=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/myinfo/components/NicknameResultModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/myinfo/components/NicknameResultModal.tsx b/pages/myinfo/components/NicknameResultModal.tsx index cfc19787..2961f520 100644 --- a/pages/myinfo/components/NicknameResultModal.tsx +++ b/pages/myinfo/components/NicknameResultModal.tsx @@ -39,7 +39,7 @@ export default function NicknameResultModal({ useEffect(() => { if (isFetching) { setDisabled?.(true); - return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); + return; } if (!data) { From 0ae7c5d2f95c52640bba564d64dc03a52ad1c260 Mon Sep 17 00:00:00 2001 From: "minyoung.kim" Date: Sun, 26 Oct 2025 15:09:32 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20NicknameResultModal=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/myinfo/components/NicknameResultModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/myinfo/components/NicknameResultModal.tsx b/pages/myinfo/components/NicknameResultModal.tsx index 2961f520..6b4763e0 100644 --- a/pages/myinfo/components/NicknameResultModal.tsx +++ b/pages/myinfo/components/NicknameResultModal.tsx @@ -34,7 +34,7 @@ export default function NicknameResultModal({ } refetch(); - }, [loginStatus, popModal, refetch, setToastVisible]); + }, []); useEffect(() => { if (isFetching) { From 62dadda99e78d00da543b8c2ef9618002ef4b780 Mon Sep 17 00:00:00 2001 From: mandelina Date: Sun, 26 Oct 2025 16:18:23 +0900 Subject: [PATCH 5/5] =?UTF-8?q?Fix=20:=20=EB=9E=9C=EB=8D=A4=20=EB=8B=89?= =?UTF-8?q?=EB=84=A4=EC=9E=84=20api=20=EC=97=AC=EB=9F=AC=EB=B2=88=20?= =?UTF-8?q?=ED=98=B8=EC=B6=9C=ED=95=98=EB=8A=94=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/myinfo/apiHooks/useGetNicknameRandom.ts | 2 +- .../myinfo/components/NicknameResultModal.tsx | 20 ++----------------- pages/myinfo/hooks/useNicknameModals.tsx | 5 ++++- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/pages/myinfo/apiHooks/useGetNicknameRandom.ts b/pages/myinfo/apiHooks/useGetNicknameRandom.ts index 0332a45d..17c0a255 100644 --- a/pages/myinfo/apiHooks/useGetNicknameRandom.ts +++ b/pages/myinfo/apiHooks/useGetNicknameRandom.ts @@ -20,6 +20,6 @@ export const useGetNicknameRandom = () => { queryKey: ['getNicknameRandom'], queryFn: getNicknameRandom, select: (data) => data.data, - enabled: loginStatus === 'login', + enabled: false, }); }; diff --git a/pages/myinfo/components/NicknameResultModal.tsx b/pages/myinfo/components/NicknameResultModal.tsx index 6b4763e0..0ac68e96 100644 --- a/pages/myinfo/components/NicknameResultModal.tsx +++ b/pages/myinfo/components/NicknameResultModal.tsx @@ -1,11 +1,8 @@ import React, { useEffect } from 'react'; -import { useLoginStatusStore } from '@stores/loginStore'; import { useModalStore } from '@stores/modalStore'; import { useNicknameStore } from '@stores/nicknameStore'; -import { useToastVisibleStore } from '@stores/toastVisibleStore'; -import { PAGE_ERROR_MESSAGE2 } from '@/constants/errorMessageConstants'; import { useMediaQueryContext } from '@/contexts/MediaQueryContext'; import { useGetNicknameRandom } from '../apiHooks/useGetNicknameRandom'; @@ -19,22 +16,10 @@ export default function NicknameResultModal({ }) { const { isMobile } = useMediaQueryContext(); - const { data, isFetching, refetch } = useGetNicknameRandom(); - const { loginStatus } = useLoginStatusStore(); + const { data, isFetching } = useGetNicknameRandom(); const { setDisabled } = useModalStore(); const { setNickname } = useNicknameStore(); - const { popModal } = useModalStore(); - const { setToastVisible } = useToastVisibleStore(); - - useEffect(() => { - if (loginStatus !== 'login') { - popModal(); - return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); - } - - refetch(); - }, []); useEffect(() => { if (isFetching) { @@ -44,9 +29,8 @@ export default function NicknameResultModal({ if (!data) { setDisabled?.(false); - return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' }); + return; } - setNickname(data); setDisabled?.(false); }, [data, isFetching, setDisabled, setNickname]); diff --git a/pages/myinfo/hooks/useNicknameModals.tsx b/pages/myinfo/hooks/useNicknameModals.tsx index b2d4b172..72406f03 100644 --- a/pages/myinfo/hooks/useNicknameModals.tsx +++ b/pages/myinfo/hooks/useNicknameModals.tsx @@ -164,7 +164,10 @@ export const useNicknameModals = () => { pushModal({ ...MYINFO_NICKNAME_EDIT_MODAL, - submitFunction: () => pushNicknameResultModal(1), + submitFunction: async () => { + pushNicknameResultModal(1); + await refetch(); + }, cancelFunction: () => popModal(), }); };