fix: refactor away subtitleParam

This commit is contained in:
Christel Westerberg
2024-09-06 11:34:58 +02:00
parent 7d39ca587e
commit 54995d2f71
4 changed files with 29 additions and 28 deletions

View File

@@ -17,34 +17,24 @@ export const YourPointsColumn = ({ points }: PointsColumn) =>
subtitle: "as of today", subtitle: "as of today",
}) })
export const NextLevelPointsColumn = ({ export const NextLevelPointsColumn = ({ points, subtitle }: PointsColumn) =>
points,
subtitleParam,
}: PointsColumn) =>
PointsColumn({ PointsColumn({
points, points,
title: "Points needed to level up", title: "Points needed to level up",
subtitleParam, subtitle,
subtitle: "next level:",
}) })
export const StayOnLevelColumn = ({ points, subtitleParam }: PointsColumn) => export const StayOnLevelColumn = ({ points, subtitle }: PointsColumn) =>
PointsColumn({ PointsColumn({
points, points,
title: "Points needed to stay on level", title: "Points needed to stay on level",
subtitleParam, subtitle,
subtitle: "by",
}) })
export const NextLevelNightsColumn = ({ export const NextLevelNightsColumn = ({ nights, subtitle }: NightsColumn) =>
nights,
subtitleParam,
subtitle = "by",
}: NightsColumn) =>
PointsColumn({ PointsColumn({
nights, nights,
title: "Nights needed to level up", title: "Nights needed to level up",
subtitleParam,
subtitle, subtitle,
}) })
@@ -53,7 +43,6 @@ async function PointsColumn({
nights, nights,
title, title,
subtitle, subtitle,
subtitleParam,
}: PointsColumnProps) { }: PointsColumnProps) {
const { formatMessage } = await getIntl() const { formatMessage } = await getIntl()
@@ -72,9 +61,11 @@ async function PointsColumn({
<Title color="white" level="h2" textAlign="center"> <Title color="white" level="h2" textAlign="center">
{points ?? nights ?? "N/A"} {points ?? nights ?? "N/A"}
</Title> </Title>
<Body color="white" textAlign="center"> {subtitle ? (
{subtitle ? formatMessage({ id: subtitle }) : ""} {subtitleParam} <Body color="white" textAlign="center">
</Body> {subtitle}
</Body>
) : null}
</article> </article>
) )
} }

View File

@@ -1,5 +1,6 @@
import { MembershipLevelEnum } from "@/constants/membershipLevels" import { MembershipLevelEnum } from "@/constants/membershipLevels"
import { getIntl } from "@/i18n"
import { getLang } from "@/i18n/serverContext" import { getLang } from "@/i18n/serverContext"
import { getMembershipLevelObject } from "@/utils/membershipLevel" import { getMembershipLevelObject } from "@/utils/membershipLevel"
import { getMembership } from "@/utils/user" import { getMembership } from "@/utils/user"
@@ -14,6 +15,8 @@ import {
import { UserProps } from "@/types/components/myPages/user" import { UserProps } from "@/types/components/myPages/user"
export default async function Points({ user }: UserProps) { export default async function Points({ user }: UserProps) {
const { formatMessage } = await getIntl()
const membership = getMembership(user.memberships) const membership = getMembership(user.memberships)
const nextLevel = getMembershipLevelObject( const nextLevel = getMembershipLevelObject(
membership?.nextLevel as MembershipLevelEnum, membership?.nextLevel as MembershipLevelEnum,
@@ -26,14 +29,16 @@ export default async function Points({ user }: UserProps) {
{nextLevel && ( {nextLevel && (
<NextLevelPointsColumn <NextLevelPointsColumn
points={membership?.pointsRequiredToNextlevel} points={membership?.pointsRequiredToNextlevel}
subtitleParam={nextLevel.name} subtitle={`${formatMessage({ id: "next level:" })} ${nextLevel.name}`}
/> />
)} )}
{membership?.nightsToTopTier && ( {membership?.nightsToTopTier && (
<NextLevelNightsColumn <NextLevelNightsColumn
nights={membership.nightsToTopTier} nights={membership.nightsToTopTier}
subtitleParam={membership.tierExpirationDate} subtitle={
subtitle={membership.tierExpirationDate ? "by" : ""} membership.tierExpirationDate &&
`by ${membership.tierExpirationDate}`
}
/> />
)} )}
</PointsContainer> </PointsContainer>

View File

@@ -10,6 +10,7 @@ import {
StayOnLevelColumn, StayOnLevelColumn,
YourPointsColumn, YourPointsColumn,
} from "@/components/MyPages/Blocks/Overview/Stats/Points/PointsColumn" } from "@/components/MyPages/Blocks/Overview/Stats/Points/PointsColumn"
import { getIntl } from "@/i18n"
import { getMembershipLevelObject } from "@/utils/membershipLevel" import { getMembershipLevelObject } from "@/utils/membershipLevel"
import { getMembership } from "@/utils/user" import { getMembership } from "@/utils/user"
@@ -18,6 +19,8 @@ import { LangParams } from "@/types/params"
/* TODO */ /* TODO */
export default async function Points({ user, lang }: UserProps & LangParams) { export default async function Points({ user, lang }: UserProps & LangParams) {
const { formatMessage } = await getIntl()
const membership = getMembership(user.memberships) const membership = getMembership(user.memberships)
const nextLevel = getMembershipLevelObject( const nextLevel = getMembershipLevelObject(
membership?.nextLevel as MembershipLevelEnum, membership?.nextLevel as MembershipLevelEnum,
@@ -32,18 +35,21 @@ export default async function Points({ user, lang }: UserProps & LangParams) {
{membership?.currentPoints ? ( {membership?.currentPoints ? (
<StayOnLevelColumn <StayOnLevelColumn
points={membership?.currentPoints} //TODO points={membership?.currentPoints} //TODO
subtitleParam={membership?.expirationDate} subtitle={`${formatMessage({ id: "by" })} ${membership?.expirationDate}`}
/> />
) : ( ) : (
<> <>
<NextLevelPointsColumn <NextLevelPointsColumn
points={membership?.pointsRequiredToNextlevel} points={membership?.pointsRequiredToNextlevel}
subtitleParam={nextLevel.name} subtitle={`${formatMessage({ id: "next level:" })} ${nextLevel.name}`}
/> />
{nextLevel?.level === membershipLevels.L7 && ( {membership?.nightsToTopTier && (
<NextLevelNightsColumn <NextLevelNightsColumn
nights={100} //TODO nights={membership.nightsToTopTier}
subtitleParam={membership?.expirationDate} subtitle={
membership.tierExpirationDate &&
`by ${membership.tierExpirationDate}`
}
/> />
)} )}
</> </>

View File

@@ -1,7 +1,6 @@
interface PointsOrNightColumn { interface PointsOrNightColumn {
title?: string title?: string
subtitle?: string subtitle?: string
subtitleParam?: string
} }
export interface PointsColumn extends PointsOrNightColumn { export interface PointsColumn extends PointsOrNightColumn {