chore: create a utils/languages file
This commit is contained in:
@@ -4,10 +4,11 @@ import { useParams, usePathname } from "next/navigation"
|
|||||||
import { useEffect } from "react"
|
import { useEffect } from "react"
|
||||||
import { useIntl } from "react-intl"
|
import { useIntl } from "react-intl"
|
||||||
|
|
||||||
import { findLang } from "@/constants/languages"
|
|
||||||
import { login } from "@/constants/routes/handleAuth"
|
import { login } from "@/constants/routes/handleAuth"
|
||||||
import { SESSION_EXPIRED } from "@/server/errors/trpc"
|
import { SESSION_EXPIRED } from "@/server/errors/trpc"
|
||||||
|
|
||||||
|
import { findLang } from "@/utils/languages"
|
||||||
|
|
||||||
import styles from "./error.module.css"
|
import styles from "./error.module.css"
|
||||||
|
|
||||||
import { LangParams } from "@/types/params"
|
import { LangParams } from "@/types/params"
|
||||||
@@ -34,9 +35,7 @@ export default function Error({
|
|||||||
const lang = findLang(pathname)
|
const lang = findLang(pathname)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section
|
<section className={styles.layout}>
|
||||||
className={styles.layout}
|
|
||||||
>
|
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
{lang}: {intl.formatMessage({ id: "Something went wrong!" })}
|
{lang}: {intl.formatMessage({ id: "Something went wrong!" })}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -64,43 +64,3 @@ export const languageSelect = [
|
|||||||
{ label: "Norwegian", value: "No" },
|
{ label: "Norwegian", value: "No" },
|
||||||
{ label: "Swedish", value: "Sv" },
|
{ 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")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { NextMiddleware, NextResponse } from "next/server"
|
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 authRequired from "./middlewares/authRequired"
|
||||||
import * as bookingFlow from "./middlewares/bookingFlow"
|
import * as bookingFlow from "./middlewares/bookingFlow"
|
||||||
import * as cmsContent from "./middlewares/cmsContent"
|
import * as cmsContent from "./middlewares/cmsContent"
|
||||||
@@ -9,6 +9,7 @@ import * as currentWebLogout from "./middlewares/currentWebLogout"
|
|||||||
import * as handleAuth from "./middlewares/handleAuth"
|
import * as handleAuth from "./middlewares/handleAuth"
|
||||||
import * as myPages from "./middlewares/myPages"
|
import * as myPages from "./middlewares/myPages"
|
||||||
import * as webView from "./middlewares/webView"
|
import * as webView from "./middlewares/webView"
|
||||||
|
import { findLang } from "./utils/languages"
|
||||||
|
|
||||||
export const middleware: NextMiddleware = async (request, event) => {
|
export const middleware: NextMiddleware = async (request, event) => {
|
||||||
const lang = findLang(request.nextUrl.pathname)
|
const lang = findLang(request.nextUrl.pathname)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { NextResponse } from "next/server"
|
import { NextResponse } from "next/server"
|
||||||
|
|
||||||
import { findLang } from "@/constants/languages"
|
|
||||||
import { authRequired } from "@/constants/routes/authRequired"
|
import { authRequired } from "@/constants/routes/authRequired"
|
||||||
import { login } from "@/constants/routes/handleAuth"
|
import { login } from "@/constants/routes/handleAuth"
|
||||||
import { env } from "@/env/server"
|
import { env } from "@/env/server"
|
||||||
import { internalServerError } from "@/server/errors/next"
|
import { internalServerError } from "@/server/errors/next"
|
||||||
|
|
||||||
import { auth } from "@/auth"
|
import { auth } from "@/auth"
|
||||||
|
import { findLang } from "@/utils/languages"
|
||||||
|
|
||||||
import type { NextMiddleware } from "next/server"
|
import type { NextMiddleware } from "next/server"
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { NextResponse } from "next/server"
|
import { NextResponse } from "next/server"
|
||||||
|
|
||||||
import { findLang } from "@/constants/languages"
|
|
||||||
import { notFound } from "@/server/errors/next"
|
import { notFound } from "@/server/errors/next"
|
||||||
|
|
||||||
import { resolve as resolveEntry } from "@/utils/entry"
|
import { resolve as resolveEntry } from "@/utils/entry"
|
||||||
|
import { findLang } from "@/utils/languages"
|
||||||
import { removeTrailingSlash } from "@/utils/url"
|
import { removeTrailingSlash } from "@/utils/url"
|
||||||
|
|
||||||
import { getDefaultRequestHeaders } from "./utils"
|
import { getDefaultRequestHeaders } from "./utils"
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { NextResponse } from "next/server"
|
import { NextResponse } from "next/server"
|
||||||
|
|
||||||
import { findLang } from "@/constants/languages"
|
|
||||||
import { badRequest } from "@/server/errors/next"
|
import { badRequest } from "@/server/errors/next"
|
||||||
|
|
||||||
|
import { findLang } from "@/utils/languages"
|
||||||
|
|
||||||
import type { NextMiddleware } from "next/server"
|
import type { NextMiddleware } from "next/server"
|
||||||
|
|
||||||
import type { MiddlewareMatcher } from "@/types/middleware"
|
import type { MiddlewareMatcher } from "@/types/middleware"
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
import { NextResponse } from "next/server"
|
import { NextResponse } from "next/server"
|
||||||
|
|
||||||
import { findLang } from "@/constants/languages"
|
|
||||||
import { env } from "@/env/server"
|
import { env } from "@/env/server"
|
||||||
import { badRequest, internalServerError } from "@/server/errors/next"
|
import { badRequest, internalServerError } from "@/server/errors/next"
|
||||||
|
|
||||||
|
import { findLang } from "@/utils/languages"
|
||||||
|
|
||||||
import type { NextMiddleware } from "next/server"
|
import type { NextMiddleware } from "next/server"
|
||||||
|
|
||||||
import type { MiddlewareMatcher } from "@/types/middleware"
|
import type { MiddlewareMatcher } from "@/types/middleware"
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { NextResponse } from "next/server"
|
import { NextResponse } from "next/server"
|
||||||
|
|
||||||
import { findLang } from "@/constants/languages"
|
|
||||||
import { myPages, overview } from "@/constants/routes/myPages"
|
import { myPages, overview } from "@/constants/routes/myPages"
|
||||||
import { env } from "@/env/server"
|
import { env } from "@/env/server"
|
||||||
import { internalServerError, notFound } from "@/server/errors/next"
|
import { internalServerError, notFound } from "@/server/errors/next"
|
||||||
|
|
||||||
import { resolve as resolveEntry } from "@/utils/entry"
|
import { resolve as resolveEntry } from "@/utils/entry"
|
||||||
|
import { findLang } from "@/utils/languages"
|
||||||
|
|
||||||
import { getDefaultRequestHeaders } from "./utils"
|
import { getDefaultRequestHeaders } from "./utils"
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { findLang } from "@/constants/languages"
|
import { findLang } from "@/utils/languages"
|
||||||
|
|
||||||
import { removeTrailingSlash } from "@/utils/url"
|
import { removeTrailingSlash } from "@/utils/url"
|
||||||
|
|
||||||
import type { NextRequest } from "next/server"
|
import type { NextRequest } from "next/server"
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { type NextMiddleware, NextResponse } from "next/server"
|
import { type NextMiddleware, NextResponse } from "next/server"
|
||||||
|
|
||||||
import { findLang } from "@/constants/languages"
|
|
||||||
import {
|
import {
|
||||||
loyaltyPagesWebviews,
|
loyaltyPagesWebviews,
|
||||||
myPagesWebviews,
|
myPagesWebviews,
|
||||||
@@ -12,6 +11,7 @@ import { badRequest, notFound } from "@/server/errors/next"
|
|||||||
|
|
||||||
import { decryptData } from "@/utils/aes"
|
import { decryptData } from "@/utils/aes"
|
||||||
import { resolve as resolveEntry } from "@/utils/entry"
|
import { resolve as resolveEntry } from "@/utils/entry"
|
||||||
|
import { findLang } from "@/utils/languages"
|
||||||
|
|
||||||
import { getDefaultRequestHeaders } from "./utils"
|
import { getDefaultRequestHeaders } from "./utils"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
|
|
||||||
import { fromUppercaseToLangEnum } from "@/constants/languages"
|
import { fromUppercaseToLangEnum } from "@/utils/languages"
|
||||||
|
|
||||||
const RatingsSchema = z.object({
|
const RatingsSchema = z.object({
|
||||||
tripAdvisor: z.object({
|
tripAdvisor: z.object({
|
||||||
|
|||||||
16
utils/languages.ts
Normal file
16
utils/languages.ts
Normal 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)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user