Merged in fix/LOY-359-use-scandic-native-tier-data (pull request #2846)

fix(LOY-359): Always use scandic native tier data for all level related data

* fix(LOY-359): Always use scandic native tier data for all level related data


Approved-by: Erik Tiekstra
Approved-by: Matilda Landström
This commit is contained in:
Chuma Mcphoy (We Ahead)
2025-09-24 13:50:32 +00:00
parent e13b6a2b1e
commit 5bbd7eb9ab
4 changed files with 32 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
import { dt } from "@scandic-hotels/common/dt"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { Typography } from "@scandic-hotels/design-system/Typography"
import { getScandicNativeMembership } from "@scandic-hotels/trpc/routers/user/helpers"
import { getIntl } from "@/i18n"
import { getLang } from "@/i18n/serverContext"
@@ -20,13 +21,17 @@ export default async function LevelProgressCard({
className,
color = "Surface/Brand/Primary 1/OnSurface/Default",
}: levelProgressCardProps) {
if (!user.membership?.membershipLevel) {
const friendsMembership = user.loyalty
? getScandicNativeMembership(user.loyalty)
: null
if (!friendsMembership) {
return null
}
const intl = await getIntl()
const lang = await getLang()
const data = await getLevelProgressData(user.membership)
const data = await getLevelProgressData(friendsMembership)
const classNames = levelProgressCardVariants({ className, color })
return (
@@ -44,7 +49,7 @@ export default async function LevelProgressCard({
{intl.formatMessage(
{ defaultMessage: "Valid until {date}" },
{
date: dt(user.membership.tierExpirationDate)
date: dt(friendsMembership.tierExpires)
.locale(lang)
.format("D MMM YYYY"),
}

View File

@@ -6,14 +6,14 @@ import { isHighestMembership } from "@/utils/user"
import { type LevelProgressData, type ProgressCalculation } from "./types"
import type { FriendsMembership } from "@scandic-hotels/trpc/types/user"
import type { NativeFriendsMembership } from "@scandic-hotels/trpc/types/user"
export async function getLevelProgressData(
membership: NonNullable<FriendsMembership>
membership: NonNullable<NativeFriendsMembership>
): Promise<LevelProgressData> {
const caller = await serverClient()
const currentLevel = await caller.contentstack.loyaltyLevels.byLevel({
level: MembershipLevelEnum[membership.membershipLevel],
level: MembershipLevelEnum[membership.tier],
})
const earned = membership.tierPoints ?? 0
@@ -24,7 +24,7 @@ export async function getLevelProgressData(
? currentLevel.required_points - earned
: undefined
if (isHighestMembership(membership.membershipLevel)) {
if (isHighestMembership(membership.tier)) {
return toKeepCurrent
? {
type: "highest-incomplete",
@@ -38,7 +38,7 @@ export async function getLevelProgressData(
return {
type: "lower-level",
earned,
toNext: membership.pointsRequiredToNextlevel ?? 0,
toNext: membership.pointsToNextTier ?? 0,
toKeepCurrent,
}
}