diff --git a/src/pages/MeetingPage.jsx b/src/pages/MeetingPage.jsx index 82a936eaa76f567b0b7b96d7f6e1d8825a11b1ee..10804f212cb91596d556eb1e4eadc2abb5cf56b4 100644 --- a/src/pages/MeetingPage.jsx +++ b/src/pages/MeetingPage.jsx @@ -101,7 +101,7 @@ const MeetingPage = () => { hasError, ]); - const handleCreateMeeting = () => { + const handleCreateMeeting = async () => { setShowCreateModal(true); // 모달 열기 }; @@ -110,14 +110,15 @@ const MeetingPage = () => { try { await joinMeeting(meetingId); alert("번개 모임에 성공적으로 참가했습니다!"); - // 참가 상태 업데이트 - setMeetings((prev) => - prev.map((meeting) => - meeting.id === meetingId - ? { ...meeting, isParticipant: true } - : meeting - ) - ); + + // 최신 데이터 다시 가져오기 + 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); + } } catch (error) { alert("번개 모임 참가에 실패했습니다."); console.error("Error joining meeting:", error); @@ -140,10 +141,15 @@ const MeetingPage = () => { try { await deleteMeeting(meetingId); alert("번개 모임을 삭제했습니다!"); - setMeetings((prev) => prev.filter((meeting) => meeting.id !== meetingId)); - setMyMeetings((prev) => - prev.filter((meeting) => meeting.id !== meetingId) - ); + + // 최신 데이터 다시 가져오기 + 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); + } } catch (error) { alert("번개 모임 삭제에 실패했습니다."); console.error("Error deleting meeting:", error); @@ -155,20 +161,15 @@ const MeetingPage = () => { try { await leaveMeeting(meetingId); alert("번개 모임을 나갔습니다!"); - setMeetings((prev) => - prev.map((meeting) => - meeting.id === meetingId - ? { ...meeting, isParticipant: false } - : meeting - ) - ); - setMyMeetings((prev) => - prev.map((meeting) => - meeting.id === meetingId - ? { ...meeting, isParticipant: false } - : meeting - ) - ); + + // 최신 데이터 다시 가져오기 + 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); + } } catch (error) { alert("번개 모임 나가기에 실패했습니다."); console.error("Error leaving meeting:", error); @@ -180,16 +181,15 @@ const MeetingPage = () => { try { await closeMeeting(meetingId); alert("번개 모임을 마감했습니다!"); - setMeetings((prev) => - prev.map((meeting) => - meeting.id === meetingId ? { ...meeting, type: "CLOSE" } : meeting - ) - ); - setMyMeetings((prev) => - prev.map((meeting) => - meeting.id === meetingId ? { ...meeting, type: "CLOSE" } : meeting - ) - ); + + // 최신 데이터 다시 가져오기 + 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); + } } catch (error) { alert("번개 모임 마감에 실패했습니다."); console.error("Error closing meeting:", error);