summaryrefslogtreecommitdiff
path: root/apps/web/src
diff options
context:
space:
mode:
authorSimon Orzel <simonorzel@gmail.com>2025-07-15 23:25:09 +0200
committerSimon Orzel <simonorzel@gmail.com>2025-07-15 23:25:09 +0200
commit6df492b661539bd447c6855932be6bbfec6f205c (patch)
treef58945b6a5a697cecac89d54797cbe8fd0bec7ff /apps/web/src
parent1f95bb98d6108a5fa059e0f9a08c98e5bdb72c08 (diff)
downloadopencut-6df492b661539bd447c6855932be6bbfec6f205c.tar.gz
fix(web): #268 multiple new projects bug
Diffstat (limited to 'apps/web/src')
-rw-r--r--apps/web/src/app/editor/[project_id]/page.tsx39
1 files changed, 26 insertions, 13 deletions
diff --git a/apps/web/src/app/editor/[project_id]/page.tsx b/apps/web/src/app/editor/[project_id]/page.tsx
index 315e0764..65667106 100644
--- a/apps/web/src/app/editor/[project_id]/page.tsx
+++ b/apps/web/src/app/editor/[project_id]/page.tsx
@@ -1,7 +1,7 @@
"use client";
-import { useEffect } from "react";
-import { useParams } from "next/navigation";
+import { useEffect, useRef } from "react";
+import { useParams, useRouter } from "next/navigation";
import {
ResizablePanelGroup,
ResizablePanel,
@@ -33,25 +33,38 @@ export default function Editor() {
const { activeProject, loadProject, createNewProject } = useProjectStore();
const params = useParams();
+ const router = useRouter();
const projectId = params.project_id as string;
+ const handledProjectIds = useRef<Set<string>>(new Set());
usePlaybackControls();
useEffect(() => {
- const initializeProject = async () => {
- if (projectId && (!activeProject || activeProject.id !== projectId)) {
- try {
- await loadProject(projectId);
- } catch (error) {
- console.error("Failed to load project:", error);
- // If project doesn't exist, create a new one
- await createNewProject("Untitled Project");
- }
+ const initProject = async () => {
+
+ if (!projectId) return;
+
+ if (activeProject?.id === projectId) {
+ return;
+ }
+
+ if (handledProjectIds.current.has(projectId)) {
+ return;
+ }
+
+ try {
+ await loadProject(projectId);
+ } catch (error) {
+ handledProjectIds.current.add(projectId);
+
+ const newProjectId = await createNewProject("Untitled Project");
+ router.replace(`/editor/${newProjectId}`);
+ return;
}
};
- initializeProject();
- }, [projectId, activeProject, loadProject, createNewProject]);
+ initProject();
+ }, [projectId, activeProject?.id, loadProject, createNewProject, router]);
return (
<EditorProvider>