@ -46,6 +46,12 @@ export const GeneralSettingsForm = ({
|
|||||||
isHideQueryParamsEnabled,
|
isHideQueryParamsEnabled,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const handleDisableResultsSavingChange = (isResultSavingEnabled: boolean) =>
|
||||||
|
onGeneralSettingsChange({
|
||||||
|
...generalSettings,
|
||||||
|
isResultSavingEnabled: !isResultSavingEnabled,
|
||||||
|
})
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack spacing={6}>
|
<Stack spacing={6}>
|
||||||
<ChangePlanModal
|
<ChangePlanModal
|
||||||
@ -90,6 +96,16 @@ export const GeneralSettingsForm = ({
|
|||||||
onCheckChange={handleHideQueryParamsChange}
|
onCheckChange={handleHideQueryParamsChange}
|
||||||
moreInfoContent="If your URL contains query params, they will be automatically hidden when the bot starts."
|
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>
|
</Stack>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,11 @@ test.describe.parallel('Settings page', () => {
|
|||||||
).toBeHidden()
|
).toBeHidden()
|
||||||
|
|
||||||
await page.click('text="Remember session"')
|
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(
|
await expect(
|
||||||
page.locator('input[type="checkbox"] >> nth=-1')
|
page.locator('input[type="checkbox"] >> nth=-1')
|
||||||
).toHaveAttribute('checked', '')
|
).toHaveAttribute('checked', '')
|
||||||
|
@ -99,6 +99,8 @@ export const TypebotPage = ({
|
|||||||
|
|
||||||
const sendNewVariables =
|
const sendNewVariables =
|
||||||
(resultId: string) => async (variables: VariableWithValue[]) => {
|
(resultId: string) => async (variables: VariableWithValue[]) => {
|
||||||
|
if (publishedTypebot.settings.general.isResultSavingEnabled === false)
|
||||||
|
return
|
||||||
const { error } = await updateResultQuery(resultId, { variables })
|
const { error } = await updateResultQuery(resultId, { variables })
|
||||||
if (error) setError(error)
|
if (error) setError(error)
|
||||||
}
|
}
|
||||||
@ -107,8 +109,10 @@ export const TypebotPage = ({
|
|||||||
answer: Answer & { uploadedFiles: boolean }
|
answer: Answer & { uploadedFiles: boolean }
|
||||||
) => {
|
) => {
|
||||||
if (!resultId) return setError(new Error('Error: result was not created'))
|
if (!resultId) return setError(new Error('Error: result was not created'))
|
||||||
|
if (publishedTypebot.settings.general.isResultSavingEnabled !== false) {
|
||||||
const { error } = await upsertAnswerQuery({ ...answer, resultId })
|
const { error } = await upsertAnswerQuery({ ...answer, resultId })
|
||||||
if (error) setError(error)
|
if (error) setError(error)
|
||||||
|
}
|
||||||
if (chatStarted) return
|
if (chatStarted) return
|
||||||
updateResultQuery(resultId, {
|
updateResultQuery(resultId, {
|
||||||
hasStarted: true,
|
hasStarted: true,
|
||||||
@ -116,6 +120,8 @@ export const TypebotPage = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleCompleted = async () => {
|
const handleCompleted = async () => {
|
||||||
|
if (publishedTypebot.settings.general.isResultSavingEnabled === false)
|
||||||
|
return
|
||||||
if (!resultId) return setError(new Error('Error: result was not created'))
|
if (!resultId) return setError(new Error('Error: result was not created'))
|
||||||
const { error } = await updateResultQuery(resultId, { isCompleted: true })
|
const { error } = await updateResultQuery(resultId, { isCompleted: true })
|
||||||
if (error) setError(error)
|
if (error) setError(error)
|
||||||
|
@ -6,6 +6,7 @@ const generalSettings = z.object({
|
|||||||
isInputPrefillEnabled: z.boolean().optional(),
|
isInputPrefillEnabled: z.boolean().optional(),
|
||||||
isHideQueryParamsEnabled: z.boolean().optional(),
|
isHideQueryParamsEnabled: z.boolean().optional(),
|
||||||
isNewResultOnRefreshEnabled: z.boolean().optional(),
|
isNewResultOnRefreshEnabled: z.boolean().optional(),
|
||||||
|
isResultSavingEnabled: z.boolean().optional(),
|
||||||
})
|
})
|
||||||
|
|
||||||
const typingEmulation = z.object({
|
const typingEmulation = z.object({
|
||||||
@ -34,6 +35,7 @@ export const defaultSettings: Settings = {
|
|||||||
isNewResultOnRefreshEnabled: false,
|
isNewResultOnRefreshEnabled: false,
|
||||||
isInputPrefillEnabled: true,
|
isInputPrefillEnabled: true,
|
||||||
isHideQueryParamsEnabled: true,
|
isHideQueryParamsEnabled: true,
|
||||||
|
isResultSavingEnabled: true,
|
||||||
},
|
},
|
||||||
typingEmulation: { enabled: true, speed: 300, maxDelay: 1.5 },
|
typingEmulation: { enabled: true, speed: 300, maxDelay: 1.5 },
|
||||||
metadata: {
|
metadata: {
|
||||||
|
Reference in New Issue
Block a user