Make the captcha provider conditional on the envar for self hosters

This commit is contained in:
Jackson Harper
2024-04-30 15:21:30 +08:00
parent 44d3edc794
commit fd2e1049ed

View File

@ -4,7 +4,7 @@ import '../styles/articleInnerStyling.css'
import type { AppProps } from 'next/app'
import { IdProvider } from '@radix-ui/react-id'
import { NextRouter, useRouter } from 'next/router'
import { useEffect, useState } from 'react'
import { ReactNode, useEffect, useState } from 'react'
import TopBarProgress from 'react-topbar-progress-indicator'
import {
KBarProvider,
@ -23,7 +23,6 @@ import { updateTheme } from '../lib/themeUpdater'
import { ThemeId } from '../components/tokens/stitches.config'
import { posthog } from 'posthog-js'
import { GoogleReCaptchaProvider } from '@google-recaptcha/react'
import { Recaptcha } from '../components/elements/Recaptcha'
TopBarProgress.config({
barColors: {
@ -67,6 +66,24 @@ const generateActions = (router: NextRouter) => {
return defaultActions
}
const ConditionalCaptchaProvider = (props: {
children: ReactNode
}): JSX.Element => {
if (process.env.NEXT_PUBLIC_RECAPTCHA_CHALLENGE_SITE_KEY) {
return (
<GoogleReCaptchaProvider
type="v2-checkbox"
isEnterprise={true}
host="recaptcha.net"
siteKey={process.env.NEXT_PUBLIC_RECAPTCHA_CHALLENGE_SITE_KEY ?? ''}
>
{props.children}
</GoogleReCaptchaProvider>
)
}
return <>props.children</>
}
export function OmnivoreApp({ Component, pageProps }: AppProps): JSX.Element {
const router = useRouter()
@ -81,12 +98,7 @@ export function OmnivoreApp({ Component, pageProps }: AppProps): JSX.Element {
}, [router.events])
return (
<GoogleReCaptchaProvider
type="v2-checkbox"
isEnterprise={true}
host="recaptcha.net"
siteKey={process.env.NEXT_PUBLIC_RECAPTCHA_CHALLENGE_SITE_KEY ?? ''}
>
<ConditionalCaptchaProvider>
<KBarProvider actions={generateActions(router)}>
<KBarPortal>
<KBarPositioner style={{ zIndex: 100 }}>
@ -100,7 +112,7 @@ export function OmnivoreApp({ Component, pageProps }: AppProps): JSX.Element {
<Component {...pageProps} />
</IdProvider>
</KBarProvider>
</GoogleReCaptchaProvider>
</ConditionalCaptchaProvider>
)
}