diff --git a/src/pages/Chat/ChatRoom.tsx b/src/pages/Chat/ChatRoom.tsx index 93fa7517..a2e36473 100644 --- a/src/pages/Chat/ChatRoom.tsx +++ b/src/pages/Chat/ChatRoom.tsx @@ -121,9 +121,12 @@ function ChatRoom() { - - {formatTime(message.createdAt)} - +
+ {message.unreadCount > 0 && ( + {message.unreadCount} + )} + {formatTime(message.createdAt)} +
)} @@ -134,9 +137,12 @@ function ChatRoom() { {message.content} - - {formatTime(message.createdAt)} - +
+ {message.unreadCount > 0 && ( + {message.unreadCount} + )} + {formatTime(message.createdAt)} +
)} diff --git a/src/pages/Club/Application/hooks/useApplyToClub.ts b/src/pages/Club/Application/hooks/useApplyToClub.ts index db3b9986..8dc6745e 100644 --- a/src/pages/Club/Application/hooks/useApplyToClub.ts +++ b/src/pages/Club/Application/hooks/useApplyToClub.ts @@ -8,7 +8,7 @@ const useApplyToClub = (clubId: number) => { const navigate = useNavigate(); const queryClient = useQueryClient(); - const { mutateAsync: applyToClub } = useMutation({ + const { mutateAsync: applyToClub, isPending } = useMutation({ mutationKey: ['applyToClub', clubId], mutationFn: (body: ClubApplyRequest) => applyClub(clubId, body), onSuccess: () => { @@ -17,7 +17,7 @@ const useApplyToClub = (clubId: number) => { }, }); - return { applyToClub }; + return { applyToClub, isPending }; }; export default useApplyToClub; diff --git a/src/pages/Club/Application/hooks/useClubApply.ts b/src/pages/Club/Application/hooks/useClubApply.ts index 10167e3c..b2b0ac9a 100644 --- a/src/pages/Club/Application/hooks/useClubApply.ts +++ b/src/pages/Club/Application/hooks/useClubApply.ts @@ -22,13 +22,13 @@ const useClubApply = (clubId: number) => { const hasFeeData = clubFee.amount !== null && clubFee.accountNumber !== null; const isFeeRequired = recruitment.isFeeRequired && hasFeeData; - const { applyToClub } = useApplyToClub(clubId); + const { applyToClub, isPending } = useApplyToClub(clubId); const applyDirectly = () => applyToClub({ answers: [] }); const hasQuestions = clubQuestions && clubQuestions.questions.length > 0; - return { clubQuestions, applyToClub, applyDirectly, hasQuestions, isFeeRequired }; + return { clubQuestions, applyToClub, applyDirectly, hasQuestions, isFeeRequired, isPending }; }; export default useClubApply; diff --git a/src/pages/Club/Application/index.tsx b/src/pages/Club/Application/index.tsx index 1d453f48..a6a9211b 100644 --- a/src/pages/Club/Application/index.tsx +++ b/src/pages/Club/Application/index.tsx @@ -8,7 +8,7 @@ import useClubApply from './hooks/useClubApply'; function ApplicationPage() { const { clubId } = useParams(); const navigate = useNavigate(); - const { clubQuestions, applyToClub, isFeeRequired } = useClubApply(Number(clubId)); + const { clubQuestions, applyToClub, isFeeRequired, isPending } = useClubApply(Number(clubId)); const { answers: storedAnswers, clubId: storedClubId } = useClubApplicationStore(); const setApplication = useClubApplicationStore((s) => s.setApplication); const [answers, setAnswers] = useState>(() => @@ -80,7 +80,8 @@ function ApplicationPage() { diff --git a/src/pages/Club/ClubDetail/components/ClubRecruitment.tsx b/src/pages/Club/ClubDetail/components/ClubRecruitment.tsx index af0f715e..8d4604b0 100644 --- a/src/pages/Club/ClubDetail/components/ClubRecruitment.tsx +++ b/src/pages/Club/ClubDetail/components/ClubRecruitment.tsx @@ -14,7 +14,7 @@ interface ClubRecruitProps { function ClubRecruitment({ clubId, isMember }: ClubRecruitProps) { const navigate = useNavigate(); const { data: clubRecruitment } = useGetClubRecruitment(clubId); - const { hasQuestions, applyDirectly, isFeeRequired } = useClubApply(clubId); + const { hasQuestions, applyDirectly, isFeeRequired, isPending } = useClubApply(clubId); const { value: isConfirmOpen, setTrue: openConfirm, setFalse: closeConfirm } = useBooleanState(); const setApplication = useClubApplicationStore((s) => s.setApplication); @@ -95,7 +95,8 @@ function ClubRecruitment({ clubId, isMember }: ClubRecruitProps) {