From 213a4ee552cfd3c5633b8c6739f61168be55e518 Mon Sep 17 00:00:00 2001 From: Xiaohan-Tian <157918347+Xiaohan-Tian@users.noreply.github.com> Date: Mon, 4 May 2026 20:17:05 -0700 Subject: [PATCH] feat: added a warning pop-up when openning projects. --- src/components/Toolbar.tsx | 11 ++++++++++- src/components/common/OpenProjectModal.tsx | 14 +++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/components/Toolbar.tsx b/src/components/Toolbar.tsx index ba68fea..ce3f7d7 100644 --- a/src/components/Toolbar.tsx +++ b/src/components/Toolbar.tsx @@ -205,19 +205,28 @@ const Toolbar: React.FC = () => { }; const handleOpenProjectSelect = async (projectNameToLoad: string) => { + const confirmed = await showConfirm( + 'Open this project? Any unsaved changes in the current project will be lost.' + ); + if (!confirmed) { + return false; + } + try { const storage = KGProjectStorage.getInstance(); const loadedProject = await storage.load(projectNameToLoad); if (!loadedProject) { await showAlert(`Project "${projectNameToLoad}" not found.`); - return; + return false; } await loadProjectFromData(loadedProject, `Project "${projectNameToLoad}"`, projectNameToLoad); + return true; } catch (error) { console.error("Error loading project:", error); await showAlert(`An error occurred while loading the project: ${error}`); + return false; } }; diff --git a/src/components/common/OpenProjectModal.tsx b/src/components/common/OpenProjectModal.tsx index 0308a39..8568ef6 100644 --- a/src/components/common/OpenProjectModal.tsx +++ b/src/components/common/OpenProjectModal.tsx @@ -7,7 +7,7 @@ import { showAlert, showConfirm, showPrompt } from '../../util/dialogUtil'; interface OpenProjectModalProps { onClose: () => void; - onOpenProject: (projectName: string) => Promise; + onOpenProject: (projectName: string) => Promise; currentProjectName: string | null; onCreateNewProject: () => void; } @@ -121,8 +121,10 @@ const OpenProjectModal: React.FC = ({ onClose, onOpenProj }, [projects, filter, sortField, sortDirection]); const handleOpen = async (projectName: string) => { - await onOpenProject(projectName); - startClose(); + const opened = await onOpenProject(projectName); + if (opened) { + startClose(); + } }; const handleDuplicate = async (e: React.MouseEvent, projectName: string) => { @@ -140,8 +142,10 @@ const OpenProjectModal: React.FC = ({ onClose, onOpenProj const storage = KGProjectStorage.getInstance(); const finalName = await storage.resolveUniqueName(trimmed); await storage.duplicate(projectName, finalName); - await onOpenProject(finalName); - startClose(); + const opened = await onOpenProject(finalName); + if (opened) { + startClose(); + } } catch (error) { console.error('Error duplicating project:', error); await showAlert(`Failed to duplicate project: ${error}`);