From 42d4bc3882fa767b6c4df2f0d7d327e277997256 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Mon, 30 Jan 2023 07:36:35 +0100 Subject: [PATCH] :adhesive_bandage: Still accept old bot property when importing --- apps/builder/src/pages/api/typebots.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/apps/builder/src/pages/api/typebots.ts b/apps/builder/src/pages/api/typebots.ts index 95c78c0a4..e16493bea 100644 --- a/apps/builder/src/pages/api/typebots.ts +++ b/apps/builder/src/pages/api/typebots.ts @@ -10,6 +10,7 @@ import { import { getAuthenticatedUser } from '@/features/auth/api' import { parseNewTypebot } from '@/features/dashboard' import { NewTypebotProps } from '@/features/dashboard/api/parseNewTypebot' +import { omit } from 'utils' const handler = async (req: NextApiRequest, res: NextApiResponse) => { const user = await getAuthenticatedUser(req) @@ -87,13 +88,15 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { select: { plan: true }, }) if (!workspace) return notFound(res, "Couldn't find workspace") - const data = ( + const data = typeof req.body === 'string' ? JSON.parse(req.body) : req.body - ) as NewTypebotProps | Omit + const formattedData = removeOldProperties(data) as + | NewTypebotProps + | Omit const typebot = await prisma.typebot.create({ data: - 'groups' in data - ? data + 'groups' in formattedData + ? formattedData : parseNewTypebot({ ownerAvatarUrl: user.image ?? undefined, isBrandingEnabled: workspace.plan === Plan.FREE, @@ -112,4 +115,11 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { } } +const removeOldProperties = (data: unknown) => { + if (data && typeof data === 'object' && 'publishedTypebotId' in data) { + return omit(data, 'publishedTypebotId') + } + return data +} + export default handler