From 573deaa2c2813fe70762011c6a1156c2fb5cde5d Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Tue, 3 Jan 2023 23:19:13 -0800 Subject: [PATCH] Different approach to getting locale cookie --- components/HeaderMenu/index.tsx | 8 ++++---- utils/retrieveCookies.tsx | 27 +++++++++++++++++---------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/components/HeaderMenu/index.tsx b/components/HeaderMenu/index.tsx index cfdc36f0..6c229f59 100644 --- a/components/HeaderMenu/index.tsx +++ b/components/HeaderMenu/index.tsx @@ -3,7 +3,7 @@ import { useRouter } from 'next/router' import { useTranslation } from 'next-i18next' import { setCookie } from 'cookies-next' import classNames from 'classnames' -import retrieveCookies from '~utils/retrieveCookies' +import { retrieveCookies, retrieveLocaleCookies } from '~utils/retrieveCookies' import Link from 'next/link' import * as Switch from '@radix-ui/react-switch' @@ -29,6 +29,7 @@ const HeaderMenu = (props: Props) => { // Setup const router = useRouter() const data: GranblueCookie | undefined = retrieveCookies() + const localeData = retrieveLocaleCookies() const { t } = useTranslation('common') // Refs @@ -59,9 +60,8 @@ const HeaderMenu = (props: Props) => { const [checked, setChecked] = useState(false) useEffect(() => { - const locale = data?.locale - setChecked(locale === 'ja' ? true : false) - }, [data?.locale]) + setChecked(localeData === 'ja' ? true : false) + }, [localeData]) function handleCheckedChange(value: boolean) { const language = value ? 'ja' : 'en' diff --git a/utils/retrieveCookies.tsx b/utils/retrieveCookies.tsx index 68337b89..4bff5435 100644 --- a/utils/retrieveCookies.tsx +++ b/utils/retrieveCookies.tsx @@ -1,25 +1,32 @@ import { getCookies } from 'cookies-next' import { NextApiRequest, NextApiResponse } from 'next' -export default function retrieveCookies( +export function retrieveCookies( req?: NextApiRequest, res?: NextApiResponse ): GranblueCookie | undefined { const cookies = getCookies({ req, res }) + if (!cookies) return undefined + const { account: accountData, user: userData, NEXT_LOCALE: localeData, } = cookies + if (!accountData || !userData) return undefined - if ((!accountData || !userData) && localeData) - return { account: undefined, user: undefined, locale: localeData } + const account = JSON.parse(decodeURIComponent(accountData)) ?? undefined + const user = JSON.parse(decodeURIComponent(userData)) ?? undefined + const locale = localeData as string - if (accountData && userData) { - const account = JSON.parse(decodeURIComponent(accountData)) ?? undefined - const user = JSON.parse(decodeURIComponent(userData)) ?? undefined - const locale = localeData as string - - return { account, user, locale } - } + return { account, user, locale } +} + +export function retrieveLocaleCookies( + req?: NextApiRequest, + res?: NextApiResponse +) { + const cookies = getCookies({ req, res }) + const { NEXT_LOCALE: localeData } = cookies + return localeData as string }