From 918ab777127e2e0f187678f8b7e67a366204dac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=84=9D=EC=B0=AC=20=EC=9C=A4?= <ysc0731@ajou.ac.kr> Date: Tue, 10 Dec 2024 10:32:05 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20event=EC=A0=84=EB=8B=AC=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EB=88=84=EB=9D=BD=20=EC=98=A4=EB=A5=98=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Card.jsx | 4 +-- src/components/CreateMeetingModal.jsx | 46 ++---------------------- src/pages/MeetingPage.jsx | 51 +++++++++++---------------- src/pages/Mypage.jsx | 35 ++++++++++-------- 4 files changed, 47 insertions(+), 89 deletions(-) diff --git a/src/components/Card.jsx b/src/components/Card.jsx index 63a2311..cc05313 100644 --- a/src/components/Card.jsx +++ b/src/components/Card.jsx @@ -24,7 +24,7 @@ const cardVariants = cva( export default function Card({ meeting, theme = "black", - onClick, + onDetail, onJoin, onDelete, onClose, @@ -55,7 +55,7 @@ export default function Card({ const deadlineTime = convertIndexToTime(time_idx_deadline); return ( - <div className={cn(variantClass)} onClick={onClick} role="button"> + <div className={cn(variantClass)} onClick={onDetail}> <h3 className="mb-2 text-xl font-bold">{title}</h3> <Label size="sm" theme="black"> 장소: {location} diff --git a/src/components/CreateMeetingModal.jsx b/src/components/CreateMeetingModal.jsx index 2a1e76b..f85d317 100644 --- a/src/components/CreateMeetingModal.jsx +++ b/src/components/CreateMeetingModal.jsx @@ -39,9 +39,9 @@ const CreateMeetingModal = ({ isOpen, onClose, onMeetingCreated }) => { parseInt(minuteEnd) ); const time_idx_deadline = convertTimeToIndex( - dayDeadline, - parseInt(hourDeadline), - parseInt(minuteDeadline) + dayStart, + parseInt(hourStart), + parseInt(minuteStart) ); const meetingData = { @@ -202,46 +202,6 @@ const CreateMeetingModal = ({ isOpen, onClose, onMeetingCreated }) => { </select> </div> </div> - <div> - <label className="block mb-2 font-semibold"> - 참가 마감 시간 (선택) - </label> - <div className="flex items-center gap-2"> - <select - value={dayDeadline} - onChange={(e) => setDayDeadline(e.target.value)} - className="p-2 border rounded" - > - {days.map((day) => ( - <option key={day} value={day}> - {day} - </option> - ))} - </select> - <select - value={hourDeadline} - onChange={(e) => setHourDeadline(e.target.value)} - className="p-2 border rounded" - > - {hours.map((hour) => ( - <option key={hour} value={hour}> - {hour}시 - </option> - ))} - </select> - <select - value={minuteDeadline} - onChange={(e) => setMinuteDeadline(e.target.value)} - className="p-2 border rounded" - > - {minutes.map((minute) => ( - <option key={minute} value={minute}> - {minute}분 - </option> - ))} - </select> - </div> - </div> <div> <label className="block mb-2 font-semibold">최대 참가 인원</label> <select diff --git a/src/pages/MeetingPage.jsx b/src/pages/MeetingPage.jsx index 2ec5b9a..1d28e38 100644 --- a/src/pages/MeetingPage.jsx +++ b/src/pages/MeetingPage.jsx @@ -112,13 +112,10 @@ const MeetingPage = () => { alert("번개 모임에 성공적으로 참가했습니다!"); // 최신 데이터 다시 가져오기 - if (activeTab === "all") { - const updatedData = await getAllMeetings(0, meetingPage * 20); - setMeetings(updatedData.content); - } else if (activeTab === "my") { - const updatedData = await getMyMeetings(0, myMeetingPage * 20); - setMyMeetings(updatedData.content); - } + const updatedAllMeetingData = await getAllMeetings(0, meetingPage * 20); + setMeetings(updatedAllMeetingData.content); + const updatedMyMeetingData = await getMyMeetings(0, myMeetingPage * 20); + setMyMeetings(updatedMyMeetingData.content); } catch (error) { alert("번개 모임 참가에 실패했습니다."); console.error("Error joining meeting:", error); @@ -143,13 +140,10 @@ const MeetingPage = () => { alert("번개 모임을 삭제했습니다!"); // 최신 데이터 다시 가져오기 - if (activeTab === "all") { - const updatedData = await getAllMeetings(0, meetingPage * 20); - setMeetings(updatedData.content); - } else if (activeTab === "my") { - const updatedData = await getMyMeetings(0, myMeetingPage * 20); - setMyMeetings(updatedData.content); - } + const updatedAllMeetingData = await getAllMeetings(0, meetingPage * 20); + setMeetings(updatedAllMeetingData.content); + const updatedMyMeetingData = await getMyMeetings(0, myMeetingPage * 20); + setMyMeetings(updatedMyMeetingData.content); } catch (error) { alert("번개 모임 삭제에 실패했습니다."); console.error("Error deleting meeting:", error); @@ -163,13 +157,10 @@ const MeetingPage = () => { alert("번개 모임을 나갔습니다!"); // 최신 데이터 다시 가져오기 - if (activeTab === "all") { - const updatedData = await getAllMeetings(0, meetingPage * 20); - setMeetings(updatedData.content); - } else if (activeTab === "my") { - const updatedData = await getMyMeetings(0, myMeetingPage * 20); - setMyMeetings(updatedData.content); - } + const updatedAllMeetingData = await getAllMeetings(0, meetingPage * 20); + setMeetings(updatedAllMeetingData.content); + const updatedMyMeetingData = await getMyMeetings(0, myMeetingPage * 20); + setMyMeetings(updatedMyMeetingData.content); } catch (error) { alert("번개 모임 나가기에 실패했습니다."); console.error("Error leaving meeting:", error); @@ -183,13 +174,10 @@ const MeetingPage = () => { alert("번개 모임을 마감했습니다!"); // 최신 데이터 다시 가져오기 - if (activeTab === "all") { - const updatedData = await getAllMeetings(0, meetingPage * 20); - setMeetings(updatedData.content); - } else if (activeTab === "my") { - const updatedData = await getMyMeetings(0, myMeetingPage * 20); - setMyMeetings(updatedData.content); - } + const updatedAllMeetingData = await getAllMeetings(0, meetingPage * 20); + setMeetings(updatedAllMeetingData.content); + const updatedMyMeetingData = await getMyMeetings(0, myMeetingPage * 20); + setMyMeetings(updatedMyMeetingData.content); } catch (error) { alert("번개 모임 마감에 실패했습니다."); console.error("Error closing meeting:", error); @@ -245,7 +233,7 @@ const MeetingPage = () => { key={meeting.id} meeting={meeting} theme="white" - onClick={() => handleCardClick(meeting.id)} + onDetail={() => handleCardClick(meeting.id)} onJoin={(e) => handleJoinButtonClick(e, meeting.id)} onClose={(e) => handleCloseButtonClick(e, meeting.id)} onDelete={(e) => handleDeleteButtonClick(e, meeting.id)} @@ -277,8 +265,11 @@ const MeetingPage = () => { key={meeting.id} meeting={meeting} theme="white" - onClick={() => handleCardClick(meeting.id)} + onDetail={() => handleCardClick(meeting.id)} onJoin={(e) => handleJoinButtonClick(e, meeting.id)} + onClose={(e) => handleCloseButtonClick(e, meeting.id)} + onDelete={(e) => handleDeleteButtonClick(e, meeting.id)} + onLeave={(e) => handleLeaveButtonClick(e, meeting.id)} /> ))} </div> diff --git a/src/pages/Mypage.jsx b/src/pages/Mypage.jsx index 4dc2439..f0e96ff 100644 --- a/src/pages/Mypage.jsx +++ b/src/pages/Mypage.jsx @@ -121,22 +121,19 @@ const MyPage = () => { const handleAcceptRequest = async (requesterId) => { try { await acceptFriendRequest(requesterId); + alert("친구 요청을 수락했습니다."); + + // 받은 요청 상태 업데이트 setReceivedRequests((prev) => prev.filter((request) => request.requester.id !== requesterId) ); - 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); + // 친구 목록 동기화 + const response = await getAllFriends(0, (page + 1) * 10); + setFriends(response.content); + setHasNext(response.hasNext); } catch (error) { console.error("Failed to accept request:", error); - } finally { - setIsLoading(false); } }; @@ -144,9 +141,17 @@ const MyPage = () => { const handleRejectRequest = async (requesterId) => { try { await rejectFriendRequest(requesterId); + alert("친구 요청을 거절했습니다."); + + // 받은 요청 상태 업데이트 setReceivedRequests((prev) => prev.filter((request) => request.requester.id !== requesterId) ); + + // 친구 목록 동기화 + const response = await getAllFriends(0, (page + 1) * 10); + setFriends(response.content); + setHasNext(response.hasNext); } catch (error) { console.error("Failed to reject request:", error); } @@ -156,10 +161,12 @@ const MyPage = () => { const handleDeleteFriend = async (friendId) => { try { await deleteFriend(friendId); - setFriends((prev) => - prev.filter((friend) => friend.friendInfo.id !== friendId) - ); - alert("성공적으로 삭제되었습니다."); + alert("친구를 삭제했습니다."); + + // 친구 목록 동기화 + const response = await getAllFriends(0, (page + 1) * 10); + setFriends(response.content); + setHasNext(response.hasNext); } catch (error) { console.error("Failed to delete friend:", error); } -- GitLab