Merged in feat/sw-1825-my-pages-sas-link-visibility (pull request #1479)
* Use SAS membership for my pages sas link visibility Approved-by: Joakim Jäderberg
This commit is contained in:
@@ -5,18 +5,23 @@ import { env } from "@/env/server"
|
|||||||
|
|
||||||
import { getIntl } from "@/i18n"
|
import { getIntl } from "@/i18n"
|
||||||
import { safeTry } from "@/utils/safeTry"
|
import { safeTry } from "@/utils/safeTry"
|
||||||
|
import { getEurobonusMembership } from "@/utils/user"
|
||||||
|
|
||||||
|
import type { Membership } from "@/types/user"
|
||||||
import type { Lang } from "@/constants/languages"
|
import type { Lang } from "@/constants/languages"
|
||||||
import type { MyPagesLink } from "./MyPagesLink"
|
import type { MyPagesLink } from "./MyPagesLink"
|
||||||
|
|
||||||
export const getPrimaryLinks = cache(
|
export const getPrimaryLinks = cache(
|
||||||
async ({ lang }: { lang: Lang }): Promise<MyPagesLink[]> => {
|
async ({
|
||||||
|
lang,
|
||||||
|
memberships,
|
||||||
|
}: {
|
||||||
|
lang: Lang
|
||||||
|
memberships: Membership[]
|
||||||
|
}): Promise<MyPagesLink[]> => {
|
||||||
const intl = await getIntl(lang)
|
const intl = await getIntl(lang)
|
||||||
const scandicSasPromise = safeTry(isScandicXSASActive())
|
const showSASLink = isScandicXSASActive(memberships)
|
||||||
const teamMemberPromise = safeTry(showTeamMemberCard())
|
const [showTeamMemberLink] = await safeTry(showTeamMemberCard())
|
||||||
|
|
||||||
const [showSASLink] = await scandicSasPromise
|
|
||||||
const [showTeamMemberLink] = await teamMemberPromise
|
|
||||||
|
|
||||||
const menuItems: MyPagesLink[] = [
|
const menuItems: MyPagesLink[] = [
|
||||||
{
|
{
|
||||||
@@ -61,16 +66,12 @@ export const getPrimaryLinks = cache(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
const isScandicXSASActive = cache(async () => {
|
const isScandicXSASActive = (memberships: Membership[]) => {
|
||||||
async function checkIfLinked() {
|
const eurobonusMembership = getEurobonusMembership(memberships)
|
||||||
// TODO: Implement this check
|
const isLinked = Boolean(eurobonusMembership)
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
const isLinked = await checkIfLinked()
|
|
||||||
|
|
||||||
return env.SAS_ENABLED && isLinked
|
return env.SAS_ENABLED && isLinked
|
||||||
})
|
}
|
||||||
|
|
||||||
const showTeamMemberCard = cache(async () => {
|
const showTeamMemberCard = cache(async () => {
|
||||||
async function getIsTeamMember() {
|
async function getIsTeamMember() {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { z } from "zod"
|
|||||||
import { Lang } from "@/constants/languages"
|
import { Lang } from "@/constants/languages"
|
||||||
import { safeProtectedProcedure } from "@/server/trpc"
|
import { safeProtectedProcedure } from "@/server/trpc"
|
||||||
|
|
||||||
|
import { getVerifiedUser } from "../../user/query"
|
||||||
import { getPrimaryLinks } from "./getPrimaryLinks"
|
import { getPrimaryLinks } from "./getPrimaryLinks"
|
||||||
import { getSecondaryLinks } from "./getSecondaryLinks"
|
import { getSecondaryLinks } from "./getSecondaryLinks"
|
||||||
|
|
||||||
@@ -36,8 +37,13 @@ export const myPagesNavigation = safeProtectedProcedure
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const user = await getVerifiedUser({ session: ctx.session })
|
||||||
|
if (!user || user.error) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
const [primaryLinks, secondaryLinks] = await Promise.all([
|
const [primaryLinks, secondaryLinks] = await Promise.all([
|
||||||
getPrimaryLinks({ lang }),
|
getPrimaryLinks({ lang, memberships: user.data.memberships }),
|
||||||
getSecondaryLinks({ lang }),
|
getSecondaryLinks({ lang }),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user