Refactors useLocale (#908)

* Removes unused component

* Refactors useLocale

We don't need to pass the locale prop everywhere

* Fixes syntax error

* Adds warning for missing localeProps

* Simplify i18n utils

* Update components/I18nLanguageHandler.tsx

Co-authored-by: Mihai C <34626017+mihaic195@users.noreply.github.com>

* Type fixes

Co-authored-by: Mihai C <34626017+mihaic195@users.noreply.github.com>
This commit is contained in:
Omar LópezandMihai C authored and GitHub committed 2021-10-12 13:11:33 +00:00
1 parent 7dd6fdde7a
commit cfd70172f0
35 files changed
+366 -440

No files matched your search

+10 -25
View File
@@ -15,7 +15,7 @@ export function getLocaleFromHeaders(req: IncomingMessage): string {
export const getOrSetUserLocaleFromHeaders = async (req: IncomingMessage): Promise<string> => {
const session = await getSession({ req });
const preferredLocale = parser.pick(i18n.locales, req.headers["accept-language"]) as Maybe<string>;
const preferredLocale = getLocaleFromHeaders(req);
if (session?.user?.id) {
const user = await prisma.user.findUnique({
@@ -31,32 +31,17 @@ export const getOrSetUserLocaleFromHeaders = async (req: IncomingMessage): Promi
return user.locale;
}
if (preferredLocale) {
await prisma.user.update({
where: {
id: session.user.id,
},
data: {
locale: preferredLocale,
},
});
} else {
await prisma.user.update({
where: {
id: session.user.id,
},
data: {
locale: i18n.defaultLocale,
},
});
}
await prisma.user.update({
where: {
id: session.user.id,
},
data: {
locale: preferredLocale,
},
});
}
if (preferredLocale) {
return preferredLocale;
}
return i18n.defaultLocale;
return preferredLocale;
};
interface localeType {
+1 -10
View File
@@ -1,19 +1,10 @@
import { useTranslation } from "next-i18next";
type LocaleProp = {
localeProp: string;
};
export const useLocale = (props: LocaleProp) => {
export const useLocale = () => {
const { i18n, t } = useTranslation("common");
if (i18n.language !== props.localeProp) {
i18n.changeLanguage(props.localeProp);
}
return {
i18n,
locale: props.localeProp,
t,
};
};