feat: added a warning pop-up when openning projects.

This commit is contained in:
Xiaohan-Tian
2026-05-04 20:17:05 -07:00
parent 8a6e904ab4
commit 213a4ee552
2 changed files with 19 additions and 6 deletions
+10 -1
View File
@@ -205,19 +205,28 @@ const Toolbar: React.FC = () => {
}; };
const handleOpenProjectSelect = async (projectNameToLoad: string) => { 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 { try {
const storage = KGProjectStorage.getInstance(); const storage = KGProjectStorage.getInstance();
const loadedProject = await storage.load(projectNameToLoad); const loadedProject = await storage.load(projectNameToLoad);
if (!loadedProject) { if (!loadedProject) {
await showAlert(`Project "${projectNameToLoad}" not found.`); await showAlert(`Project "${projectNameToLoad}" not found.`);
return; return false;
} }
await loadProjectFromData(loadedProject, `Project "${projectNameToLoad}"`, projectNameToLoad); await loadProjectFromData(loadedProject, `Project "${projectNameToLoad}"`, projectNameToLoad);
return true;
} catch (error) { } catch (error) {
console.error("Error loading project:", error); console.error("Error loading project:", error);
await showAlert(`An error occurred while loading the project: ${error}`); await showAlert(`An error occurred while loading the project: ${error}`);
return false;
} }
}; };
+7 -3
View File
@@ -7,7 +7,7 @@ import { showAlert, showConfirm, showPrompt } from '../../util/dialogUtil';
interface OpenProjectModalProps { interface OpenProjectModalProps {
onClose: () => void; onClose: () => void;
onOpenProject: (projectName: string) => Promise<void>; onOpenProject: (projectName: string) => Promise<boolean>;
currentProjectName: string | null; currentProjectName: string | null;
onCreateNewProject: () => void; onCreateNewProject: () => void;
} }
@@ -121,8 +121,10 @@ const OpenProjectModal: React.FC<OpenProjectModalProps> = ({ onClose, onOpenProj
}, [projects, filter, sortField, sortDirection]); }, [projects, filter, sortField, sortDirection]);
const handleOpen = async (projectName: string) => { const handleOpen = async (projectName: string) => {
await onOpenProject(projectName); const opened = await onOpenProject(projectName);
if (opened) {
startClose(); startClose();
}
}; };
const handleDuplicate = async (e: React.MouseEvent, projectName: string) => { const handleDuplicate = async (e: React.MouseEvent, projectName: string) => {
@@ -140,8 +142,10 @@ const OpenProjectModal: React.FC<OpenProjectModalProps> = ({ onClose, onOpenProj
const storage = KGProjectStorage.getInstance(); const storage = KGProjectStorage.getInstance();
const finalName = await storage.resolveUniqueName(trimmed); const finalName = await storage.resolveUniqueName(trimmed);
await storage.duplicate(projectName, finalName); await storage.duplicate(projectName, finalName);
await onOpenProject(finalName); const opened = await onOpenProject(finalName);
if (opened) {
startClose(); startClose();
}
} catch (error) { } catch (error) {
console.error('Error duplicating project:', error); console.error('Error duplicating project:', error);
await showAlert(`Failed to duplicate project: ${error}`); await showAlert(`Failed to duplicate project: ${error}`);