diff --git a/src/components/Card.jsx b/src/components/Card.jsx index 6a0e284bbb25834fc88ed211523d4829137035fa..63a2311d93ba7ec0cbb459daa8c1ec0beeccabf8 100644 --- a/src/components/Card.jsx +++ b/src/components/Card.jsx @@ -4,19 +4,22 @@ import React from "react"; import Button from "./Button"; import Label from "./Label"; import { convertIndexToTime } from "../utils/time"; -const cardVariants = cva("w-full rounded-xl shadow-lg p-4 overflow-hidden", { - variants: { - theme: { - black: "bg-black text-white", - white: "bg-white text-black", - pink: "bg-gradient-pink text-white", - purple: "bg-gradient-purple text-white", - indigo: "bg-gradient-indigo text-white", - mix: "bg-gradient-mix text-white", - gray: "bg-gray-300 text-gray-500", +const cardVariants = cva( + "w-full rounded-xl shadow-lg p-4 overflow-hidden cursor-pointer", + { + variants: { + theme: { + black: "bg-black text-white", + white: "bg-white text-black", + pink: "bg-gradient-pink text-white", + purple: "bg-gradient-purple text-white", + indigo: "bg-gradient-indigo text-white", + mix: "bg-gradient-mix text-white", + gray: "bg-gray-300 text-gray-500", + }, }, - }, -}); + } +); export default function Card({ meeting, @@ -52,7 +55,7 @@ export default function Card({ const deadlineTime = convertIndexToTime(time_idx_deadline); return ( - <div className={cn(variantClass)} onClick={onClick}> + <div className={cn(variantClass)} onClick={onClick} role="button"> <h3 className="mb-2 text-xl font-bold">{title}</h3> <Label size="sm" theme="black"> 장소: {location} diff --git a/src/pages/MeetingPage.jsx b/src/pages/MeetingPage.jsx index 98211da2da2fb91084be87e71b4a71bf01256746..2ec5b9a44ba35400973482be55acbe55a3d35118 100644 --- a/src/pages/MeetingPage.jsx +++ b/src/pages/MeetingPage.jsx @@ -106,7 +106,7 @@ const MeetingPage = () => { }; const handleJoinButtonClick = async (e, meetingId) => { - // e.stopPropagation(); + e.stopPropagation(); try { await joinMeeting(meetingId); alert("번개 모임에 성공적으로 참가했습니다!"); @@ -137,7 +137,7 @@ const MeetingPage = () => { }; const handleDeleteButtonClick = async (e, meetingId) => { - // e.stopPropagation(); + e.stopPropagation(); try { await deleteMeeting(meetingId); alert("번개 모임을 삭제했습니다!"); @@ -157,7 +157,7 @@ const MeetingPage = () => { }; const handleLeaveButtonClick = async (e, meetingId) => { - // e.stopPropagation(); + e.stopPropagation(); try { await leaveMeeting(meetingId); alert("번개 모임을 나갔습니다!"); @@ -177,7 +177,7 @@ const MeetingPage = () => { }; const handleCloseButtonClick = async (e, meetingId) => { - // e.stopPropagation(); + e.stopPropagation(); try { await closeMeeting(meetingId); alert("번개 모임을 마감했습니다!"); diff --git a/src/pages/Mypage.jsx b/src/pages/Mypage.jsx index 865abd47f86613d8671527f6377b7e90b4ec6bf3..4dc24392feb31740e69bb53ecd99b9143d0bbe1f 100644 --- a/src/pages/Mypage.jsx +++ b/src/pages/Mypage.jsx @@ -120,13 +120,23 @@ const MyPage = () => { // 친구 요청 수락 const handleAcceptRequest = async (requesterId) => { try { - const response = await acceptFriendRequest(requesterId); + await acceptFriendRequest(requesterId); setReceivedRequests((prev) => prev.filter((request) => request.requester.id !== requesterId) ); - setFriends((prev) => [response, ...prev]); // 친구 목록에 추가 + setIsLoading(true); + const response = await getAllFriends(page, 10); + + const content = Array.isArray(response?.content) ? response.content : []; + const nextPage = response?.hasNext ?? false; + + setFriends((prev) => [...prev, ...content]); + setHasNext(nextPage); + setPage((prev) => prev + 1); } catch (error) { console.error("Failed to accept request:", error); + } finally { + setIsLoading(false); } };