Skip to content

Commit 5418e92

Browse files
authored
Merge pull request #221 from PNUMeat/fix/team-list-response-pagination-pr2
hotfix(main): 팀 리스트 response 타입 불일치 문제 해결
2 parents b8179eb + 99b84a5 commit 5418e92

File tree

2 files changed

+33
-55
lines changed

2 files changed

+33
-55
lines changed

src/api/team.ts

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -55,30 +55,12 @@ interface ITeamListResponse {
5555
myTeams: ITeamInfo[];
5656
allTeams: {
5757
content: ITeamInfo[];
58-
empty: boolean;
59-
first: boolean;
60-
last: boolean;
61-
number: number;
62-
numberOfElements: number;
63-
pageable: {
64-
pageNumber: number;
65-
pageSize: number;
66-
offset: number;
67-
sort: {
68-
unsorted: boolean;
69-
sorted: boolean;
70-
empty: boolean;
71-
};
72-
unpaged: boolean;
73-
};
74-
size: number;
75-
sort: {
76-
unsorted: boolean;
77-
sorted: boolean;
78-
empty: boolean;
58+
page: {
59+
size: number;
60+
number: number;
61+
totalElements: number;
62+
totalPages: number;
7963
};
80-
totalElements: number;
81-
totalPages: number;
8264
};
8365
}
8466

src/pages/TeamJoin/TeamJoin.tsx

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -29,35 +29,36 @@ const prevPageCacheMap: Map<string, number> = new Map();
2929
const QUERY_MODE = 'query';
3030
const SEARCH_MODE = 'search';
3131

32-
totalPagesCacheMap.set(QUERY_MODE, 1);
33-
totalPagesCacheMap.set(SEARCH_MODE, 1);
34-
3532
prevPageCacheMap.set(QUERY_MODE, 0);
3633
prevPageCacheMap.set(SEARCH_MODE, 0);
3734

3835
const TeamData = () => {
39-
const [page, setPage] = useState(-1);
36+
const [page, setPage] = useState(0);
4037
const [keyword, setKeyword] = useState(prevKeyword);
4138
const isSearchMode = keyword.trim().length > 0;
4239

40+
const handleKeywordChange = (newKeyword: string) => {
41+
setKeyword(newKeyword);
42+
setPage(0);
43+
};
44+
4345
const { data: queryData, isPending: queryPending } = useQuery({
44-
queryKey: ['team-list', page === -1 ? 0 : page],
45-
queryFn: () => getTeamList('recent', page === -1 ? 0 : page, 6),
46-
//placeholdreData에서 prevData ?? queryclient.getQueryData(['team-list', 이전 페이지`])
47-
// 위의 코드는 사용시 플로우를 완전히 제어 못할 거 같음
48-
// placeholderData: (prevData) => ({ prevData })},
49-
select: (data) => ({
50-
myTeams: data.myTeams,
51-
otherTeams: data.allTeams.content,
52-
totalPages: data.allTeams.totalPages,
53-
}),
46+
queryKey: ['team-list', page],
47+
queryFn: () => getTeamList('recent', page, 6),
48+
select: (data) => {
49+
return {
50+
myTeams: data.myTeams,
51+
otherTeams: data.allTeams.content,
52+
totalPages: data.allTeams.page.totalPages,
53+
};
54+
},
55+
enabled: !isSearchMode,
5456
retry: (failureCount, error: AxiosError<ServerResponse<null>>) => {
5557
if (
5658
error.response &&
5759
error.response.status === 401 &&
5860
(error.response.data.code === 100 || error.response.data.code === 101)
5961
) {
60-
console.log('asdasd tj');
6162
return false;
6263
}
6364

@@ -71,12 +72,14 @@ const TeamData = () => {
7172
}
7273

7374
const { data: searchData, isPending: searchPending } = useQuery({
74-
queryKey: ['team-search', keyword, page === -1 ? 0 : page],
75-
queryFn: () => searchTeams(keyword, 'recent', page === -1 ? 0 : page, 6),
76-
select: (data) => ({
77-
otherTeams: data.content,
78-
totalPages: data?.page?.totalPages,
79-
}),
75+
queryKey: ['team-search', keyword, page],
76+
queryFn: () => searchTeams(keyword, 'recent', page, 6),
77+
select: (data) => {
78+
return {
79+
otherTeams: data.content,
80+
totalPages: data?.page?.totalPages,
81+
};
82+
},
8083
enabled: isSearchMode,
8184
});
8285

@@ -96,20 +99,13 @@ const TeamData = () => {
9699
? (searchData?.otherTeams ?? [])
97100
: (queryData?.otherTeams ?? []);
98101
const totalPages = isSearchMode
99-
? (searchData?.totalPages ??
100-
(totalPagesCacheMap.get(SEARCH_MODE) as number))
101-
: (queryData?.totalPages ?? (totalPagesCacheMap.get(QUERY_MODE) as number));
102-
const currPage =
103-
page === -1
104-
? (prevPageCacheMap.get(
105-
isSearchMode ? SEARCH_MODE : QUERY_MODE
106-
) as number)
107-
: page;
102+
? (searchData?.totalPages ?? totalPagesCacheMap.get(SEARCH_MODE) ?? 1)
103+
: (queryData?.totalPages ?? totalPagesCacheMap.get(QUERY_MODE) ?? 1);
108104
const isPending = isSearchMode ? searchPending : queryPending;
109105

110106
return (
111107
<KeywordPageControlContext.Provider
112-
value={{ keyword, setKeyword, setPage }}
108+
value={{ keyword, setKeyword: handleKeywordChange, setPage }}
113109
>
114110
{/* 나의 팀 */}
115111
{myTeam.length > 0 && <MyTeamCard teams={myTeam} />}
@@ -118,7 +114,7 @@ const TeamData = () => {
118114
<Pagination
119115
totalPages={totalPages}
120116
onPageChange={handlePageChange}
121-
currentPageProp={currPage}
117+
currentPageProp={page}
122118
hideShadow={true}
123119
/>
124120
<Spacer h={34} />

0 commit comments

Comments
 (0)