Files
web/apps/scandic-web/utils/user.ts
Anton Gunnarsson bbcabfa0ba Merged in feat/sw-2864-move-hotels-router-to-trpc-package (pull request #2410)
feat (SW-2864): Move booking router to trpc package

* Add env to trpc package

* Add eslint to trpc package

* Apply lint rules

* Use direct imports from trpc package

* Add lint-staged config to trpc

* Move lang enum to common

* Restructure trpc package folder structure

* WIP first step

* update internal imports in trpc

* Fix most errors in scandic-web

Just 100 left...

* Move Props type out of trpc

* Fix CategorizedFilters types

* Move more schemas in hotel router

* Fix deps

* fix getNonContentstackUrls

* Fix import error

* Fix entry error handling

* Fix generateMetadata metrics

* Fix alertType enum

* Fix duplicated types

* lint:fix

* Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package

* Fix broken imports

* Move booking router to trpc package

* Merge branch 'master' into feat/sw-2864-move-hotels-router-to-trpc-package


Approved-by: Linus Flood
2025-06-26 09:02:59 +00:00

65 lines
1.9 KiB
TypeScript

import {
type MembershipLevel,
MembershipLevelEnum,
} from "@scandic-hotels/common/constants/membershipLevels"
import { scandicMembershipTypes } from "@scandic-hotels/trpc/routers/user/helpers"
import type {
EurobonusMembership,
Membership,
User,
UserLoyalty,
} from "@scandic-hotels/trpc/types/user"
function isEurobonusMembership(
membership: Membership
): membership is EurobonusMembership {
return membership.type === scandicMembershipTypes.SAS_EB
}
export function getEurobonusMembership(loyalty: UserLoyalty) {
return loyalty.memberships?.find(isEurobonusMembership)
}
export function getMembershipCards(userLoyalty: UserLoyalty) {
return userLoyalty.memberships
.filter(
(membership) => membership.type !== scandicMembershipTypes.SCANDIC_NATIVE
)
.map((membership) => ({
currentPoints: 0, // We only have points for Friends so we can't set this for now
expirationDate: membership.tierExpires,
membershipNumber: membership.membershipNumber,
membershipType: membership.type,
memberSince: membership.memberSince,
}))
}
export function isHighestMembership(
membershipLevel: MembershipLevel | undefined
) {
return membershipLevel == MembershipLevelEnum.L7
}
export function getInitials(
firstName: User["firstName"],
lastName: User["lastName"]
) {
if (!firstName || !lastName) return null
const firstInitial = firstName.charAt(0).toUpperCase()
const lastInitial = lastName.charAt(0).toUpperCase()
return `${firstInitial}${lastInitial}`
}
export function getSteppedUpLevel(
currentValue: MembershipLevel,
stepsUp: number
): MembershipLevel {
const values = Object.values(MembershipLevelEnum)
const currentIndex = values.indexOf(currentValue as MembershipLevelEnum)
if (currentIndex === -1 || currentIndex === values.length - 1) {
return currentValue
}
return values[currentIndex + stepsUp]
}