diff --git a/apps/builder/src/features/folders/api/getFolder.ts b/apps/builder/src/features/folders/api/getFolder.ts index aad43238c..70615594c 100644 --- a/apps/builder/src/features/folders/api/getFolder.ts +++ b/apps/builder/src/features/folders/api/getFolder.ts @@ -46,6 +46,7 @@ export const getFolder = authenticatedProcedure const folder = await prisma.dashboardFolder.findUnique({ where: { id: folderId, + workspaceId, }, }) diff --git a/apps/builder/src/features/folders/components/FolderPage.tsx b/apps/builder/src/features/folders/components/FolderPage.tsx index 9c4b301e0..84f414850 100644 --- a/apps/builder/src/features/folders/components/FolderPage.tsx +++ b/apps/builder/src/features/folders/components/FolderPage.tsx @@ -23,9 +23,11 @@ export const FolderPage = () => { }, { enabled: !!workspace && !!router.query.id, + retry: 0, onError: (error) => { + if (error.data?.httpStatus === 404) router.replace('/typebots') showToast({ - description: error.message, + title: 'Folder not found', }) }, } diff --git a/apps/builder/src/features/typebot/api/createTypebot.ts b/apps/builder/src/features/typebot/api/createTypebot.ts index 41ff49f15..07d90d176 100644 --- a/apps/builder/src/features/typebot/api/createTypebot.ts +++ b/apps/builder/src/features/typebot/api/createTypebot.ts @@ -80,6 +80,15 @@ export const createTypebot = authenticatedProcedure message: 'Public id not available', }) + if (typebot.folderId) { + const existingFolder = await prisma.dashboardFolder.findUnique({ + where: { + id: typebot.folderId, + }, + }) + if (!existingFolder) typebot.folderId = null + } + const newTypebot = await prisma.typebot.create({ data: { version: '6', diff --git a/apps/builder/src/features/workspace/WorkspaceProvider.tsx b/apps/builder/src/features/workspace/WorkspaceProvider.tsx index b31759f2f..00a2ad2ab 100644 --- a/apps/builder/src/features/workspace/WorkspaceProvider.tsx +++ b/apps/builder/src/features/workspace/WorkspaceProvider.tsx @@ -50,7 +50,7 @@ export const WorkspaceProvider = ({ typebotId, children, }: WorkspaceContextProps) => { - const { pathname, query, push, isReady: isRouterReady } = useRouter() + const { pathname, query, push, isReady: isRouterReady, replace } = useRouter() const { user } = useUser() const userId = user?.id const [workspaceId, setWorkspaceId] = useState() @@ -163,6 +163,7 @@ export const WorkspaceProvider = ({ const switchWorkspace = (workspaceId: string) => { setWorkspaceIdInLocalStorage(workspaceId) setWorkspaceId(workspaceId) + replace('/typebots') } const createWorkspace = async (userFullName?: string) => { diff --git a/apps/docs/openapi/builder.json b/apps/docs/openapi/builder.json index b45282bb3..e92bd4b9c 100644 --- a/apps/docs/openapi/builder.json +++ b/apps/docs/openapi/builder.json @@ -16024,6 +16024,17 @@ }, "skip": { "type": "string" + }, + "success": { + "type": "object", + "properties": { + "single": { + "type": "string" + }, + "multiple": { + "type": "string" + } + } } } }, @@ -18711,6 +18722,17 @@ }, "skip": { "type": "string" + }, + "success": { + "type": "object", + "properties": { + "single": { + "type": "string" + }, + "multiple": { + "type": "string" + } + } } } }, diff --git a/apps/docs/openapi/viewer.json b/apps/docs/openapi/viewer.json index 35eeda806..cc4cc8562 100644 --- a/apps/docs/openapi/viewer.json +++ b/apps/docs/openapi/viewer.json @@ -6309,6 +6309,17 @@ }, "skip": { "type": "string" + }, + "success": { + "type": "object", + "properties": { + "single": { + "type": "string" + }, + "multiple": { + "type": "string" + } + } } } }, @@ -9421,6 +9432,17 @@ }, "skip": { "type": "string" + }, + "success": { + "type": "object", + "properties": { + "single": { + "type": "string" + }, + "multiple": { + "type": "string" + } + } } } },