From 2dd521926527a338e4404bfbd5942146858c29a9 Mon Sep 17 00:00:00 2001 From: caadiq Date: Sat, 10 Jan 2026 00:19:06 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B4=80=EB=A6=AC=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EB=82=A0=EC=A7=9C=20=EC=83=81=ED=83=9C=20=EC=A1=B0?= =?UTF-8?q?=EA=B1=B4=EB=B6=80=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 문제: 일정 관리 페이지에서 날짜 선택 후 홈으로 갔다왔을 때 오늘 날짜로 초기화가 안됨 해결: - useScheduleStore에 preserveState 플래그 추가 - AdminSchedule에서 preserveState가 false면 오늘 날짜로 초기화 - AdminScheduleForm, AdminScheduleBots에서 일정 관리로 돌아갈 때 preserveState를 true로 설정하여 상태 유지 --- frontend/src/pages/pc/admin/AdminSchedule.jsx | 14 ++++++++++++-- frontend/src/pages/pc/admin/AdminScheduleBots.jsx | 9 +++++++-- frontend/src/pages/pc/admin/AdminScheduleForm.jsx | 11 +++++++---- frontend/src/stores/useScheduleStore.js | 5 +++++ 4 files changed, 31 insertions(+), 8 deletions(-) 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() {