From 4a0dd0b3dda546b3a472f6f2b8c336daf02cceac Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Thu, 16 Feb 2023 20:43:28 +0100 Subject: [PATCH] :children_crossing: (editor) Improve typebot updatedAt detection Make sure the database is the single source of truth --- .../editor/providers/TypebotProvider/TypebotProvider.tsx | 6 +++++- .../src/features/editor/queries/updateTypebotQuery.ts | 2 +- .../src/features/folders/queries/patchTypebotQuery.ts | 2 +- apps/builder/src/pages/api/typebots/[typebotId].ts | 9 +++++---- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/apps/builder/src/features/editor/providers/TypebotProvider/TypebotProvider.tsx b/apps/builder/src/features/editor/providers/TypebotProvider/TypebotProvider.tsx index 2e6b99444..53c733cb7 100644 --- a/apps/builder/src/features/editor/providers/TypebotProvider/TypebotProvider.tsx +++ b/apps/builder/src/features/editor/providers/TypebotProvider/TypebotProvider.tsx @@ -169,7 +169,11 @@ export const TypebotProvider = ({ if (dequal(omit(typebot, 'updatedAt'), omit(typebotToSave, 'updatedAt'))) return setIsSavingLoading(true) - const { error } = await updateTypebotQuery(typebotToSave.id, typebotToSave) + const { data, error } = await updateTypebotQuery( + typebotToSave.id, + typebotToSave + ) + if (data?.typebot) setLocalTypebot({ ...data.typebot }) setIsSavingLoading(false) if (error) { showToast({ title: error.name, description: error.message }) diff --git a/apps/builder/src/features/editor/queries/updateTypebotQuery.ts b/apps/builder/src/features/editor/queries/updateTypebotQuery.ts index c4999aca1..b6a8600bc 100644 --- a/apps/builder/src/features/editor/queries/updateTypebotQuery.ts +++ b/apps/builder/src/features/editor/queries/updateTypebotQuery.ts @@ -2,7 +2,7 @@ import { Typebot } from 'models' import { sendRequest } from 'utils' export const updateTypebotQuery = async (id: string, typebot: Typebot) => - sendRequest({ + sendRequest<{ typebot: Typebot }>({ url: `/api/typebots/${id}`, method: 'PUT', body: typebot, diff --git a/apps/builder/src/features/folders/queries/patchTypebotQuery.ts b/apps/builder/src/features/folders/queries/patchTypebotQuery.ts index b5af8bd40..05adb7f6a 100644 --- a/apps/builder/src/features/folders/queries/patchTypebotQuery.ts +++ b/apps/builder/src/features/folders/queries/patchTypebotQuery.ts @@ -5,7 +5,7 @@ export const patchTypebotQuery = async ( id: string, typebot: Partial ) => - sendRequest({ + sendRequest<{ typebot: Typebot }>({ url: `/api/typebots/${id}`, method: 'PATCH', body: typebot, diff --git a/apps/builder/src/pages/api/typebots/[typebotId].ts b/apps/builder/src/pages/api/typebots/[typebotId].ts index 533238673..368c4991c 100644 --- a/apps/builder/src/pages/api/typebots/[typebotId].ts +++ b/apps/builder/src/pages/api/typebots/[typebotId].ts @@ -94,11 +94,12 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { resultsTablePreferences: data.resultsTablePreferences ?? undefined, } satisfies Prisma.TypebotUpdateInput - const { count } = await prisma.typebot.updateMany({ + const updatedTypebot = await prisma.typebot.update({ where: { id: typebotId }, data: updates, }) - return res.send({ count }) + + return res.send({ typebot: updatedTypebot }) } if (req.method === 'PATCH') { @@ -109,11 +110,11 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { }) if (!typebot) return res.status(404).send({ message: 'Typebot not found' }) const data = typeof req.body === 'string' ? JSON.parse(req.body) : req.body - const typebots = await prisma.typebot.updateMany({ + const updatedTypebot = await prisma.typebot.update({ where: { id: typebotId }, data, }) - return res.send({ typebots }) + return res.send({ typebot: updatedTypebot }) } return methodNotAllowed(res) }