From 5bbd7eb9ab53e803245c52295942fbbaeb138e34 Mon Sep 17 00:00:00 2001 From: "Chuma Mcphoy (We Ahead)" Date: Wed, 24 Sep 2025 13:50:32 +0000 Subject: [PATCH] Merged in fix/LOY-359-use-scandic-native-tier-data (pull request #2846) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../Overview/MembershipOverviewCard/index.tsx | 21 +++++++++++++------ .../MyPages/LevelProgressCard/index.tsx | 11 +++++++--- .../MyPages/LevelProgressCard/utils.ts | 10 ++++----- packages/trpc/lib/routers/user/helpers.ts | 4 ++++ 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/index.tsx index 6a7f6bec3..d35f7175f 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/index.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/index.tsx @@ -2,7 +2,10 @@ import { MembershipLevelEnum } from "@scandic-hotels/common/constants/membership import { Divider } from "@scandic-hotels/design-system/Divider" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import { Typography } from "@scandic-hotels/design-system/Typography" -import { getEurobonusMembership } from "@scandic-hotels/trpc/routers/user/helpers" +import { + getEurobonusMembership, + getScandicNativeMembership, +} from "@scandic-hotels/trpc/routers/user/helpers" import { membershipLevels } from "@/constants/membershipLevels" @@ -25,13 +28,19 @@ export default async function MembershipOverviewCard({ }: MembershipOverviewCardProps) { const intl = await getIntl() - if (!user.membership?.membershipLevel) { + const friendsMembership = user.loyalty + ? getScandicNativeMembership(user.loyalty) + : null + + if (!user.membership || !friendsMembership) { return null } + const currentPoints = user.membership.currentPoints + const pointsToSpendText = - typeof user.membership.currentPoints === "number" - ? intl.formatNumber(user.membership.currentPoints) + typeof currentPoints === "number" + ? intl.formatNumber(currentPoints) : intl.formatMessage({ defaultMessage: "N/A" }) const sasMembership = user.loyalty @@ -55,7 +64,7 @@ export default async function MembershipOverviewCard({ { defaultMessage: "LEVEL {level}", }, - { level: membershipLevels[user.membership.membershipLevel] } + { level: membershipLevels[friendsMembership.tier] } )} @@ -65,7 +74,7 @@ export default async function MembershipOverviewCard({ + membership: NonNullable ): Promise { 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, } } diff --git a/packages/trpc/lib/routers/user/helpers.ts b/packages/trpc/lib/routers/user/helpers.ts index 1dfe5d648..d2337eb28 100644 --- a/packages/trpc/lib/routers/user/helpers.ts +++ b/packages/trpc/lib/routers/user/helpers.ts @@ -48,6 +48,10 @@ export function getFriendsMembership(userLoyalty: UserLoyalty) { return result } +export function getScandicNativeMembership(loyalty: UserLoyalty) { + return loyalty.memberships?.find(isScandicNativeMembership) +} + function isEurobonusMembership( membership: Membership ): membership is EurobonusMembership {