fix: add temp translation handling for overview table
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
"tier": 1,
|
"tier": 1,
|
||||||
"name": "New Friend",
|
"name": "New Friend",
|
||||||
"requirement": "0p or 0 nights",
|
"requirement": "0p or 0 nights",
|
||||||
"description": "This is the start of something beautiful: as a New Friend, get ready for a journey of delightful Scandic discoveries",
|
"description": "Detta är början på något speciellt, vi kan känna det. Som New Friend bjuder dina vistelser på nya upptäckter.",
|
||||||
"icon": "/_static/icons/loyaltylevels/new-friend.svg",
|
"icon": "/_static/icons/loyaltylevels/new-friend.svg",
|
||||||
"benefits": [
|
"benefits": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
|
import { useParams } from "next/navigation"
|
||||||
import { useReducer } from "react"
|
import { useReducer } from "react"
|
||||||
import { type Key } from "react-aria-components"
|
import { type Key } from "react-aria-components"
|
||||||
import { useIntl } from "react-intl"
|
import { useIntl } from "react-intl"
|
||||||
@@ -11,7 +12,12 @@ import Image from "@/components/Image"
|
|||||||
import Select from "@/components/TempDesignSystem/Select"
|
import Select from "@/components/TempDesignSystem/Select"
|
||||||
import { getMembership } from "@/utils/user"
|
import { getMembership } from "@/utils/user"
|
||||||
|
|
||||||
import levelsData from "./data/EN.json"
|
import DA from "./data/DA.json"
|
||||||
|
import DE from "./data/DE.json"
|
||||||
|
import EN from "./data/EN.json"
|
||||||
|
import FI from "./data/FI.json"
|
||||||
|
import NO from "./data/NO.json"
|
||||||
|
import SV from "./data/SV.json"
|
||||||
import BenefitList from "./BenefitList"
|
import BenefitList from "./BenefitList"
|
||||||
import LargeTable from "./LargeTable"
|
import LargeTable from "./LargeTable"
|
||||||
import LevelSummary from "./LevelSummary"
|
import LevelSummary from "./LevelSummary"
|
||||||
@@ -25,8 +31,18 @@ import {
|
|||||||
OverviewTableProps,
|
OverviewTableProps,
|
||||||
OverviewTableReducerAction,
|
OverviewTableReducerAction,
|
||||||
} from "@/types/components/loyalty/blocks"
|
} from "@/types/components/loyalty/blocks"
|
||||||
|
import { LangParams } from "@/types/params"
|
||||||
import { User } from "@/types/user"
|
import { User } from "@/types/user"
|
||||||
|
|
||||||
|
const levelsTranslations = {
|
||||||
|
[Lang.en]: EN,
|
||||||
|
[Lang.sv]: SV,
|
||||||
|
[Lang.no]: NO,
|
||||||
|
[Lang.da]: DA,
|
||||||
|
[Lang.fi]: FI,
|
||||||
|
[Lang.de]: DE,
|
||||||
|
}
|
||||||
|
|
||||||
// These should ultimately be fetched from Contentstack
|
// These should ultimately be fetched from Contentstack
|
||||||
const titleTranslations = {
|
const titleTranslations = {
|
||||||
[Lang.en]: [
|
[Lang.en]: [
|
||||||
@@ -56,21 +72,21 @@ const titleTranslations = {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
function getLevelByTier(tier: membershipLevels) {
|
function getTranslatedLevelByTier(tier: membershipLevels, lang: Lang) {
|
||||||
return levelsData.levels.find(
|
return levelsTranslations[lang].levels.find(
|
||||||
(level) => level.tier === tier
|
(level) => level.tier === tier
|
||||||
) as ComparisonLevel
|
) as ComparisonLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
function getInitialState(user?: User) {
|
function getInitialState({ user, lang }: { user?: User; lang: Lang }) {
|
||||||
const membership = user?.memberships ? getMembership(user.memberships) : null
|
const membership = user?.memberships ? getMembership(user.memberships) : null
|
||||||
if (!membership?.membershipLevel) {
|
if (!membership?.membershipLevel) {
|
||||||
return {
|
return {
|
||||||
selectedLevelAMobile: getLevelByTier(1),
|
selectedLevelAMobile: getTranslatedLevelByTier(1, lang),
|
||||||
selectedLevelBMobile: getLevelByTier(2),
|
selectedLevelBMobile: getTranslatedLevelByTier(2, lang),
|
||||||
selectedLevelADesktop: getLevelByTier(1),
|
selectedLevelADesktop: getTranslatedLevelByTier(1, lang),
|
||||||
selectedLevelBDesktop: getLevelByTier(2),
|
selectedLevelBDesktop: getTranslatedLevelByTier(2, lang),
|
||||||
selectedLevelCDesktop: getLevelByTier(3),
|
selectedLevelCDesktop: getTranslatedLevelByTier(3, lang),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!membership.membershipLevel) return null
|
if (!membership.membershipLevel) return null
|
||||||
@@ -79,27 +95,27 @@ function getInitialState(user?: User) {
|
|||||||
switch (tier) {
|
switch (tier) {
|
||||||
case 6:
|
case 6:
|
||||||
return {
|
return {
|
||||||
selectedLevelAMobile: getLevelByTier(6),
|
selectedLevelAMobile: getTranslatedLevelByTier(6, lang),
|
||||||
selectedLevelBMobile: getLevelByTier(7),
|
selectedLevelBMobile: getTranslatedLevelByTier(7, lang),
|
||||||
selectedLevelADesktop: getLevelByTier(5),
|
selectedLevelADesktop: getTranslatedLevelByTier(5, lang),
|
||||||
selectedLevelBDesktop: getLevelByTier(6),
|
selectedLevelBDesktop: getTranslatedLevelByTier(6, lang),
|
||||||
selectedLevelCDesktop: getLevelByTier(7),
|
selectedLevelCDesktop: getTranslatedLevelByTier(7, lang),
|
||||||
}
|
}
|
||||||
case 7:
|
case 7:
|
||||||
return {
|
return {
|
||||||
selectedLevelAMobile: getLevelByTier(6),
|
selectedLevelAMobile: getTranslatedLevelByTier(6, lang),
|
||||||
selectedLevelBMobile: getLevelByTier(7),
|
selectedLevelBMobile: getTranslatedLevelByTier(7, lang),
|
||||||
selectedLevelADesktop: getLevelByTier(6),
|
selectedLevelADesktop: getTranslatedLevelByTier(6, lang),
|
||||||
selectedLevelBDesktop: getLevelByTier(7),
|
selectedLevelBDesktop: getTranslatedLevelByTier(7, lang),
|
||||||
selectedLevelCDesktop: getLevelByTier(1),
|
selectedLevelCDesktop: getTranslatedLevelByTier(1, lang),
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return {
|
return {
|
||||||
selectedLevelAMobile: getLevelByTier(tier),
|
selectedLevelAMobile: getTranslatedLevelByTier(tier, lang),
|
||||||
selectedLevelBMobile: getLevelByTier(tier + 1),
|
selectedLevelBMobile: getTranslatedLevelByTier(tier + 1, lang),
|
||||||
selectedLevelADesktop: getLevelByTier(tier),
|
selectedLevelADesktop: getTranslatedLevelByTier(tier, lang),
|
||||||
selectedLevelBDesktop: getLevelByTier(tier + 1),
|
selectedLevelBDesktop: getTranslatedLevelByTier(tier + 1, lang),
|
||||||
selectedLevelCDesktop: getLevelByTier(tier + 2),
|
selectedLevelCDesktop: getTranslatedLevelByTier(tier + 2, lang),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -138,14 +154,19 @@ function reducer(state: any, action: OverviewTableReducerAction) {
|
|||||||
|
|
||||||
export default function OverviewTable({ user }: OverviewTableProps) {
|
export default function OverviewTable({ user }: OverviewTableProps) {
|
||||||
const intl = useIntl()
|
const intl = useIntl()
|
||||||
|
const params = useParams<LangParams>()
|
||||||
const [selectionState, dispatch] = useReducer(reducer, user, getInitialState)
|
const levelsData = levelsTranslations[params.lang]
|
||||||
|
const [selectionState, dispatch] = useReducer(
|
||||||
|
reducer,
|
||||||
|
{ user, lang: params.lang },
|
||||||
|
getInitialState
|
||||||
|
)
|
||||||
|
|
||||||
function handleSelectChange(actionType: overviewTableActionsEnum) {
|
function handleSelectChange(actionType: overviewTableActionsEnum) {
|
||||||
return (key: Key) => {
|
return (key: Key) => {
|
||||||
if (typeof key === "number") {
|
if (typeof key === "number") {
|
||||||
dispatch({
|
dispatch({
|
||||||
payload: getLevelByTier(key),
|
payload: getTranslatedLevelByTier(key, params.lang),
|
||||||
type: actionType,
|
type: actionType,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user