2
0

fix(builder): 🐛 Add public env var in runtime config

This commit is contained in:
Baptiste Arnaud
2022-06-07 15:13:04 +02:00
parent 853b749e2c
commit a42e1cad22
4 changed files with 24 additions and 8 deletions

View File

@@ -17,6 +17,11 @@ import { BaseEmoji, emojiIndex } from 'emoji-mart'
import { emojis } from './emojis' import { emojis } from './emojis'
import { Input } from '../Textbox/Input' import { Input } from '../Textbox/Input'
import { isEmpty } from 'utils' import { isEmpty } from 'utils'
import getConfig from 'next/config'
const {
publicRuntimeConfig: { NEXT_PUBLIC_GIPHY_API_KEY },
} = getConfig()
type Props = { type Props = {
url?: string url?: string
@@ -183,12 +188,10 @@ const EmojiContent = ({
} }
const GiphyContent = ({ onNewUrl }: ContentProps) => { const GiphyContent = ({ onNewUrl }: ContentProps) => {
if (isEmpty(process.env.NEXT_PUBLIC_GIPHY_API_KEY)) if (isEmpty(NEXT_PUBLIC_GIPHY_API_KEY))
return <Text>NEXT_PUBLIC_GIPHY_API_KEY is missing in environment</Text> return <Text>NEXT_PUBLIC_GIPHY_API_KEY is missing in environment</Text>
return ( return (
<SearchContextManager <SearchContextManager apiKey={NEXT_PUBLIC_GIPHY_API_KEY}>
apiKey={process.env.NEXT_PUBLIC_GIPHY_API_KEY as string}
>
<GiphySearch onSubmit={onNewUrl} /> <GiphySearch onSubmit={onNewUrl} />
</SearchContextManager> </SearchContextManager>
) )

View File

@@ -2,6 +2,7 @@ import React, { useEffect, useState } from 'react'
import { Text, HStack } from '@chakra-ui/react' import { Text, HStack } from '@chakra-ui/react'
import { SearchableDropdown } from '../../../shared/SearchableDropdown' import { SearchableDropdown } from '../../../shared/SearchableDropdown'
import { isEmpty } from 'utils' import { isEmpty } from 'utils'
import getConfig from 'next/config'
type FontSelectorProps = { type FontSelectorProps = {
activeFont?: string activeFont?: string
@@ -20,9 +21,12 @@ export const FontSelector = ({
}, []) }, [])
const fetchPopularFonts = async () => { const fetchPopularFonts = async () => {
if (isEmpty(process.env.NEXT_PUBLIC_GOOGLE_API_KEY)) return [] const {
publicRuntimeConfig: { NEXT_PUBLIC_GOOGLE_API_KEY },
} = getConfig()
if (isEmpty(NEXT_PUBLIC_GOOGLE_API_KEY)) return []
const response = await fetch( const response = await fetch(
`https://www.googleapis.com/webfonts/v1/webfonts?key=${process.env.NEXT_PUBLIC_GOOGLE_API_KEY}&sort=popularity` `https://www.googleapis.com/webfonts/v1/webfonts?key=${NEXT_PUBLIC_GOOGLE_API_KEY}&sort=popularity`
) )
return (await response.json()).items.map( return (await response.json()).items.map(
(item: { family: string }) => item.family (item: { family: string }) => item.family

View File

@@ -6,6 +6,11 @@ const moduleExports = {
outputStandalone: true, outputStandalone: true,
}, },
optimizeFonts: false, optimizeFonts: false,
publicRuntimeConfig: {
NEXT_PUBLIC_GOOGLE_API_KEY: process.env.NEXT_PUBLIC_GOOGLE_API_KEY,
NEXT_PUBLIC_GIPHY_API_KEY: process.env.NEXT_PUBLIC_GIPHY_API_KEY,
NEXT_PUBLIC_STRIPE_PUBLIC_KEY: process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY,
},
} }
const sentryWebpackPluginOptions = { const sentryWebpackPluginOptions = {

View File

@@ -1,6 +1,7 @@
import { Plan, User } from 'db' import { Plan, User } from 'db'
import { loadStripe } from '@stripe/stripe-js/pure' import { loadStripe } from '@stripe/stripe-js/pure'
import { isDefined, isEmpty, sendRequest } from 'utils' import { isDefined, isEmpty, sendRequest } from 'utils'
import getConfig from 'next/config'
type Props = { type Props = {
user: User user: User
@@ -39,7 +40,10 @@ const redirectToCheckout = async ({
plan, plan,
workspaceId, workspaceId,
}: Omit<Props, 'customerId'>) => { }: Omit<Props, 'customerId'>) => {
if (isEmpty(process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY)) const {
publicRuntimeConfig: { NEXT_PUBLIC_STRIPE_PUBLIC_KEY },
} = getConfig()
if (isEmpty(NEXT_PUBLIC_STRIPE_PUBLIC_KEY))
throw new Error('NEXT_PUBLIC_STRIPE_PUBLIC_KEY is missing in env') throw new Error('NEXT_PUBLIC_STRIPE_PUBLIC_KEY is missing in env')
const { data, error } = await sendRequest<{ sessionId: string }>({ const { data, error } = await sendRequest<{ sessionId: string }>({
method: 'POST', method: 'POST',
@@ -53,7 +57,7 @@ const redirectToCheckout = async ({
}, },
}) })
if (error || !data) return if (error || !data) return
const stripe = await loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY) const stripe = await loadStripe(NEXT_PUBLIC_STRIPE_PUBLIC_KEY)
await stripe?.redirectToCheckout({ await stripe?.redirectToCheckout({
sessionId: data?.sessionId, sessionId: data?.sessionId,
}) })