@ -46,6 +46,12 @@ export const GeneralSettingsForm = ({
|
||||
isHideQueryParamsEnabled,
|
||||
})
|
||||
|
||||
const handleDisableResultsSavingChange = (isResultSavingEnabled: boolean) =>
|
||||
onGeneralSettingsChange({
|
||||
...generalSettings,
|
||||
isResultSavingEnabled: !isResultSavingEnabled,
|
||||
})
|
||||
|
||||
return (
|
||||
<Stack spacing={6}>
|
||||
<ChangePlanModal
|
||||
@ -90,6 +96,16 @@ export const GeneralSettingsForm = ({
|
||||
onCheckChange={handleHideQueryParamsChange}
|
||||
moreInfoContent="If your URL contains query params, they will be automatically hidden when the bot starts."
|
||||
/>
|
||||
<SwitchWithLabel
|
||||
label="Disable responses saving"
|
||||
initialValue={
|
||||
isDefined(generalSettings.isResultSavingEnabled)
|
||||
? !generalSettings.isResultSavingEnabled
|
||||
: false
|
||||
}
|
||||
onCheckChange={handleDisableResultsSavingChange}
|
||||
moreInfoContent="Prevent responses from being saved on Typebot. Chats limit usage will still be tracked."
|
||||
/>
|
||||
</Stack>
|
||||
)
|
||||
}
|
||||
|
@ -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', '')
|
||||
|
@ -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)
|
||||
|
@ -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: {
|
||||
|
Reference in New Issue
Block a user