2022-04-04 16:18:30 +02:00
|
|
|
import React, { useEffect } from 'react'
|
2021-11-29 15:19:07 +01:00
|
|
|
import { AppProps } from 'next/app'
|
|
|
|
import { SessionProvider } from 'next-auth/react'
|
2022-06-01 12:09:45 +02:00
|
|
|
import { ChakraProvider, createStandaloneToast } from '@chakra-ui/react'
|
2022-03-31 09:49:23 +02:00
|
|
|
import { customTheme } from 'libs/theme'
|
2021-11-29 15:19:07 +01:00
|
|
|
import { useRouterProgressBar } from 'libs/routerProgressBar'
|
2021-12-06 15:48:50 +01:00
|
|
|
import 'assets/styles/routerProgressBar.css'
|
2021-12-22 14:59:07 +01:00
|
|
|
import 'assets/styles/plate.css'
|
2021-12-06 15:48:50 +01:00
|
|
|
import 'focus-visible/dist/focus-visible'
|
2021-12-24 10:08:41 +01:00
|
|
|
import 'assets/styles/submissionsTable.css'
|
2022-01-22 18:24:57 +01:00
|
|
|
import 'assets/styles/codeMirror.css'
|
2022-01-28 09:42:31 +01:00
|
|
|
import 'assets/styles/custom.css'
|
2022-01-23 08:23:05 +01:00
|
|
|
import { UserContext } from 'contexts/UserContext'
|
|
|
|
import { TypebotContext } from 'contexts/TypebotContext'
|
|
|
|
import { useRouter } from 'next/router'
|
2022-02-02 08:05:02 +01:00
|
|
|
import { KBarProvider } from 'kbar'
|
|
|
|
import { actions } from 'libs/kbar'
|
2022-02-12 10:12:43 +01:00
|
|
|
import { enableMocks } from 'mocks'
|
2022-02-14 11:33:38 +01:00
|
|
|
import { SupportBubble } from 'components/shared/SupportBubble'
|
2022-05-13 15:22:44 -07:00
|
|
|
import { WorkspaceContext } from 'contexts/WorkspaceContext'
|
2022-06-01 12:09:45 +02:00
|
|
|
import { toTitleCase } from 'utils'
|
|
|
|
|
|
|
|
const { ToastContainer, toast } = createStandaloneToast(customTheme)
|
2022-02-12 10:12:43 +01:00
|
|
|
|
2022-02-24 11:13:19 +01:00
|
|
|
if (process.env.NEXT_PUBLIC_E2E_TEST === 'enabled') enableMocks()
|
2021-11-29 15:19:07 +01:00
|
|
|
|
2022-03-07 14:35:35 +01:00
|
|
|
const App = ({ Component, pageProps: { session, ...pageProps } }: AppProps) => {
|
2021-11-29 15:19:07 +01:00
|
|
|
useRouterProgressBar()
|
2022-06-01 12:09:45 +02:00
|
|
|
const { query, pathname, isReady } = useRouter()
|
2022-04-04 16:18:30 +02:00
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
pathname.endsWith('/edit')
|
|
|
|
? (document.body.style.overflow = 'hidden')
|
|
|
|
: (document.body.style.overflow = 'auto')
|
|
|
|
}, [pathname])
|
2021-11-29 15:19:07 +01:00
|
|
|
|
2022-06-01 12:09:45 +02:00
|
|
|
useEffect(() => {
|
|
|
|
displayStripeCallbackMessage(query.stripe?.toString(), toast)
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
}, [isReady])
|
|
|
|
|
2022-02-04 19:00:08 +01:00
|
|
|
const typebotId = query.typebotId?.toString()
|
2022-05-14 07:35:03 -07:00
|
|
|
return (
|
2022-06-01 12:09:45 +02:00
|
|
|
<>
|
|
|
|
<ToastContainer />
|
|
|
|
<ChakraProvider theme={customTheme}>
|
|
|
|
<KBarProvider actions={actions}>
|
|
|
|
<SessionProvider session={session}>
|
|
|
|
<UserContext>
|
|
|
|
{typebotId ? (
|
|
|
|
<TypebotContext typebotId={typebotId}>
|
|
|
|
<WorkspaceContext>
|
|
|
|
<Component />
|
|
|
|
<SupportBubble />
|
|
|
|
</WorkspaceContext>
|
|
|
|
</TypebotContext>
|
|
|
|
) : (
|
2022-05-14 07:35:03 -07:00
|
|
|
<WorkspaceContext>
|
2022-06-01 12:09:45 +02:00
|
|
|
<Component {...pageProps} />
|
2022-05-14 07:35:03 -07:00
|
|
|
<SupportBubble />
|
|
|
|
</WorkspaceContext>
|
2022-06-01 12:09:45 +02:00
|
|
|
)}
|
|
|
|
</UserContext>
|
|
|
|
</SessionProvider>
|
|
|
|
</KBarProvider>
|
|
|
|
</ChakraProvider>
|
|
|
|
</>
|
2022-05-14 07:35:03 -07:00
|
|
|
)
|
2021-11-29 15:19:07 +01:00
|
|
|
}
|
|
|
|
|
2022-06-01 12:09:45 +02:00
|
|
|
const displayStripeCallbackMessage = (
|
|
|
|
status: string | undefined,
|
|
|
|
toast: any
|
|
|
|
) => {
|
|
|
|
if (status && ['pro', 'team'].includes(status)) {
|
|
|
|
toast({
|
|
|
|
position: 'bottom-right',
|
|
|
|
status: 'success',
|
|
|
|
title: 'Upgrade success!',
|
|
|
|
description: `Workspace upgraded to ${toTitleCase(status)} 🎉`,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-11-29 15:19:07 +01:00
|
|
|
export default App
|