mirror of
https://github.com/formbricks/formbricks.git
synced 2026-02-11 17:19:33 -06:00
add usage based attributes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user