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) {