diff --git a/src/frontend/src/components/content/PlanPanelLeft.tsx b/src/frontend/src/components/content/PlanPanelLeft.tsx index 5e0d9f7e3..8f14d823c 100644 --- a/src/frontend/src/components/content/PlanPanelLeft.tsx +++ b/src/frontend/src/components/content/PlanPanelLeft.tsx @@ -29,7 +29,7 @@ import PanelFooter from "@/coral/components/Panels/PanelFooter"; import PanelUserCard from "../../coral/components/Panels/UserCard"; import { getUserInfoGlobal } from "@/api/config"; -const PlanPanelLeft: React.FC = ({ reloadTasks }) => { +const PlanPanelLeft: React.FC = ({ reloadTasks,restReload }) => { const { dispatchToast } = useToastController("toast"); const navigate = useNavigate(); const { planId } = useParams<{ planId: string }>(); @@ -42,7 +42,7 @@ const PlanPanelLeft: React.FC = ({ reloadTasks }) => { const [userInfo, setUserInfo] = useState( getUserInfoGlobal() ); - // Fetch plans + const loadPlansData = useCallback(async (forceRefresh = false) => { try { setPlansLoading(true); @@ -59,6 +59,15 @@ const PlanPanelLeft: React.FC = ({ reloadTasks }) => { } }, []); + useEffect(() => { + if (reloadTasks) { + loadPlansData(); + restReload?.(); + } + }, [reloadTasks, loadPlansData, restReload]); + // Fetch plans + + useEffect(() => { loadPlansData(); }, [loadPlansData]); diff --git a/src/frontend/src/models/planPanelLeft.tsx b/src/frontend/src/models/planPanelLeft.tsx index aa74d48d3..894027a3d 100644 --- a/src/frontend/src/models/planPanelLeft.tsx +++ b/src/frontend/src/models/planPanelLeft.tsx @@ -1,4 +1,5 @@ export interface PlanPanelLefProps { reloadTasks?: boolean; onNewTaskButton: () => void; + restReload?: () => void; } \ No newline at end of file diff --git a/src/frontend/src/pages/PlanPage.tsx b/src/frontend/src/pages/PlanPage.tsx index 0ec44f6b6..84067f239 100644 --- a/src/frontend/src/pages/PlanPage.tsx +++ b/src/frontend/src/pages/PlanPage.tsx @@ -146,7 +146,7 @@ const PlanPage: React.FC = () => { if (approveRejectDetails && Object.keys(approveRejectDetails).length > 0) { await loadPlanData(false); } - setReloadLeftList(total === completed); + setReloadLeftList(true); } catch (error) { dismissToast(id); showToast(`Failed to ${approve ? "approve" : "reject"} step`, "error"); @@ -179,7 +179,7 @@ const PlanPage: React.FC = () => { return ( - + setReloadLeftList(false)}/> {/* 🐙 Only replaces content body, not page shell */}