-
-
{{ project.name }}
-
-
-
@@ -51,6 +100,7 @@
+
+
diff --git a/src/composables/useProjectManager.ts b/src/composables/useProjectManager.ts
index 83285e2..dbb1151 100644
--- a/src/composables/useProjectManager.ts
+++ b/src/composables/useProjectManager.ts
@@ -69,15 +69,29 @@ export const useProjectManager = () => {
try {
const data = await generateProjectJSON();
- if (projectStore.currentProject && projectStore.currentProject.name === name) {
- await projectStore.updateProject(projectStore.currentProject.id, data);
+ if (projectStore.currentProject) {
+ // Update existing project (even if name changed)
+ await projectStore.updateProject(projectStore.currentProject.id, name, data);
} else {
+ // Create new project if none exists
await projectStore.createProject(name, data);
}
} catch (e) {
console.error(e);
alert('Failed to save project');
- throw e; // Re-throw to let caller know
+ throw e;
+ }
+ };
+
+ const saveAsProject = async (name: string) => {
+ try {
+ const data = await generateProjectJSON();
+ // Always create new
+ await projectStore.createProject(name, data);
+ } catch (e) {
+ console.error(e);
+ alert('Failed to save project as new');
+ throw e;
}
};
@@ -90,6 +104,8 @@ export const useProjectManager = () => {
createProject,
openProject,
saveProject,
+ saveAsProject,
closeEditor,
+ loadProjectData,
};
};
diff --git a/src/stores/useProjectStore.ts b/src/stores/useProjectStore.ts
index e6b89c2..1155e9e 100644
--- a/src/stores/useProjectStore.ts
+++ b/src/stores/useProjectStore.ts
@@ -62,14 +62,20 @@ export const useProjectStore = defineStore('project', () => {
}
}
- async function updateProject(id: string, data: any) {
+ async function updateProject(id: string, name: string, data: any) {
if (!authStore.user) return;
isLoading.value = true;
try {
const record = await authStore.pb.collection('projects').update(id, {
+ name,
data,
});
- currentProject.value = { ...currentProject.value!, data: record.data, updated: record.updated };
+ currentProject.value = {
+ ...currentProject.value!,
+ name: record.name,
+ data: record.data,
+ updated: record.updated
+ };
await fetchProjects();
} catch (error) {
console.error('Failed to update project:', error);