Merged in feat/sw-1975-get-profile-v2 (pull request #1651)
Use get Profile V2 endpoint Approved-by: Linus Flood
This commit is contained in:
+1
-1
@@ -10,7 +10,7 @@ import type { UserProps } from "@/types/components/myPages/user"
|
||||
|
||||
export default async function ExpiringPoints({ user }: UserProps) {
|
||||
const intl = await getIntl()
|
||||
const membership = getFriendsMembership(user.memberships)
|
||||
const membership = getFriendsMembership(user.loyalty)
|
||||
|
||||
if (!membership || !membership.pointsToExpire) {
|
||||
// TODO: handle this case?
|
||||
|
||||
@@ -12,7 +12,7 @@ import type { UserProps } from "@/types/components/myPages/user"
|
||||
export default async function Points({ user }: UserProps) {
|
||||
const intl = await getIntl()
|
||||
|
||||
const membership = getFriendsMembership(user.memberships)
|
||||
const membership = getFriendsMembership(user.loyalty)
|
||||
|
||||
const nextLevel =
|
||||
membership?.nextLevel && MembershipLevelEnum[membership.nextLevel]
|
||||
|
||||
@@ -5,7 +5,10 @@ import DiamondAddIcon from "@scandic-hotels/design-system/Icons/DiamondAddIcon"
|
||||
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
|
||||
import { Typography } from "@scandic-hotels/design-system/Typography"
|
||||
|
||||
import { TIER_TO_FRIEND_MAP } from "@/constants/membershipLevels"
|
||||
import {
|
||||
SAS_EUROBONUS_TIER_TO_NAME_MAP,
|
||||
TIER_TO_FRIEND_MAP,
|
||||
} from "@/constants/membershipLevels"
|
||||
import { env } from "@/env/server"
|
||||
import { getProfile } from "@/lib/trpc/memoizedRequests"
|
||||
|
||||
@@ -14,17 +17,13 @@ import SectionHeader from "@/components/Section/Header"
|
||||
import SectionLink from "@/components/Section/Link"
|
||||
import SkeletonShimmer from "@/components/SkeletonShimmer"
|
||||
import { getIntl } from "@/i18n"
|
||||
import {
|
||||
getEurobonusMembership,
|
||||
getFriendsMembership,
|
||||
scandicMemberships,
|
||||
} from "@/utils/user"
|
||||
import { getEurobonusMembership } from "@/utils/user"
|
||||
|
||||
import { UnlinkSAS } from "./UnlinkSAS"
|
||||
|
||||
import styles from "./linkedAccounts.module.css"
|
||||
|
||||
import type { Membership } from "@/types/user"
|
||||
import type { UserLoyalty } from "@/types/user"
|
||||
|
||||
type Props = {
|
||||
title?: string
|
||||
@@ -78,20 +77,20 @@ async function MatchedAccountInfo() {
|
||||
|
||||
const intl = await getIntl()
|
||||
|
||||
const eurobonusMembership = getEurobonusMembership(user.memberships)
|
||||
const eurobonusMembership = getEurobonusMembership(user.loyalty)
|
||||
const friendsMembership = user.membership
|
||||
if (!eurobonusMembership || !friendsMembership) {
|
||||
return null
|
||||
}
|
||||
|
||||
const sasLevelName = eurobonusMembership.membershipLevel || "-"
|
||||
const sasLevelName = SAS_EUROBONUS_TIER_TO_NAME_MAP[eurobonusMembership.tier]
|
||||
const sasMembershipNumber = eurobonusMembership.membershipNumber
|
||||
const sasTierExpirationDate = eurobonusMembership.tierExpirationDate
|
||||
const sasTierExpirationDate = eurobonusMembership.tierExpires
|
||||
|
||||
const scandicLevelName = TIER_TO_FRIEND_MAP[friendsMembership.membershipLevel]
|
||||
const scandicExpirationDate = friendsMembership.tierExpirationDate
|
||||
|
||||
const matchState = calculateMatchState(user.memberships)
|
||||
const matchState = calculateMatchState(user.loyalty)
|
||||
|
||||
return (
|
||||
<section className={styles.matchedAccountSection}>
|
||||
@@ -278,30 +277,12 @@ function Label({ children }: { children: ReactNode }) {
|
||||
}
|
||||
|
||||
type MatchState = "boostedBySAS" | "boostedByScandic" | "noBoost"
|
||||
function calculateMatchState(memberships: Membership[]): MatchState {
|
||||
const eurobonusMembership = getEurobonusMembership(memberships)
|
||||
const friendsMembership = getFriendsMembership(memberships)
|
||||
const nativeMembership = memberships.find(
|
||||
(x) => x.membershipType === scandicMemberships.scandic_native_tiers
|
||||
)
|
||||
function calculateMatchState(loyalty: UserLoyalty): MatchState {
|
||||
if (!loyalty.tierBoostedBy) return "noBoost"
|
||||
if (loyalty.tierBoostedBy === "SAS_EB") return "boostedBySAS"
|
||||
|
||||
if (!eurobonusMembership || !friendsMembership || !nativeMembership) {
|
||||
return "noBoost"
|
||||
}
|
||||
|
||||
const nativeLevel = nativeMembership.membershipLevel
|
||||
const friendsLevel = friendsMembership.membershipLevel
|
||||
|
||||
if (nativeLevel !== friendsLevel) {
|
||||
return "boostedBySAS"
|
||||
}
|
||||
|
||||
// TODO check if SAS have been boosted by Scandic when API is available
|
||||
const isBoostedByScandic = false
|
||||
|
||||
if (isBoostedByScandic) {
|
||||
return "boostedByScandic"
|
||||
}
|
||||
// const eurobonusMembership = getEurobonusMembership(loyalty)
|
||||
// if (eurobonusMembership.boostedByScandic) return "boostedByScandic"
|
||||
|
||||
return "noBoost"
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import SkeletonShimmer from "@/components/SkeletonShimmer"
|
||||
import Body from "@/components/TempDesignSystem/Text/Body"
|
||||
import useClickOutside from "@/hooks/useClickOutside"
|
||||
import { useHandleKeyUp } from "@/hooks/useHandleKeyUp"
|
||||
import { type FriendsMembership, getInitials } from "@/utils/user"
|
||||
import { getInitials } from "@/utils/user"
|
||||
|
||||
import Avatar from "../Avatar"
|
||||
import MainMenuButton from "../MainMenuButton"
|
||||
@@ -20,7 +20,7 @@ import MyPagesMenuContent, { useMyPagesNavigation } from "../MyPagesMenuContent"
|
||||
import styles from "./myPagesMenu.module.css"
|
||||
|
||||
import { DropdownTypeEnum } from "@/types/components/dropdown/dropdown"
|
||||
import type { User } from "@/types/user"
|
||||
import type { FriendsMembership,User } from "@/types/user"
|
||||
import type { LoyaltyLevel } from "@/server/routers/contentstack/loyaltyLevel/output"
|
||||
|
||||
export type MyPagesMenuProps = {
|
||||
|
||||
@@ -127,8 +127,19 @@ const user: SafeUser = {
|
||||
firstName: "",
|
||||
language: undefined,
|
||||
lastName: "",
|
||||
membershipNumber: "",
|
||||
membership: undefined,
|
||||
memberships: [],
|
||||
loyalty: {
|
||||
memberships: [],
|
||||
pointExpirations: [],
|
||||
points: {
|
||||
earned: 0,
|
||||
spent: 0,
|
||||
spendable: 0,
|
||||
},
|
||||
tier: "L1",
|
||||
tierExpires: "",
|
||||
},
|
||||
name: "",
|
||||
phoneNumber: undefined,
|
||||
profileId: "",
|
||||
|
||||
@@ -16,7 +16,7 @@ export default async function SidebarMyPages() {
|
||||
const intl = await getIntl()
|
||||
const profile = await getProfileSafely()
|
||||
const eurobonusMembership = profile
|
||||
? getEurobonusMembership(profile.memberships)
|
||||
? getEurobonusMembership(profile.loyalty)
|
||||
: null
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user