summaryrefslogtreecommitdiff
path: root/apps/web/src/app
diff options
context:
space:
mode:
authorMaze <167211895+mazeincoding@users.noreply.github.com>2025-07-16 11:58:56 +0200
committerGitHub <noreply@github.com>2025-07-16 11:58:56 +0200
commit2982293b54129e23d103052bea640ea8a45812e9 (patch)
tree2e29c16b6846d46c6b2c6c3f9a363e0b7493245b /apps/web/src/app
parent83d65bdd15946c4307a38af9f5c43b4c51e906fb (diff)
parent6df492b661539bd447c6855932be6bbfec6f205c (diff)
downloadopencut-2982293b54129e23d103052bea640ea8a45812e9.tar.gz
Merge pull request #287 from simonorzel26/fix/268_multiple-new-projects
fix(web): #268 multiple new projects bug
Diffstat (limited to 'apps/web/src/app')
-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>