add usage based attributes

This commit is contained in:
Johannes
2023-08-15 17:13:44 +02:00
parent 1764cb5f1e
commit 5453b2fb31
2 changed files with 29 additions and 1 deletions

View File

@@ -5,9 +5,14 @@ import { formbricksEnabled } from "@/lib/formbricks";
import formbricks from "@formbricks/js";
import { useEffect } from "react";
type UsageAttributesUpdaterProps = {
numSurveys: number;
totalSubmissions: number;
};
export default function FormbricksClient({ session }) {
useEffect(() => {
if (formbricksEnabled && session.user && formbricks) {
if (formbricksEnabled && session?.user && formbricks) {
formbricks.init({
environmentId: env.NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID || "",
apiHost: env.NEXT_PUBLIC_FORMBRICKS_API_HOST || "",
@@ -22,3 +27,23 @@ export default function FormbricksClient({ session }) {
}, [session]);
return null;
}
export const updateUsageAttributes = (numSurveys, totalSubmissions) => {
if (!formbricksEnabled || !formbricks) return;
if (numSurveys >= 3) {
formbricks.setAttribute("HasThreeSurveys", "true");
}
if (totalSubmissions >= 20) {
formbricks.setAttribute("HasTwentySubmissions", "true");
}
};
export function UsageAttributesUpdater({ numSurveys, totalSubmissions }: UsageAttributesUpdaterProps) {
useEffect(() => {
updateUsageAttributes(numSurveys, totalSubmissions);
}, [numSurveys, totalSubmissions]);
return null;
}

View File

@@ -1,3 +1,4 @@
import { UsageAttributesUpdater } from "@/app/(app)/FormbricksClient";
import SurveyDropDownMenu from "@/app/(app)/environments/[environmentId]/surveys/SurveyDropDownMenu";
import SurveyStarter from "@/app/(app)/environments/[environmentId]/surveys/SurveyStarter";
import SurveyStatusIndicator from "@/components/shared/SurveyStatusIndicator";
@@ -16,6 +17,7 @@ export default async function SurveysList({ environmentId }: { environmentId: st
const surveys: TSurveyWithAnalytics[] = await getSurveysWithAnalytics(environmentId);
const environments: TEnvironment[] = await getEnvironments(product.id);
const otherEnvironment = environments.find((e) => e.type !== environment.type);
const totalSubmissions = surveys.reduce((acc, survey) => acc + (survey.analytics?.numResponses || 0), 0);
if (surveys.length === 0) {
return <SurveyStarter environmentId={environmentId} environment={environment} product={product} />;
@@ -94,6 +96,7 @@ export default async function SurveysList({ environmentId }: { environmentId: st
</li>
))}
</ul>
<UsageAttributesUpdater numSurveys={surveys.length} totalSubmissions={totalSubmissions} />
</>
);
}