From 473d315e0fc3fb7b7a24408480d67e1400a269f1 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Wed, 16 Nov 2022 16:17:42 +0100 Subject: [PATCH] :sparkles: (settings) Add a "disable responses saving" option Closes #164 --- .../settings/components/GeneralSettingsForm.tsx | 16 ++++++++++++++++ .../src/features/settings/settings.spec.ts | 5 +++++ apps/viewer/src/components/TypebotPage.tsx | 10 ++++++++-- packages/models/src/features/typebot/settings.ts | 2 ++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/apps/builder/src/features/settings/components/GeneralSettingsForm.tsx b/apps/builder/src/features/settings/components/GeneralSettingsForm.tsx index 37d769554..3a9dd7ec8 100644 --- a/apps/builder/src/features/settings/components/GeneralSettingsForm.tsx +++ b/apps/builder/src/features/settings/components/GeneralSettingsForm.tsx @@ -46,6 +46,12 @@ export const GeneralSettingsForm = ({ isHideQueryParamsEnabled, }) + const handleDisableResultsSavingChange = (isResultSavingEnabled: boolean) => + onGeneralSettingsChange({ + ...generalSettings, + isResultSavingEnabled: !isResultSavingEnabled, + }) + return ( + ) } diff --git a/apps/builder/src/features/settings/settings.spec.ts b/apps/builder/src/features/settings/settings.spec.ts index dbba57f76..a05c4fe97 100644 --- a/apps/builder/src/features/settings/settings.spec.ts +++ b/apps/builder/src/features/settings/settings.spec.ts @@ -23,6 +23,11 @@ test.describe.parallel('Settings page', () => { ).toBeHidden() await page.click('text="Remember session"') + await expect( + page.locator('input[type="checkbox"] >> nth=-3') + ).toHaveAttribute('checked', '') + + await page.click('text="Disable responses saving"') await expect( page.locator('input[type="checkbox"] >> nth=-1') ).toHaveAttribute('checked', '') diff --git a/apps/viewer/src/components/TypebotPage.tsx b/apps/viewer/src/components/TypebotPage.tsx index 4fcceada4..d7140a740 100644 --- a/apps/viewer/src/components/TypebotPage.tsx +++ b/apps/viewer/src/components/TypebotPage.tsx @@ -99,6 +99,8 @@ export const TypebotPage = ({ const sendNewVariables = (resultId: string) => async (variables: VariableWithValue[]) => { + if (publishedTypebot.settings.general.isResultSavingEnabled === false) + return const { error } = await updateResultQuery(resultId, { variables }) if (error) setError(error) } @@ -107,8 +109,10 @@ export const TypebotPage = ({ answer: Answer & { uploadedFiles: boolean } ) => { if (!resultId) return setError(new Error('Error: result was not created')) - const { error } = await upsertAnswerQuery({ ...answer, resultId }) - if (error) setError(error) + if (publishedTypebot.settings.general.isResultSavingEnabled !== false) { + const { error } = await upsertAnswerQuery({ ...answer, resultId }) + if (error) setError(error) + } if (chatStarted) return updateResultQuery(resultId, { hasStarted: true, @@ -116,6 +120,8 @@ export const TypebotPage = ({ } const handleCompleted = async () => { + if (publishedTypebot.settings.general.isResultSavingEnabled === false) + return if (!resultId) return setError(new Error('Error: result was not created')) const { error } = await updateResultQuery(resultId, { isCompleted: true }) if (error) setError(error) diff --git a/packages/models/src/features/typebot/settings.ts b/packages/models/src/features/typebot/settings.ts index a1f141d48..d46352fe6 100644 --- a/packages/models/src/features/typebot/settings.ts +++ b/packages/models/src/features/typebot/settings.ts @@ -6,6 +6,7 @@ const generalSettings = z.object({ isInputPrefillEnabled: z.boolean().optional(), isHideQueryParamsEnabled: z.boolean().optional(), isNewResultOnRefreshEnabled: z.boolean().optional(), + isResultSavingEnabled: z.boolean().optional(), }) const typingEmulation = z.object({ @@ -34,6 +35,7 @@ export const defaultSettings: Settings = { isNewResultOnRefreshEnabled: false, isInputPrefillEnabled: true, isHideQueryParamsEnabled: true, + isResultSavingEnabled: true, }, typingEmulation: { enabled: true, speed: 300, maxDelay: 1.5 }, metadata: {