diff --git a/apps/web/app/(app)/environments/[environmentId]/components/PosthogIdentify.tsx b/apps/web/app/(app)/environments/[environmentId]/components/PosthogIdentify.tsx index 31172c3052..7bc4df1484 100644 --- a/apps/web/app/(app)/environments/[environmentId]/components/PosthogIdentify.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/components/PosthogIdentify.tsx @@ -5,15 +5,26 @@ import { usePostHog } from "posthog-js/react"; import { useEffect } from "react"; import { env } from "@formbricks/lib/env"; +import { TSubscriptionStatus } from "@formbricks/types/teams"; const posthogEnabled = env.NEXT_PUBLIC_POSTHOG_API_KEY && env.NEXT_PUBLIC_POSTHOG_API_HOST; export default function PosthogIdentify({ session, environmentId, + teamId, + teamName, + inAppSurveyBillingStatus, + linkSurveyBillingStatus, + userTargetingBillingStatus, }: { session: Session; environmentId: string; + teamId: string; + teamName: string; + inAppSurveyBillingStatus: TSubscriptionStatus; + linkSurveyBillingStatus: TSubscriptionStatus; + userTargetingBillingStatus: TSubscriptionStatus; }) { const posthog = usePostHog(); @@ -21,8 +32,23 @@ export default function PosthogIdentify({ if (posthogEnabled && session.user && posthog) { posthog.identify(session.user.id, { name: session.user.name, email: session.user.email }); posthog.group("environment", environmentId, { name: environmentId }); + posthog.group("team", teamId, { + name: teamName, + inAppSurveyBillingStatus, + linkSurveyBillingStatus, + userTargetingBillingStatus, + }); } - }, [session, environmentId, posthog]); + }, [ + posthog, + session.user, + environmentId, + teamId, + teamName, + inAppSurveyBillingStatus, + linkSurveyBillingStatus, + userTargetingBillingStatus, + ]); return null; } diff --git a/apps/web/app/(app)/environments/[environmentId]/layout.tsx b/apps/web/app/(app)/environments/[environmentId]/layout.tsx index 9a8f4906bc..ad7f22a55c 100644 --- a/apps/web/app/(app)/environments/[environmentId]/layout.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/layout.tsx @@ -6,6 +6,7 @@ import { redirect } from "next/navigation"; import { authOptions } from "@formbricks/lib/authOptions"; import { IS_FORMBRICKS_CLOUD } from "@formbricks/lib/constants"; import { hasUserEnvironmentAccess } from "@formbricks/lib/environment/auth"; +import { getTeamByEnvironmentId } from "@formbricks/lib/team/service"; import { AuthorizationError } from "@formbricks/types/errors"; import ToasterClient from "@formbricks/ui/ToasterClient"; @@ -22,10 +23,23 @@ export default async function EnvironmentLayout({ children, params }) { throw new AuthorizationError("Not authorized"); } + const team = await getTeamByEnvironmentId(params.environmentId); + if (!team) { + throw new Error("Team not found"); + } + return ( <> - + ; + export const ZSubscription = z.object({ - status: z.enum(["active", "cancelled", "inactive"]).default("inactive"), + status: ZSubscriptionStatus, unlimited: z.boolean().default(false), });