2
0
Files
bot/apps/builder/layouts/dashboard/TemplatesContent.tsx

82 lines
2.3 KiB
TypeScript
Raw Normal View History

import {
Button,
Divider,
Flex,
SimpleGrid,
Text,
Stack,
useToast,
} from '@chakra-ui/react'
import { CreateTypebotMoreButton } from 'components/templates/ImportFileMenuItem'
import { TemplateButton } from 'components/templates/TemplateButton'
2021-12-29 06:52:48 +01:00
import { useUser } from 'contexts/UserContext'
import { Typebot } from 'models'
2021-12-29 06:52:48 +01:00
import { useRouter } from 'next/router'
import React, { useState } from 'react'
2022-02-24 11:13:19 +01:00
import { createTypebot, importTypebot } from 'services/typebots/typebots'
import { generate } from 'short-uuid'
2021-12-29 06:52:48 +01:00
export type TemplateProps = { name: string; emoji: string; fileName: string }
const templates: TemplateProps[] = [
{ name: 'Lead Generation', emoji: '🤝', fileName: 'lead-gen.json' },
]
2021-12-29 06:52:48 +01:00
export const TemplatesContent = () => {
const { user } = useUser()
const router = useRouter()
const [isLoading, setIsLoading] = useState(false)
const toast = useToast({
position: 'top-right',
status: 'error',
title: 'An error occured',
})
const handleCreateSubmit = async (typebot?: Typebot) => {
2021-12-29 06:52:48 +01:00
if (!user) return
setIsLoading(true)
const folderId = router.query.folderId?.toString() ?? null
const { error, data } = typebot
? await importTypebot({
...typebot,
id: generate(),
ownerId: user.id,
folderId,
})
: await createTypebot({
folderId,
})
2021-12-29 06:52:48 +01:00
if (error) toast({ description: error.message })
if (data) router.push(`/typebots/${data.id}/edit`)
setIsLoading(false)
}
return (
<Flex w="full" justifyContent="center">
<Stack maxW="1000px" flex="1" pt="6" spacing={4}>
<Flex justifyContent="space-between">
<Button
onClick={() => handleCreateSubmit()}
isLoading={isLoading}
colorScheme="blue"
>
Start from scratch
</Button>
<CreateTypebotMoreButton onNewTypebot={handleCreateSubmit} />
</Flex>
<Divider />
<Text>Or start from a template</Text>
<SimpleGrid columns={2} spacing={4}>
{templates.map((template) => (
<TemplateButton
key={template.name}
onClick={handleCreateSubmit}
template={template}
/>
))}
</SimpleGrid>
</Stack>
</Flex>
2021-12-29 06:52:48 +01:00
)
}