Files
web/apps/scandic-web/components/Blocks/DynamicContent/Overview/Stats/Points/index.tsx
Anton Gunnarsson 60af31762b Merged in fix/make-user-loyalty-optional (pull request #2044)
fix: Make loyalty optional on user

* Optional user loyalty

* merge


Approved-by: Joakim Jäderberg
Approved-by: Linus Flood
2025-05-12 09:00:11 +00:00

62 lines
1.8 KiB
TypeScript

import { MembershipLevelEnum } from "@/constants/membershipLevels"
import { serverClient } from "@/lib/trpc/server"
import { getIntl } from "@/i18n"
import { getFriendsMembership } from "@/utils/user"
import PointsContainer from "./Container"
import { PointsColumn } from "./PointsColumn"
import type { UserProps } from "@/types/components/myPages/user"
export default async function Points({ user }: UserProps) {
const intl = await getIntl()
const membership = user.loyalty ? getFriendsMembership(user.loyalty) : null
const nextLevel =
membership?.nextLevel && MembershipLevelEnum[membership.nextLevel]
? await serverClient().contentstack.loyaltyLevels.byLevel({
level: MembershipLevelEnum[membership.nextLevel],
})
: null
return (
<PointsContainer>
<PointsColumn
value={membership?.currentPoints}
title={intl.formatMessage({
defaultMessage: "Your points to spend",
})}
subtitle={intl.formatMessage({
defaultMessage: "as of today",
})}
/>
{nextLevel && (
<PointsColumn
value={membership?.pointsRequiredToNextlevel}
title={intl.formatMessage({
defaultMessage: "Points needed to level up",
})}
subtitle={intl.formatMessage(
{
defaultMessage: "next level: {nextLevel}",
},
{ nextLevel: nextLevel.name }
)}
/>
)}
{/* TODO: Show NextLevelNightsColumn when nightsToTopTier data is correct from Antavo */}
{/* {membership?.nightsToTopTier && (
<NextLevelNightsColumn
nights={membership.nightsToTopTier}
subtitle={
membership.tierExpirationDate &&
`by ${membership.tierExpirationDate}`
}
/>
)} */}
</PointsContainer>
)
}