Skip to content

Commit afac1ac

Browse files
authored
Merge pull request #300 from dreamyPatisiel/dev
[deploy] random API 로직 개선
2 parents 7f326ea + 54666f5 commit afac1ac

3 files changed

Lines changed: 55 additions & 18 deletions

File tree

pages/myinfo/apiHooks/useGetNicknameRandom.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import axios from 'axios';
22

33
import { useQuery } from '@tanstack/react-query';
44

5+
import { useLoginStatusStore } from '@stores/loginStore';
6+
57
import { MYPAGE_NICKNAME_RANDOM } from '@/constants/apiConstants';
68

79
export const getNicknameRandom = async () => {
@@ -12,9 +14,12 @@ export const getNicknameRandom = async () => {
1214
};
1315

1416
export const useGetNicknameRandom = () => {
17+
const { loginStatus } = useLoginStatusStore();
18+
1519
return useQuery({
1620
queryKey: ['getNicknameRandom'],
1721
queryFn: getNicknameRandom,
1822
select: (data) => data.data,
23+
enabled: false,
1924
});
2025
};

pages/myinfo/components/NicknameResultModal.tsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,21 @@ export default function NicknameResultModal({
1616
}) {
1717
const { isMobile } = useMediaQueryContext();
1818

19-
const { data, isFetching, refetch } = useGetNicknameRandom();
19+
const { data, isFetching } = useGetNicknameRandom();
2020

2121
const { setDisabled } = useModalStore();
2222
const { setNickname } = useNicknameStore();
2323

24-
useEffect(() => {
25-
refetch();
26-
}, []);
27-
2824
useEffect(() => {
2925
if (isFetching) {
3026
setDisabled?.(true);
3127
return;
3228
}
29+
30+
if (!data) {
31+
setDisabled?.(false);
32+
return;
33+
}
3334
setNickname(data);
3435
setDisabled?.(false);
3536
}, [data, isFetching, setDisabled, setNickname]);
@@ -63,11 +64,13 @@ export default function NicknameResultModal({
6364
const nicknameRegex = /{nickname}/;
6465
const nicknameTitleArray = title.split(nicknameRegex);
6566

67+
const displayNickname = newNickname ?? data ?? '';
68+
6669
return (
6770
<>
6871
<h3 className={`font-bold text-white ${isMobile ? 'st2' : 'st1'}`}>
6972
{nicknameTitleArray[0]}
70-
<span className='text-secondary300'>{newNickname ?? data}</span>
73+
<span className='text-secondary300'>{displayNickname}</span>
7174
{nicknameTitleArray[1]}
7275
</h3>
7376
<p className={`text-gray200 whitespace-pre-wrap mt-[0.8rem] ${isMobile ? 'p2' : 'p1'}`}>

pages/myinfo/hooks/useNicknameModals.tsx

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useRouter } from 'next/router';
22

33
import { getRandomIndex } from '@utils/randomNumber';
44

5+
import { useLoginStatusStore } from '@stores/loginStore';
56
import { useModalStore } from '@stores/modalStore';
67
import { useNicknameStore } from '@stores/nicknameStore';
78
import { useToastVisibleStore } from '@stores/toastVisibleStore';
@@ -20,6 +21,7 @@ import {
2021
NICKNAME_MODAL_FIRST_OVER_COUNT,
2122
NICKNAME_MODAL_SECOND_OVER_COUNT,
2223
} from '@/constants/UserInfoConstants';
24+
import { PAGE_ERROR_MESSAGE2 } from '@/constants/errorMessageConstants';
2325

2426
import { useGetNicknameChangeable } from '../apiHooks/useGetNicknameChangeable';
2527
import { useGetNicknameRandom } from '../apiHooks/useGetNicknameRandom';
@@ -31,6 +33,7 @@ export const useNicknameModals = () => {
3133
const { pushModal, popModal } = useModalStore();
3234
const { setToastVisible } = useToastVisibleStore();
3335
const { setNickname } = useNicknameStore();
36+
const { loginStatus } = useLoginStatusStore();
3437

3538
const { mutate: patchNicknameMutate } = usePatchNickname();
3639
const { refetch: refetchChangeable } = useGetNicknameChangeable();
@@ -54,10 +57,18 @@ export const useNicknameModals = () => {
5457
contents: <NicknameResultModal title={randomTitles[getRandomIndex(3)]} newNickname={data} />,
5558
submitFunction: () => pushCompleteModal(),
5659
cancelFunction: async () => {
57-
const data = await refetch();
58-
setNickname(data.data);
60+
if (loginStatus !== 'login') {
61+
popModal();
62+
return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' });
63+
}
5964

60-
pushNicknameResult20Modal(nextCount, data.data);
65+
const refetchResult = await refetch();
66+
const nextNickname = refetchResult.data;
67+
if (!nextNickname) return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' });
68+
69+
setNickname(nextNickname);
70+
71+
pushNicknameResult20Modal(nextCount, nextNickname);
6172
},
6273
});
6374
};
@@ -77,12 +88,20 @@ export const useNicknameModals = () => {
7788
contents: <NicknameResultModal title={randomTitles[getRandomIndex(3)]} newNickname={data} />,
7889
submitFunction: () => pushCompleteModal(),
7990
cancelFunction: async () => {
80-
const data = await refetch();
81-
setNickname(data.data);
91+
if (loginStatus !== 'login') {
92+
popModal();
93+
return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' });
94+
}
95+
96+
const refetchResult = await refetch();
97+
const nextNickname = refetchResult.data;
98+
if (!nextNickname) return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' });
99+
100+
setNickname(nextNickname);
82101

83102
count >= NICKNAME_MODAL_SECOND_OVER_COUNT - 1
84-
? pushNicknameResult20Modal(nextCount, data.data)
85-
: pushNicknameResult10Modal(nextCount, data.data);
103+
? pushNicknameResult20Modal(nextCount, nextNickname)
104+
: pushNicknameResult10Modal(nextCount, nextNickname);
86105
},
87106
});
88107
};
@@ -102,12 +121,19 @@ export const useNicknameModals = () => {
102121
contents: <NicknameResultModal title={randomTitles[getRandomIndex(3)]} newNickname={data} />,
103122
submitFunction: () => pushCompleteModal(),
104123
cancelFunction: async () => {
105-
const { data } = await refetch();
106-
setNickname(data);
124+
if (loginStatus !== 'login') {
125+
popModal();
126+
return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' });
127+
}
128+
129+
const { data: nextNickname } = await refetch();
130+
if (!nextNickname) return setToastVisible({ message: PAGE_ERROR_MESSAGE2, type: 'error' });
131+
132+
setNickname(nextNickname);
107133

108134
count >= NICKNAME_MODAL_FIRST_OVER_COUNT - 1
109-
? pushNicknameResult10Modal(nextCount, data)
110-
: pushNicknameResultModal(nextCount, data);
135+
? pushNicknameResult10Modal(nextCount, nextNickname)
136+
: pushNicknameResultModal(nextCount, nextNickname);
111137
},
112138
});
113139
};
@@ -138,7 +164,10 @@ export const useNicknameModals = () => {
138164

139165
pushModal({
140166
...MYINFO_NICKNAME_EDIT_MODAL,
141-
submitFunction: () => pushNicknameResultModal(1),
167+
submitFunction: async () => {
168+
pushNicknameResultModal(1);
169+
await refetch();
170+
},
142171
cancelFunction: () => popModal(),
143172
});
144173
};

0 commit comments

Comments
 (0)