feat: added a warning pop-up when openning projects.
This commit is contained in:
@@ -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,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);
|
||||||
startClose();
|
if (opened) {
|
||||||
|
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);
|
||||||
startClose();
|
if (opened) {
|
||||||
|
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}`);
|
||||||
|
|||||||
Reference in New Issue
Block a user