Different approach to getting locale cookie

This commit is contained in:
Justin Edmund 2023-01-03 23:19:13 -08:00
parent 81c6c22337
commit 573deaa2c2
2 changed files with 21 additions and 14 deletions

View file

@ -3,7 +3,7 @@ import { useRouter } from 'next/router'
import { useTranslation } from 'next-i18next' import { useTranslation } from 'next-i18next'
import { setCookie } from 'cookies-next' import { setCookie } from 'cookies-next'
import classNames from 'classnames' import classNames from 'classnames'
import retrieveCookies from '~utils/retrieveCookies' import { retrieveCookies, retrieveLocaleCookies } from '~utils/retrieveCookies'
import Link from 'next/link' import Link from 'next/link'
import * as Switch from '@radix-ui/react-switch' import * as Switch from '@radix-ui/react-switch'
@ -29,6 +29,7 @@ const HeaderMenu = (props: Props) => {
// Setup // Setup
const router = useRouter() const router = useRouter()
const data: GranblueCookie | undefined = retrieveCookies() const data: GranblueCookie | undefined = retrieveCookies()
const localeData = retrieveLocaleCookies()
const { t } = useTranslation('common') const { t } = useTranslation('common')
// Refs // Refs
@ -59,9 +60,8 @@ const HeaderMenu = (props: Props) => {
const [checked, setChecked] = useState(false) const [checked, setChecked] = useState(false)
useEffect(() => { useEffect(() => {
const locale = data?.locale setChecked(localeData === 'ja' ? true : false)
setChecked(locale === 'ja' ? true : false) }, [localeData])
}, [data?.locale])
function handleCheckedChange(value: boolean) { function handleCheckedChange(value: boolean) {
const language = value ? 'ja' : 'en' const language = value ? 'ja' : 'en'

View file

@ -1,25 +1,32 @@
import { getCookies } from 'cookies-next' import { getCookies } from 'cookies-next'
import { NextApiRequest, NextApiResponse } from 'next' import { NextApiRequest, NextApiResponse } from 'next'
export default function retrieveCookies( export function retrieveCookies(
req?: NextApiRequest, req?: NextApiRequest,
res?: NextApiResponse res?: NextApiResponse
): GranblueCookie | undefined { ): GranblueCookie | undefined {
const cookies = getCookies({ req, res }) const cookies = getCookies({ req, res })
if (!cookies) return undefined
const { const {
account: accountData, account: accountData,
user: userData, user: userData,
NEXT_LOCALE: localeData, NEXT_LOCALE: localeData,
} = cookies } = cookies
if (!accountData || !userData) return undefined
if ((!accountData || !userData) && localeData) const account = JSON.parse(decodeURIComponent(accountData)) ?? undefined
return { account: undefined, user: undefined, locale: localeData } const user = JSON.parse(decodeURIComponent(userData)) ?? undefined
const locale = localeData as string
if (accountData && userData) { return { account, user, locale }
const account = JSON.parse(decodeURIComponent(accountData)) ?? undefined }
const user = JSON.parse(decodeURIComponent(userData)) ?? undefined
const locale = localeData as string export function retrieveLocaleCookies(
req?: NextApiRequest,
return { account, user, locale } res?: NextApiResponse
} ) {
const cookies = getCookies({ req, res })
const { NEXT_LOCALE: localeData } = cookies
return localeData as string
} }