diff --git a/src/pages/SchedulePage.jsx b/src/pages/SchedulePage.jsx index a39e13a6180ddafac0378240457cd5b131f9a97b..5fa5f28ce29ab4f1a38ee3e07ac4dda555eb0563 100644 --- a/src/pages/SchedulePage.jsx +++ b/src/pages/SchedulePage.jsx @@ -1,6 +1,12 @@ import React, { useEffect, useState } from "react"; import Label from "../components/Label"; -// import { createSchedule, deleteSchedule, fetchAllSchedules } from "./api"; // API 호출 주석 유지 +import { + createSchedule, + deleteSchedule, + fetchScheduleByTimeIndex, + fetchAllSchedules, + updateSchedule, +} from "../api/schedule"; const generateTimeSlots = () => { const timeSlots = []; @@ -16,26 +22,26 @@ const generateTimeSlots = () => { const days = ["월", "화", "수", "목", "금", "토", "일"]; -const dummySchedules = [ - { - id: 1, - user_id: 1, - title: "알고리즘 스터디", - is_fixed: true, - time_indices: [36, 37, 38, 39], - createdAt: "2024-12-02T09:52:00.000Z", - updatedAt: "2024-12-02T09:52:00.000Z", - }, - { - id: 5, - user_id: 1, - title: "웹시설 팀플", - is_fixed: true, - time_indices: [165, 166, 167, 255, 256, 257], - createdAt: "2024-12-02T09:54:53.000Z", - updatedAt: "2024-12-02T09:54:53.000Z", - }, -]; +// const dummySchedules = [ +// { +// id: 1, +// user_id: 1, +// title: "알고리즘 스터디", +// is_fixed: true, +// time_indices: [36, 37, 38, 39], +// createdAt: "2024-12-02T09:52:00.000Z", +// updatedAt: "2024-12-02T09:52:00.000Z", +// }, +// { +// id: 5, +// user_id: 1, +// title: "웹시설 팀플", +// is_fixed: true, +// time_indices: [165, 166, 167, 255, 256, 257], +// createdAt: "2024-12-02T09:54:53.000Z", +// updatedAt: "2024-12-02T09:54:53.000Z", +// }, +// ]; const SchedulePage = () => { const timeSlots = generateTimeSlots(); @@ -48,53 +54,54 @@ const SchedulePage = () => { const [isFixed, setIsFixed] = useState(true); useEffect(() => { - // const initializeSchedules = async () => { - // try { - // const data = await fetchAllSchedules(); - // setSchedules(data); - // } catch (error) { - // console.error("Failed to load schedules", error); - // } - // }; + // API + const initializeSchedules = async () => { + try { + const data = await fetchAllSchedules(); + setSchedules(data); + } catch (error) { + console.error("Failed to load schedules", error); + } + }; - // initializeSchedules(); + initializeSchedules(); - // 현재는 더미 데이터로 초기화 - setSchedules(dummySchedules); + // 임시 코드 + // setSchedules(dummySchedules); }, []); const handleSlotClick = async (timeIdx) => { if (!isEditMode) return; - // API 호출 준비가 되었을 때 사용: - // try { - // const response = await fetchScheduleByTimeIndex(timeIdx); - // if (response && response.data && response.data.schedule) { - // setSelectedSchedule(response.data.schedule); // API로 가져온 스케줄 설정 - // } else { - // console.error("No schedule found for time index:", timeIdx); - // } - // } catch (error) { - // console.error("Failed to fetch schedule for time index:", timeIdx, error); - // } - - //임시 코드 - const slotInSchedule = schedules.find((s) => - s.time_indices.includes(timeIdx) - ); - - if (slotInSchedule) { - if (selectedSlots.length === 0) { - setSelectedSchedule(slotInSchedule); + // API + try { + const response = await fetchScheduleByTimeIndex(timeIdx); + if (response && response.data && response.data.schedule) { + setSelectedSchedule(response.data.schedule); // API로 가져온 스케줄 설정 + } else { + console.error("No schedule found for time index:", timeIdx); } - return; + } catch (error) { + console.error("Failed to fetch schedule for time index:", timeIdx, error); } - if (selectedSlots.includes(timeIdx)) { - setSelectedSlots((prev) => prev.filter((idx) => idx !== timeIdx)); - } else { - setSelectedSlots((prev) => [...prev, timeIdx]); - } + // 임시 코드 + // const slotInSchedule = schedules.find((s) => + // s.time_indices.includes(timeIdx) + // ); + + // if (slotInSchedule) { + // if (selectedSlots.length === 0) { + // setSelectedSchedule(slotInSchedule); + // } + // return; + // } + + // if (selectedSlots.includes(timeIdx)) { + // setSelectedSlots((prev) => prev.filter((idx) => idx !== timeIdx)); + // } else { + // setSelectedSlots((prev) => [...prev, timeIdx]); + // } }; const handleCancelSchedule = () => { @@ -122,16 +129,16 @@ const SchedulePage = () => { is_fixed: isFixed, time_indices: selectedSlots, }; - // API 호출 부분 (주석 처리) - // const newSchedule = await updateSchedule(scheduleData); - - // 임시로 더미 데이터에 추가 - const newSchedule = { - ...scheduleData, - id: Date.now(), - createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), - }; + // API + const newSchedule = await updateSchedule(scheduleData); + + // 임시 코드 + // const newSchedule = { + // ...scheduleData, + // id: Date.now(), + // createdAt: new Date().toISOString(), + // updatedAt: new Date().toISOString(), + // }; setSchedules((prev) => [...prev, newSchedule]); setSelectedSchedule(newSchedule); @@ -155,16 +162,16 @@ const SchedulePage = () => { time_indices: selectedSlots, }; - // API 호출 부분 (주석 처리) - // const newSchedule = await createSchedule(scheduleData); + // API + const newSchedule = await createSchedule(scheduleData); - // 임시로 더미 데이터에 추가 - const newSchedule = { - ...scheduleData, - id: Date.now(), - createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), - }; + // 임시코드 + // const newSchedule = { + // ...scheduleData, + // id: Date.now(), + // createdAt: new Date().toISOString(), + // updatedAt: new Date().toISOString(), + // }; setSchedules((prev) => [...prev, newSchedule]); setSelectedSlots([]); @@ -184,15 +191,15 @@ const SchedulePage = () => { const body = { title: selectedSchedule.title }; // API 호출 준비가 되었을 때 사용: - // await deleteSchedule(body); + await deleteSchedule(body); - // const updatedSchedules = await fetchAllSchedules(); - // setSchedules(updatedSchedules); + const updatedSchedules = await fetchAllSchedules(); + setSchedules(updatedSchedules); - // 임시로 삭제 처리 - setSchedules((prev) => - prev.filter((s) => s.title !== selectedSchedule.title) - ); + // 임시코드 + // setSchedules((prev) => + // prev.filter((s) => s.title !== selectedSchedule.title) + // ); setSelectedSchedule(null); alert("스케줄이 삭제되었습니다.");