Skip to content

Commit

Permalink
🚸 Improve parsing preprocessing on typebots
Browse files Browse the repository at this point in the history
  • Loading branch information
baptisteArno committed Aug 23, 2023
1 parent fe54888 commit 0acede9
Show file tree
Hide file tree
Showing 24 changed files with 132 additions and 584 deletions.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export const getLinkedTypebots = authenticatedProcedure
.output(
z.object({
typebots: z.array(
typebotSchema.pick({
typebotSchema._def.schema.pick({
id: true,
groups: true,
variables: true,
Expand Down Expand Up @@ -58,7 +58,7 @@ export const getLinkedTypebots = authenticatedProcedure
throw new TRPCError({ code: 'NOT_FOUND', message: 'No typebot found' })

const linkedTypebotIds =
typebotSchema.shape.groups
typebotSchema._def.schema.shape.groups
.parse(typebot.groups)
.flatMap((group) => group.blocks)
.reduce<string[]>(
Expand Down Expand Up @@ -102,8 +102,10 @@ export const getLinkedTypebots = authenticatedProcedure
})
.map((typebot) => ({
...typebot,
groups: typebotSchema.shape.groups.parse(typebot.groups),
variables: typebotSchema.shape.variables.parse(typebot.variables),
groups: typebotSchema._def.schema.shape.groups.parse(typebot.groups),
variables: typebotSchema._def.schema.shape.variables.parse(
typebot.variables
),
}))

return {
Expand Down
62 changes: 0 additions & 62 deletions apps/builder/src/features/dashboard/api/parseNewTypebot.ts

This file was deleted.

4 changes: 1 addition & 3 deletions apps/builder/src/features/publish/publish.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,7 @@ test('should not be able to submit taken url ID', async ({ page }) => {
await page.getByRole('textbox').press('Enter')
await expect(
page
.getByText(
'Should contain only contain letters, numbers. Words can be separated by dashes.'
)
.getByText('Can only contain lowercase letters, numbers and dashes.')
.nth(0)
).toBeVisible()
await page.getByText(`${typebotId}-public`).click()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { parseInvalidTypebot } from '@/features/typebot/helpers/parseInvalidTypebot'
import { useToast } from '@/hooks/useToast'
import { Button, ButtonProps, chakra } from '@chakra-ui/react'
import { Typebot, typebotCreateSchema } from '@typebot.io/schemas'
Expand All @@ -19,9 +18,7 @@ export const ImportTypebotFromFileButton = ({
const file = e.target.files[0]
const fileContent = await readFile(file)
try {
const typebot = typebotCreateSchema.parse(
parseInvalidTypebot(JSON.parse(fileContent))
)
const typebot = typebotCreateSchema.parse(JSON.parse(fileContent))
onNewTypebot(typebot as Typebot)
} catch (err) {
console.error(err)
Expand Down
4 changes: 1 addition & 3 deletions apps/builder/src/features/typebot/api/getPublishedTypebot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import { TRPCError } from '@trpc/server'
import { publicTypebotSchema } from '@typebot.io/schemas'
import { z } from 'zod'
import { isReadTypebotForbidden } from '../helpers/isReadTypebotForbidden'
import { parseInvalidTypebot } from '../helpers/parseInvalidTypebot'
import { PublicTypebot } from '@typebot.io/schemas'

export const getPublishedTypebot = authenticatedProcedure
.meta({
Expand Down Expand Up @@ -50,7 +48,7 @@ export const getPublishedTypebot = authenticatedProcedure

try {
const parsedTypebot = publicTypebotSchema.parse(
parseInvalidTypebot(existingTypebot.publishedTypebot as PublicTypebot)
existingTypebot.publishedTypebot
)

return {
Expand Down
16 changes: 5 additions & 11 deletions apps/builder/src/features/typebot/api/getTypebot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ import { TRPCError } from '@trpc/server'
import { Typebot, typebotSchema } from '@typebot.io/schemas'
import { z } from 'zod'
import { isReadTypebotForbidden } from '../helpers/isReadTypebotForbidden'
import { omit } from '@typebot.io/lib'
import { Typebot as TypebotFromDb } from '@typebot.io/prisma'
import { migrateTypebotFromV3ToV4 } from '@typebot.io/lib/migrations/migrateTypebotFromV3ToV4'
import { parseInvalidTypebot } from '../helpers/parseInvalidTypebot'

export const getTypebot = authenticatedProcedure
.meta({
Expand Down Expand Up @@ -46,8 +43,8 @@ export const getTypebot = authenticatedProcedure
throw new TRPCError({ code: 'NOT_FOUND', message: 'Typebot not found' })

try {
const parsedTypebot = await parseTypebot(
omit(existingTypebot, 'collaborators')
const parsedTypebot = await migrateTypebot(
typebotSchema.parse(existingTypebot)
)

return {
Expand All @@ -66,10 +63,7 @@ export const getTypebot = authenticatedProcedure
}
})

const parseTypebot = async (typebot: TypebotFromDb): Promise<Typebot> => {
const parsedTypebot = typebotSchema.parse(
typebot.version !== '5' ? parseInvalidTypebot(typebot as Typebot) : typebot
)
if (['4', '5'].includes(parsedTypebot.version ?? '')) return parsedTypebot
return migrateTypebotFromV3ToV4(prisma)(parsedTypebot)
const migrateTypebot = async (typebot: Typebot): Promise<Typebot> => {
if (['4', '5'].includes(typebot.version ?? '')) return typebot
return migrateTypebotFromV3ToV4(prisma)(typebot)
}
2 changes: 1 addition & 1 deletion apps/builder/src/features/typebot/api/listTypebots.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export const listTypebots = authenticatedProcedure
.output(
z.object({
typebots: z.array(
typebotSchema
typebotSchema._def.schema
.pick({
name: true,
icon: true,
Expand Down
32 changes: 22 additions & 10 deletions apps/builder/src/features/typebot/api/publishTypebot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,31 +49,43 @@ export const publishTypebot = authenticatedProcedure
},
data: {
version: existingTypebot.version,
edges: typebotSchema.shape.edges.parse(existingTypebot.edges),
groups: typebotSchema.shape.groups.parse(existingTypebot.groups),
settings: typebotSchema.shape.settings.parse(
edges: typebotSchema._def.schema.shape.edges.parse(
existingTypebot.edges
),
groups: typebotSchema._def.schema.shape.groups.parse(
existingTypebot.groups
),
settings: typebotSchema._def.schema.shape.settings.parse(
existingTypebot.settings
),
variables: typebotSchema.shape.variables.parse(
variables: typebotSchema._def.schema.shape.variables.parse(
existingTypebot.variables
),
theme: typebotSchema.shape.theme.parse(existingTypebot.theme),
theme: typebotSchema._def.schema.shape.theme.parse(
existingTypebot.theme
),
},
})
else
await prisma.publicTypebot.createMany({
data: {
version: existingTypebot.version,
typebotId: existingTypebot.id,
edges: typebotSchema.shape.edges.parse(existingTypebot.edges),
groups: typebotSchema.shape.groups.parse(existingTypebot.groups),
settings: typebotSchema.shape.settings.parse(
edges: typebotSchema._def.schema.shape.edges.parse(
existingTypebot.edges
),
groups: typebotSchema._def.schema.shape.groups.parse(
existingTypebot.groups
),
settings: typebotSchema._def.schema.shape.settings.parse(
existingTypebot.settings
),
variables: typebotSchema.shape.variables.parse(
variables: typebotSchema._def.schema.shape.variables.parse(
existingTypebot.variables
),
theme: typebotSchema.shape.theme.parse(existingTypebot.theme),
theme: typebotSchema._def.schema.shape.theme.parse(
existingTypebot.theme
),
},
})

Expand Down
2 changes: 1 addition & 1 deletion apps/builder/src/features/typebot/api/updateTypebot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const updateTypebot = authenticatedProcedure
z.object({
typebotId: z.string(),
typebot: typebotCreateSchema.merge(
typebotSchema
typebotSchema._def.schema
.pick({
isClosed: true,
})
Expand Down
12 changes: 0 additions & 12 deletions apps/builder/src/features/typebot/helpers/parseInvalidTypebot.ts

This file was deleted.

62 changes: 0 additions & 62 deletions apps/builder/src/pages/api/customDomains.ts

This file was deleted.

Loading

4 comments on commit 0acede9

@vercel
Copy link

@vercel vercel bot commented on 0acede9 Aug 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

viewer-v2 – ./apps/viewer

survey.digienge.io
tribe.ezbooking.ai
w.onewebcenter.com
zap.techadviser.in
ai.digitaldaftar.in
app.danielnalex.com
ask.realversity.org
blazecontrol.com.br
bot.boston-voip.com
quest.wpwakanda.com
se.onewebcenter.com
secretespiao.online
start.belenmotz.com
support.wawplus.com
survey1.digienge.io
surveys.essiell.com
test.botscientis.us
test.getreview.help
test.reventepro.com
typebot.stillio.app
typebot.stillio.com
vg.onewebcenter.com
wa.onewebcenter.com
web.draleticiah.com
whatsdigital.online
wordsandimagery.com
88584434.therpm.club
92109660.therpm.club
app.horadelucrar.com
assistent.m-vogel.de
ativandograna.online
bium.gratirabbit.com
bot.ansuraniphone.my
bot.barrettamario.it
bot.buenanoticia.fun
bot.conhecaojogo.com
bot.cotemeuplano.com
bot.gameincrivel.com
bot.grupodojo.com.br
bot.jogoquelucra.com
bot.leadbooster.help
bot.mycompay.reviews
bot.socialcliques.me
cha.onewebcenter.com
chat.gnipharmahq.com
chat.hayurihijab.com
chat.jottagreens.com
chatbee.agfunnel.com
click.sevenoways.com
connect.growthguy.in
detetivepatricia.com
drapamela.gikpro.com
drgisellegarcia.site
forms.bonanza.design
hello.advergreen.com
infomakeracademy.com
kuiz.sistemniaga.com
leoborges-app.online
viewer-v2-typebot-io.vercel.app
mdb.assessoria.rodrigo.progenbr.com
register.thailandmicespecialist.com
mdb.assessoria.desideri.progenbr.com
mdb.assessoria.fernanda.progenbr.com
mdb.assessoria.jbatista.progenbr.com
mdb.assessoria.mauricio.progenbr.com
mdb.evento.autocadastro.progenbr.com
form.shopmercedesbenzsouthorlando.com
mdb.evento.equipeinterna.progenbr.com
bot.studiotecnicoimmobiliaremerelli.it
mdb.assessoria.boaventura.progenbr.com
mdb.assessoria.jtrebesqui.progenbr.com
pesquisa.escolamodacomproposito.com.br
anamnese.clinicaramosodontologia.com.br
gabinete.baleia.formulario.progenbr.com
mdb.assessoria.carreirinha.progenbr.com
chrome-os-inquiry-system.itschromeos.com
mdb.assessoria.paulomarques.progenbr.com
viewer-v2-git-main-typebot-io.vercel.app
main-menu-for-itschromeos.itschromeos.com
mdb.assessoria.qrcode.ademir.progenbr.com
mdb.assessoria.qrcode.arthur.progenbr.com
mdb.assessoria.qrcode.danilo.progenbr.com
mdb.assessoria.qrcode.marcao.progenbr.com
mdb.assessoria.qrcode.marcio.progenbr.com
mdb.assessoria.qrcode.aloisio.progenbr.com
mdb.assessoria.qrcode.girotto.progenbr.com
mdb.assessoria.qrcode.marinho.progenbr.com
mdb.assessoria.qrcode.rodrigo.progenbr.com
mdb.assessoria.carlosalexandre.progenbr.com
mdb.assessoria.qrcode.desideri.progenbr.com
mdb.assessoria.qrcode.fernanda.progenbr.com
mdb.assessoria.qrcode.jbatista.progenbr.com
mdb.assessoria.qrcode.mauricio.progenbr.com
mdb.assessoria.fernanda.regional.progenbr.com
mdb.assessoria.qrcode.boaventura.progenbr.com
mdb.assessoria.qrcode.jtrebesqui.progenbr.com
mdb.assessoria.qrcode.carreirinha.progenbr.com
mdb.assessoria.qrcode.paulomarques.progenbr.com
mdb.assessoria.qrcode.carlosalexandre.progenbr.com
mdb.assessoria.qrcode.fernanda.regional.progenbr.com

@vercel
Copy link

@vercel vercel bot commented on 0acede9 Aug 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

docs – ./apps/docs

docs-typebot-io.vercel.app
docs.typebot.io
docs-git-main-typebot-io.vercel.app

@vercel
Copy link

@vercel vercel bot commented on 0acede9 Aug 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vercel
Copy link

@vercel vercel bot commented on 0acede9 Aug 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

builder-v2 – ./apps/builder

builder-v2-git-main-typebot-io.vercel.app
app.typebot.io
builder-v2-typebot-io.vercel.app

Please sign in to comment.