chore: create a utils/languages file

This commit is contained in:
Chuma McPhoy
2024-07-04 15:19:17 +02:00
parent f89d17cd7f
commit bfcef5b832
12 changed files with 31 additions and 54 deletions

View File

@@ -4,10 +4,11 @@ import { useParams, usePathname } from "next/navigation"
import { useEffect } from "react"
import { useIntl } from "react-intl"
import { findLang } from "@/constants/languages"
import { login } from "@/constants/routes/handleAuth"
import { SESSION_EXPIRED } from "@/server/errors/trpc"
import { findLang } from "@/utils/languages"
import styles from "./error.module.css"
import { LangParams } from "@/types/params"
@@ -34,9 +35,7 @@ export default function Error({
const lang = findLang(pathname)
return (
<section
className={styles.layout}
>
<section className={styles.layout}>
<div className={styles.content}>
{lang}: {intl.formatMessage({ id: "Something went wrong!" })}
</div>

View File

@@ -64,43 +64,3 @@ export const languageSelect = [
{ label: "Norwegian", value: "No" },
{ label: "Swedish", value: "Sv" },
]
// -- Lang util functions --
export function findLang(pathname: string) {
return Object.values(Lang).find(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
)
}
/**
* Helper function to convert langs in uppercase or capitalized format (e.g. the Hotel endpoint)
* to to Lang enum.
*/
export function fromUppercaseToLangEnum(lang: string): Lang | undefined {
const lowerCaseLang = lang.toLowerCase()
return Object.values(Lang).find((l) => l === lowerCaseLang)
}
/**
* Helper function to convert Lang enum to uppercase
* Needed for certtain API (e.g. the Hotel endpoint).
*/
export const toUppercaseLang = (lang: Lang): string => {
switch (lang) {
case Lang.en:
return "En"
case Lang.sv:
return "Sv"
case Lang.no:
return "No"
case Lang.fi:
return "Fi"
case Lang.da:
return "Da"
case Lang.de:
return "De"
default:
throw new Error("Invalid language")
}
}

View File

@@ -1,6 +1,6 @@
import { NextMiddleware, NextResponse } from "next/server"
import { findLang, Lang } from "./constants/languages"
import { Lang } from "./constants/languages"
import * as authRequired from "./middlewares/authRequired"
import * as bookingFlow from "./middlewares/bookingFlow"
import * as cmsContent from "./middlewares/cmsContent"
@@ -9,6 +9,7 @@ import * as currentWebLogout from "./middlewares/currentWebLogout"
import * as handleAuth from "./middlewares/handleAuth"
import * as myPages from "./middlewares/myPages"
import * as webView from "./middlewares/webView"
import { findLang } from "./utils/languages"
export const middleware: NextMiddleware = async (request, event) => {
const lang = findLang(request.nextUrl.pathname)

View File

@@ -1,12 +1,12 @@
import { NextResponse } from "next/server"
import { findLang } from "@/constants/languages"
import { authRequired } from "@/constants/routes/authRequired"
import { login } from "@/constants/routes/handleAuth"
import { env } from "@/env/server"
import { internalServerError } from "@/server/errors/next"
import { auth } from "@/auth"
import { findLang } from "@/utils/languages"
import type { NextMiddleware } from "next/server"

View File

@@ -1,9 +1,9 @@
import { NextResponse } from "next/server"
import { findLang } from "@/constants/languages"
import { notFound } from "@/server/errors/next"
import { resolve as resolveEntry } from "@/utils/entry"
import { findLang } from "@/utils/languages"
import { removeTrailingSlash } from "@/utils/url"
import { getDefaultRequestHeaders } from "./utils"

View File

@@ -1,8 +1,9 @@
import { NextResponse } from "next/server"
import { findLang } from "@/constants/languages"
import { badRequest } from "@/server/errors/next"
import { findLang } from "@/utils/languages"
import type { NextMiddleware } from "next/server"
import type { MiddlewareMatcher } from "@/types/middleware"

View File

@@ -1,9 +1,10 @@
import { NextResponse } from "next/server"
import { findLang } from "@/constants/languages"
import { env } from "@/env/server"
import { badRequest, internalServerError } from "@/server/errors/next"
import { findLang } from "@/utils/languages"
import type { NextMiddleware } from "next/server"
import type { MiddlewareMatcher } from "@/types/middleware"

View File

@@ -1,11 +1,11 @@
import { NextResponse } from "next/server"
import { findLang } from "@/constants/languages"
import { myPages, overview } from "@/constants/routes/myPages"
import { env } from "@/env/server"
import { internalServerError, notFound } from "@/server/errors/next"
import { resolve as resolveEntry } from "@/utils/entry"
import { findLang } from "@/utils/languages"
import { getDefaultRequestHeaders } from "./utils"

View File

@@ -1,5 +1,4 @@
import { findLang } from "@/constants/languages"
import { findLang } from "@/utils/languages"
import { removeTrailingSlash } from "@/utils/url"
import type { NextRequest } from "next/server"

View File

@@ -1,6 +1,5 @@
import { type NextMiddleware, NextResponse } from "next/server"
import { findLang } from "@/constants/languages"
import {
loyaltyPagesWebviews,
myPagesWebviews,
@@ -12,6 +11,7 @@ import { badRequest, notFound } from "@/server/errors/next"
import { decryptData } from "@/utils/aes"
import { resolve as resolveEntry } from "@/utils/entry"
import { findLang } from "@/utils/languages"
import { getDefaultRequestHeaders } from "./utils"

View File

@@ -1,6 +1,6 @@
import { z } from "zod"
import { fromUppercaseToLangEnum } from "@/constants/languages"
import { fromUppercaseToLangEnum } from "@/utils/languages"
const RatingsSchema = z.object({
tripAdvisor: z.object({

16
utils/languages.ts Normal file
View File

@@ -0,0 +1,16 @@
import { Lang } from "@/constants/languages"
export function findLang(pathname: string) {
return Object.values(Lang).find(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
)
}
/**
* Helper function to convert langs in uppercase or capitalized format (e.g. the Hotel endpoint)
* to to Lang enum.
*/
export function fromUppercaseToLangEnum(lang: string): Lang | undefined {
const lowerCaseLang = lang.toLowerCase()
return Object.values(Lang).find((l) => l === lowerCaseLang)
}