* fix: flaky e2e * fix: skip trial button visibility * fix type error * fix test * update * Update skipTeamTrials.test.ts * fix test
58 lines
2.0 KiB
TypeScript
58 lines
2.0 KiB
TypeScript
import { trpc } from "@calcom/trpc/react";
|
|
|
|
import { IS_SELF_HOSTED } from "../constants";
|
|
import hasKeyInMetadata from "../hasKeyInMetadata";
|
|
|
|
export function useHasPaidPlan() {
|
|
if (IS_SELF_HOSTED) return { isPending: false, hasPaidPlan: true };
|
|
|
|
const { data: hasTeamPlan, isPending: isPendingTeamQuery } = trpc.viewer.teams.hasTeamPlan.useQuery();
|
|
|
|
const { data: user, isPending: isPendingUserQuery } = trpc.viewer.me.get.useQuery();
|
|
|
|
const isPending = isPendingTeamQuery || isPendingUserQuery;
|
|
|
|
const isCurrentUsernamePremium =
|
|
user && hasKeyInMetadata(user, "isPremium") ? !!user.metadata.isPremium : false;
|
|
|
|
const hasPaidPlan = hasTeamPlan?.hasTeamPlan || isCurrentUsernamePremium;
|
|
|
|
return { isPending, hasPaidPlan };
|
|
}
|
|
|
|
export function useTeamInvites() {
|
|
const listInvites = trpc.viewer.teams.listInvites.useQuery();
|
|
|
|
return { isPending: listInvites.isPending, listInvites: listInvites.data };
|
|
}
|
|
|
|
export function useHasTeamPlan() {
|
|
const { data: hasTeamPlan, isPending } = trpc.viewer.teams.hasTeamPlan.useQuery();
|
|
|
|
return { isPending, hasTeamPlan: hasTeamPlan?.hasTeamPlan };
|
|
}
|
|
|
|
export function useHasEnterprisePlan() {
|
|
// TODO: figure out how to get "has Enterprise / has Org" from the backend
|
|
const { data: hasTeamPlan, isPending } = trpc.viewer.teams.hasTeamPlan.useQuery();
|
|
|
|
return { isPending, hasTeamPlan: hasTeamPlan?.hasTeamPlan };
|
|
}
|
|
|
|
export function useHasActiveTeamPlan() {
|
|
if (IS_SELF_HOSTED) return { isPending: false, hasActiveTeamPlan: true, isTrial: false };
|
|
|
|
const { data, isPending } = trpc.viewer.teams.hasActiveTeamPlan.useQuery();
|
|
|
|
return { isPending, hasActiveTeamPlan: !!data?.isActive, isTrial: !!data?.isTrial };
|
|
}
|
|
export function useHasActiveTeamPlanAsOwner() {
|
|
if (IS_SELF_HOSTED) return { isPending: false, hasActiveTeamPlan: true, isTrial: false };
|
|
|
|
const { data, isPending } = trpc.viewer.teams.hasActiveTeamPlan.useQuery({ ownerOnly: true });
|
|
|
|
return { isPending, hasActiveTeamPlan: !!data?.isActive, isTrial: !!data?.isTrial };
|
|
}
|
|
|
|
export default useHasPaidPlan;
|