diff --git a/src/components/Plans.tsx b/src/components/Plans.tsx index 1206ad3..9d17b23 100644 --- a/src/components/Plans.tsx +++ b/src/components/Plans.tsx @@ -203,10 +203,44 @@ const Plans: React.FC = ({ lang }) => { setIsEditing(true); }; + // Persist draft to localStorage + useEffect(() => { + if (isEditing) { + const draft = { + editId, + name, + description, + steps + }; + localStorage.setItem('gymflow_plan_draft', JSON.stringify(draft)); + } + }, [isEditing, editId, name, description, steps]); + + // Restore draft on mount + useEffect(() => { + const draftJson = localStorage.getItem('gymflow_plan_draft'); + if (draftJson) { + try { + const draft = JSON.parse(draftJson); + // Only restore if we have valid data + if (draft.editId) { + setEditId(draft.editId); + setName(draft.name || ''); + setDescription(draft.description || ''); + setSteps(draft.steps || []); + setIsEditing(true); + } + } catch (e) { + console.error("Failed to parse plan draft", e); + } + } + }, []); + const handleSave = async () => { if (!name.trim() || !editId) return; const newPlan: WorkoutPlan = { id: editId, name, description, steps }; await savePlan(newPlan); + localStorage.removeItem('gymflow_plan_draft'); setIsEditing(false); }; @@ -270,7 +304,12 @@ const Plans: React.FC = ({ lang }) => { return (
-

{t('plan_editor', lang)}