Files
bot/apps/builder/src/pages/_app.tsx
Baptiste Arnaud aaa208cef4 🌐 Add pt_BR and more translations (#767)
Original PR: https://github.com/baptisteArno/typebot.io/pull/694

---------

Co-authored-by: Daniel Oliveira <daniel.oliveira@kununu.com>
Co-authored-by: Daniel Oliveira <daniel@headdev.com.br>
2023-09-05 18:15:59 +02:00

81 lines
2.8 KiB
TypeScript

import { useEffect } from 'react'
import { AppProps } from 'next/app'
import { SessionProvider } from 'next-auth/react'
import { ChakraProvider, createStandaloneToast } from '@chakra-ui/react'
import { customTheme } from '@/lib/theme'
import { useRouterProgressBar } from '@/lib/routerProgressBar'
import '@/assets/styles/routerProgressBar.css'
import '@/assets/styles/plate.css'
import '@/assets/styles/resultsTable.css'
import '@/assets/styles/custom.css'
import { UserProvider } from '@/features/account/UserProvider'
import { useRouter } from 'next/router'
import { SupportBubble } from '@/components/SupportBubble'
import { toTitleCase } from '@typebot.io/lib'
import { Plan } from '@typebot.io/prisma'
import { trpc } from '@/lib/trpc'
import { NewVersionPopup } from '@/components/NewVersionPopup'
import { I18nProvider } from '@/locales'
import en from '@/locales/en'
import { TypebotProvider } from '@/features/editor/providers/TypebotProvider'
import { WorkspaceProvider } from '@/features/workspace/WorkspaceProvider'
import { isCloudProdInstance } from '@/helpers/isCloudProdInstance'
import { initPostHogIfEnabled } from '@/features/telemetry/posthog'
initPostHogIfEnabled()
const { ToastContainer, toast } = createStandaloneToast(customTheme)
const App = ({ Component, pageProps }: AppProps) => {
useRouterProgressBar()
const { query, pathname } = useRouter()
useEffect(() => {
if (pathname.endsWith('/edit') || pathname.endsWith('/analytics')) {
document.body.style.overflow = 'hidden'
document.body.classList.add('disable-scroll-x-behavior')
} else {
document.body.style.overflow = 'auto'
document.body.classList.remove('disable-scroll-x-behavior')
}
}, [pathname])
useEffect(() => {
const newPlan = query.stripe?.toString()
if (newPlan === Plan.STARTER || newPlan === Plan.PRO)
toast({
position: 'top-right',
status: 'success',
title: 'Upgrade success!',
description: `Workspace upgraded to ${toTitleCase(newPlan)} 🎉`,
})
}, [query.stripe])
const typebotId = query.typebotId?.toString()
return (
<>
<ToastContainer />
<I18nProvider locale={pageProps.locale} fallbackLocale={en}>
<ChakraProvider theme={customTheme}>
<SessionProvider session={pageProps.session}>
<UserProvider>
<TypebotProvider typebotId={typebotId}>
<WorkspaceProvider typebotId={typebotId}>
<Component {...pageProps} />
{!pathname.endsWith('edit') && isCloudProdInstance() && (
<SupportBubble />
)}
<NewVersionPopup />
</WorkspaceProvider>
</TypebotProvider>
</UserProvider>
</SessionProvider>
</ChakraProvider>
</I18nProvider>
</>
)
}
export default trpc.withTRPC(App)