2
0

feat(settings): ️ Can disable query params auto hide

This commit is contained in:
Baptiste Arnaud
2022-05-14 11:53:59 -07:00
parent 731e646377
commit 42721865c5
5 changed files with 66 additions and 2 deletions

View File

@ -47,6 +47,12 @@ export const GeneralSettingsForm = ({
isInputPrefillEnabled, isInputPrefillEnabled,
}) })
const handleHideQueryParamsChange = (isHideQueryParamsEnabled: boolean) =>
onGeneralSettingsChange({
...generalSettings,
isHideQueryParamsEnabled,
})
return ( return (
<Stack spacing={6}> <Stack spacing={6}>
<UpgradeModal isOpen={isOpen} onClose={onClose} /> <UpgradeModal isOpen={isOpen} onClose={onClose} />
@ -78,6 +84,13 @@ export const GeneralSettingsForm = ({
initialValue={generalSettings.isNewResultOnRefreshEnabled ?? false} initialValue={generalSettings.isNewResultOnRefreshEnabled ?? false}
onCheckChange={handleNewResultOnRefreshChange} onCheckChange={handleNewResultOnRefreshChange}
/> />
<SwitchWithLabel
id="query-params"
label="Hide query params on bot start"
initialValue={generalSettings.isHideQueryParamsEnabled ?? true}
onCheckChange={handleHideQueryParamsChange}
moreInfoContent="If your URL contains query params, they will be automatically hidden when the bot starts."
/>
</Stack> </Stack>
) )
} }

View File

@ -53,7 +53,11 @@ export const TypebotPage = ({
const clearQueryParams = () => { const clearQueryParams = () => {
const hasQueryParams = asPath.includes('?') const hasQueryParams = asPath.includes('?')
if (hasQueryParams) push(asPath.split('?')[0], undefined, { shallow: true }) if (
hasQueryParams &&
typebot.settings.general.isHideQueryParamsEnabled !== false
)
push(asPath.split('?')[0], undefined, { shallow: true })
} }
const initializeResult = async () => { const initializeResult = async () => {

View File

@ -74,6 +74,19 @@ export const createTypebots = async (partialTypebots: Partial<Typebot>[]) => {
}) })
} }
export const updateTypebot = async (
partialTypebot: Partial<Typebot> & { id: string }
) => {
await prisma.typebot.updateMany({
where: { id: partialTypebot.id },
data: partialTypebot,
})
return prisma.publicTypebot.updateMany({
where: { typebotId: partialTypebot.id },
data: partialTypebot,
})
}
const parseTypebotToPublicTypebot = ( const parseTypebotToPublicTypebot = (
id: string, id: string,
typebot: Typebot typebot: Typebot

View File

@ -1,5 +1,9 @@
import test, { expect } from '@playwright/test' import test, { expect } from '@playwright/test'
import { createTypebots, parseDefaultBlockWithStep } from '../services/database' import {
createTypebots,
parseDefaultBlockWithStep,
updateTypebot,
} from '../services/database'
import cuid from 'cuid' import cuid from 'cuid'
import { defaultSettings, defaultTextInputOptions, InputStepType } from 'models' import { defaultSettings, defaultTextInputOptions, InputStepType } from 'models'
@ -71,3 +75,31 @@ test.describe('Create result on page refresh enabled', () => {
expect(resultId).toBe(null) expect(resultId).toBe(null)
}) })
}) })
test('Hide query params', async ({ page }) => {
const typebotId = cuid()
await createTypebots([
{
id: typebotId,
...parseDefaultBlockWithStep({
type: InputStepType.TEXT,
options: defaultTextInputOptions,
}),
},
])
await page.goto(`/${typebotId}-public?Name=John`)
await page.waitForTimeout(1000)
expect(page.url()).toEqual(`http://localhost:3001/${typebotId}-public`)
await updateTypebot({
id: typebotId,
settings: {
...defaultSettings,
general: { ...defaultSettings.general, isHideQueryParamsEnabled: false },
},
})
await page.goto(`/${typebotId}-public?Name=John`)
await page.waitForTimeout(1000)
expect(page.url()).toEqual(
`http://localhost:3001/${typebotId}-public?Name=John`
)
})

View File

@ -8,6 +8,7 @@ export type GeneralSettings = {
isBrandingEnabled: boolean isBrandingEnabled: boolean
isNewResultOnRefreshEnabled?: boolean isNewResultOnRefreshEnabled?: boolean
isInputPrefillEnabled?: boolean isInputPrefillEnabled?: boolean
isHideQueryParamsEnabled?: boolean
} }
export type TypingEmulation = { export type TypingEmulation = {
@ -29,6 +30,7 @@ export const defaultSettings: Settings = {
isBrandingEnabled: true, isBrandingEnabled: true,
isNewResultOnRefreshEnabled: false, isNewResultOnRefreshEnabled: false,
isInputPrefillEnabled: true, isInputPrefillEnabled: true,
isHideQueryParamsEnabled: true,
}, },
typingEmulation: { enabled: true, speed: 300, maxDelay: 1.5 }, typingEmulation: { enabled: true, speed: 300, maxDelay: 1.5 },
metadata: { metadata: {