Skip to content

Commit 45bd231

Browse files
author
Sohee KWON
authored
Merge pull request #100 from sopt-makers/fix/issue-1207
[FIX] 수정사항 반영
2 parents 0ef2dad + f85cc86 commit 45bd231

File tree

7 files changed

+46
-29
lines changed

7 files changed

+46
-29
lines changed

src/components/attendanceAdmin/session/AttendanceModal/index.tsx

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,22 @@ function AttendanceModal(props: Props) {
3535
const code = createCode();
3636
setCode(code);
3737

38-
(async () => {
38+
const start = async () => {
3939
const isStarted = await startAttendance(code, lectureId, round);
4040
if (isStarted) {
4141
setStatus('STARTED');
4242
} else {
43-
alert('출석이 정상적으로 시작되지 않았어요');
44-
finishAttendance();
43+
const isRetry = confirm(
44+
'출석이 정상적으로 시작되지 않았어요. 다시 시도하시겠어요?',
45+
);
46+
if (isRetry) {
47+
start();
48+
} else {
49+
finishAttendance();
50+
}
4551
}
46-
})();
52+
};
53+
start();
4754
}, [lectureId, round, finishAttendance]);
4855

4956
useEffect(() => {
@@ -81,7 +88,7 @@ function AttendanceModal(props: Props) {
8188
}
8289
};
8390

84-
if (status === 'LOADING') return <Loading />;
91+
if (status === 'LOADING') return <Loading full />;
8592
return (
8693
<StAttendanceModal>
8794
<ModalHeader

src/components/attendanceAdmin/totalScore/MemberList/index.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,15 @@ function MemberList() {
2424
const currentGeneration = useRecoilValue(currentGenerationState);
2525

2626
const {
27-
data: members,
27+
data: membersData,
2828
fetchNextPage,
2929
isFetchingNextPage,
3030
status,
3131
} = useGetInfiniteMemberList(parseInt(currentGeneration), selectedPart);
3232

33+
const members = membersData?.pages.map((item) => item.members) ?? [];
34+
const totalCount = membersData?.pages[0].totalCount ?? 0;
35+
3336
useObserver({
3437
target: bottomRef,
3538
fetchNextPage,
@@ -52,10 +55,10 @@ function MemberList() {
5255
<StPageHeader>
5356
<h1>출석 총점</h1>
5457
<PartFilter selected={selectedPart} onChangePart={onChangePart} />
55-
<p>0명</p>
58+
<p>{totalCount}</p>
5659
</StPageHeader>
5760
<ListWrapper>
58-
{members?.pages.map(
61+
{members.map(
5962
(pageMembers, pageIndex) =>
6063
pageMembers &&
6164
pageMembers.map((member, index) => {

src/pages/attendanceAdmin/session/[id].tsx

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,16 @@ function SessionDetailPage() {
6262
} = useGetSessionDetail(id);
6363

6464
const {
65-
data: members,
65+
data: membersData,
6666
fetchNextPage,
6767
isFetchingNextPage,
6868
status,
6969
refetch: refetchMembers,
7070
} = useGetInfiniteSessionMembers(id, selectedPart);
7171

72+
const members = membersData?.pages.map((item) => item.attendances) ?? [];
73+
const totalCount = membersData?.pages[0].totalCount ?? 0;
74+
7275
useObserver({
7376
target: bottomRef,
7477
fetchNextPage,
@@ -220,12 +223,6 @@ function SessionDetailPage() {
220223
}
221224
};
222225

223-
const getMemberCount = (attendances: Record<string, number>) => {
224-
let sum = 0;
225-
Object.keys(attendances).map((key) => (sum += attendances[key]));
226-
return sum;
227-
};
228-
229226
const getButtonContent = (status: SESSION_STATUS): ReactNode => {
230227
switch (status) {
231228
case 'BEFORE':
@@ -249,7 +246,7 @@ function SessionDetailPage() {
249246
return () => closeAttendance();
250247
default:
251248
// eslint-disable-next-line prettier/prettier
252-
return () => {};
249+
return () => { };
253250
}
254251
};
255252

@@ -266,7 +263,7 @@ function SessionDetailPage() {
266263
<PartFilter selected={selectedPart} onChangePart={onChangePart} />
267264
)}
268265
<div className="attendances">
269-
<p>{getMemberCount(session.attendances)}</p>
266+
<p>{totalCount}</p>
270267
<div>
271268
<p>출석 {session.attendances.attendance}</p>
272269
<p>지각 {session.attendances.tardy}</p>
@@ -279,7 +276,7 @@ function SessionDetailPage() {
279276

280277
{session && members ? (
281278
<ListWrapper>
282-
{members?.pages.map(
279+
{members.map(
283280
(pageMembers, pageIndex) =>
284281
pageMembers &&
285282
pageMembers.map((member, index) => {
@@ -355,7 +352,6 @@ function SessionDetailPage() {
355352
text="갱신"
356353
disabled={
357354
!(
358-
session.status === 'END' &&
359355
isChangedMember(member) &&
360356
String(session.generation) === ACTIVITY_GENERATION
361357
)

src/services/api/lecture/index.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,14 @@ export const getSessionMembers = async (
6060
lectureId: number,
6161
part?: PART,
6262
) => {
63-
const query = buildQuery({ part, page: `${page}` });
64-
const { data }: AxiosResponse<{ data: SessionMember[] }> = await client.get(
65-
`/attendances/lecture/${lectureId}${query}`,
63+
const query = buildQuery({ page: `${page}` });
64+
const partQuery = part && part !== 'ALL' ? `&part=${part}` : '';
65+
const {
66+
data,
67+
}: AxiosResponse<{
68+
data: { attendances: SessionMember[]; totalCount: number };
69+
}> = await client.get(
70+
`/attendances/lecture/${lectureId}${query}${partQuery}`,
6671
);
6772
return data.data;
6873
};

src/services/api/lecture/query.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,20 @@ export const useGetSessionDetail = (lectureId: number | null) => {
4040
export const useGetInfiniteSessionMembers = (
4141
lectureId: number | null,
4242
part?: PART,
43-
): UseInfiniteQueryResult<SessionMember[]> => {
43+
): UseInfiniteQueryResult<{
44+
attendances: SessionMember[];
45+
totalCount: number;
46+
}> => {
4447
return useInfiniteQuery(
4548
['sessionMembers', lectureId, part],
4649
async ({ pageParam = 0 }) =>
4750
pageParam !== null &&
4851
(await getSessionMembers(pageParam, lectureId ?? 0, part)),
4952
{
5053
getNextPageParam: (lastPage, pages) =>
51-
lastPage && lastPage.length < PAGE_SIZE ? null : pages.length,
54+
lastPage && lastPage.attendances.length < PAGE_SIZE
55+
? null
56+
: pages.length,
5257
},
5358
);
5459
};

src/services/api/member/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ export const getMemberList = async (
1313
generation: `${generation}`,
1414
page: `${page}`,
1515
});
16-
const { data }: AxiosResponse<{ data: ScoreMember[] }> = await client.get(
17-
`/members/list${query}`,
18-
);
16+
const {
17+
data,
18+
}: AxiosResponse<{ data: { members: ScoreMember[]; totalCount: number } }> =
19+
await client.get(`/members/list${query}`);
1920
return data.data;
2021
};

src/services/api/member/query.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ import { getMemberList } from './index';
77
export const useGetInfiniteMemberList = (
88
generation: number,
99
part: PART,
10-
): UseInfiniteQueryResult<ScoreMember[]> => {
10+
): UseInfiniteQueryResult<{ members: ScoreMember[]; totalCount: number }> => {
1111
return useInfiniteQuery(
1212
['memberList', generation, part],
1313
async ({ pageParam = 0 }) =>
1414
pageParam !== null && (await getMemberList(pageParam, generation, part)),
1515
{
1616
getNextPageParam: (lastPage, pages) =>
17-
lastPage && lastPage.length < PAGE_SIZE ? null : pages.length,
17+
lastPage && lastPage.members.length < PAGE_SIZE ? null : pages.length,
1818
},
1919
);
2020
};

0 commit comments

Comments
 (0)