summaryrefslogtreecommitdiff
path: root/apps/web/src
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src')
-rw-r--r--apps/web/src/app/editor/[project_id]/page.tsx19
1 files changed, 13 insertions, 6 deletions
diff --git a/apps/web/src/app/editor/[project_id]/page.tsx b/apps/web/src/app/editor/[project_id]/page.tsx
index 039e7ca0..ad8561ac 100644
--- a/apps/web/src/app/editor/[project_id]/page.tsx
+++ b/apps/web/src/app/editor/[project_id]/page.tsx
@@ -37,6 +37,7 @@ export default function Editor() {
const params = useParams();
const router = useRouter();
const projectId = params.project_id as string;
+ const handledProjectIds = useRef<Set<string>>(new Set());
const [isOnboardingOpen, setIsOnboardingOpen] = useState(true);
useDisableBrowserZoom();
@@ -44,14 +45,20 @@ export default function Editor() {
useEffect(() => {
const initProject = async () => {
+ if (!projectId) return;
+
+ if (handledProjectIds.current.has(projectId)) {
+ return;
+ }
+
try {
await loadProject(projectId);
- } catch (error: any) {
- // if the project is not found, go back to the projects page,
- // creating a new project here will cause multiple projects to be created
- if (error.message.includes("not found")) {
- router.push("/projects");
- }
+ } catch (error) {
+ handledProjectIds.current.add(projectId);
+
+ const newProjectId = await createNewProject("Untitled Project");
+ router.replace(`/editor/${newProjectId}`);
+ return;
}
};