diff --git a/frontend/src/pages/pc/admin/AdminSchedule.jsx b/frontend/src/pages/pc/admin/AdminSchedule.jsx index f7fc91f..b13dec7 100644 --- a/frontend/src/pages/pc/admin/AdminSchedule.jsx +++ b/frontend/src/pages/pc/admin/AdminSchedule.jsx @@ -136,6 +136,8 @@ function AdminSchedule() { selectedDate, setSelectedDate, currentDate, setCurrentDate, scrollPosition, setScrollPosition, + preserveState, setPreserveState, + reset, } = useScheduleStore(); // 로컬 상태 (페이지 이동 시 유지할 필요 없는 것들) @@ -191,10 +193,18 @@ function AdminSchedule() { } }, [inView, hasNextPage, isFetchingNextPage, fetchNextPage, isSearchMode, searchTerm]); - // selectedDate가 없으면 오늘 날짜로 초기화 + // 페이지 진입 시 상태 초기화 (preserveState가 false인 경우만) useEffect(() => { - if (!selectedDate) { + if (preserveState) { + // 일정 추가/수정, 봇 관리에서 돌아온 경우 - 플래그만 리셋 + setPreserveState(false); + } else { + // 다른 페이지에서 돌아온 경우 - 오늘 날짜로 초기화 setSelectedDate(getTodayKST()); + setCurrentDate(new Date()); + setSearchInput(''); + setSearchTerm(''); + setIsSearchMode(false); } }, []); diff --git a/frontend/src/pages/pc/admin/AdminScheduleBots.jsx b/frontend/src/pages/pc/admin/AdminScheduleBots.jsx index 1a4c6f3..ab96903 100644 --- a/frontend/src/pages/pc/admin/AdminScheduleBots.jsx +++ b/frontend/src/pages/pc/admin/AdminScheduleBots.jsx @@ -9,10 +9,12 @@ import Toast from '../../../components/Toast'; import Tooltip from '../../../components/Tooltip'; import AdminHeader from '../../../components/admin/AdminHeader'; import useToast from '../../../hooks/useToast'; +import useScheduleStore from '../../../stores/useScheduleStore'; import * as botsApi from '../../../api/admin/bots'; function AdminScheduleBots() { const navigate = useNavigate(); + const { setPreserveState } = useScheduleStore(); const [user, setUser] = useState(null); const { toast, setToast } = useToast(); const [bots, setBots] = useState([]); @@ -198,9 +200,12 @@ function AdminScheduleBots() { - + 봇 관리 diff --git a/frontend/src/pages/pc/admin/AdminScheduleForm.jsx b/frontend/src/pages/pc/admin/AdminScheduleForm.jsx index d91a3d4..c4606b2 100644 --- a/frontend/src/pages/pc/admin/AdminScheduleForm.jsx +++ b/frontend/src/pages/pc/admin/AdminScheduleForm.jsx @@ -29,6 +29,7 @@ import CustomTimePicker from "../../../components/admin/CustomTimePicker"; import AdminHeader from "../../../components/admin/AdminHeader"; import ConfirmDialog from "../../../components/admin/ConfirmDialog"; import useToast from "../../../hooks/useToast"; +import useScheduleStore from "../../../stores/useScheduleStore"; import * as authApi from "../../../api/admin/auth"; import * as categoriesApi from "../../../api/admin/categories"; import * as schedulesApi from "../../../api/admin/schedules"; @@ -36,6 +37,7 @@ import { getMembers } from "../../../api/public/members"; function AdminScheduleForm() { const navigate = useNavigate(); + const { setPreserveState } = useScheduleStore(); const { id } = useParams(); const isEditMode = !!id; @@ -495,6 +497,7 @@ function AdminScheduleForm() { : "일정이 추가되었습니다.", }) ); + setPreserveState(true); navigate("/admin/schedule"); } catch (error) { console.error("일정 저장 오류:", error); @@ -678,12 +681,12 @@ function AdminScheduleForm() { - { setPreserveState(true); navigate('/admin/schedule'); }} className="hover:text-primary transition-colors" > 일정 관리 - + {isEditMode ? "일정 수정" : "일정 추가"} @@ -1155,7 +1158,7 @@ function AdminScheduleForm() {