2
0

🐛 Fix legacy publicId format validation

This commit is contained in:
Baptiste Arnaud
2023-08-22 11:43:35 +02:00
parent 83352d77f5
commit fe54888350
4 changed files with 20 additions and 8 deletions

View File

@ -58,8 +58,7 @@ export const SharePage = () => {
if (!isCorrectlyFormatted) {
showToast({
description:
'Should contain only contain letters, numbers. Words can be separated by dashes.',
description: 'Can only contain lowercase letters, numbers and dashes.',
})
return false
}

View File

@ -139,7 +139,12 @@ export const updateTypebot = authenticatedProcedure
typebot.resultsTablePreferences === null
? Prisma.DbNull
: typebot.resultsTablePreferences,
publicId: typebot.publicId === null ? null : typebot.publicId,
publicId:
typebot.publicId === null
? null
: typebot.publicId && isPublicIdValid(typebot.publicId)
? typebot.publicId
: undefined,
customDomain:
typebot.customDomain === null ? null : typebot.customDomain,
isClosed: typebot.isClosed,
@ -149,3 +154,6 @@ export const updateTypebot = authenticatedProcedure
return { typebot: typebotSchema.parse(newTypebot) }
}
)
const isPublicIdValid = (str: string) =>
/^([a-z0-9]+-[a-z0-9]*)*$/.test(str) || /^[a-z0-9]*$/.test(str)

View File

@ -1,7 +1,12 @@
import { isNotEmpty } from '@typebot.io/lib'
export const toKebabCase = (value: string) => {
const matched = value.match(
/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g
)
if (!matched) return ''
return matched.map((x) => x.toLowerCase()).join('-')
return matched
.filter(isNotEmpty)
.map((x) => x.toLowerCase())
.join('-')
}