mirror of
https://github.com/docmost/docmost.git
synced 2026-05-07 14:43:06 +08:00
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { usePostHog } from "posthog-js/react";
|
|
import { useEffect } from "react";
|
|
import { useAtom } from "jotai";
|
|
import { currentUserAtom } from "@/features/user/atoms/current-user-atom.ts";
|
|
|
|
export function PosthogUser() {
|
|
const posthog = usePostHog();
|
|
const [currentUser] = useAtom(currentUserAtom);
|
|
|
|
useEffect(() => {
|
|
if (currentUser) {
|
|
const user = currentUser?.user;
|
|
const workspace = currentUser?.workspace;
|
|
if (!user || !workspace) return;
|
|
|
|
posthog?.identify(user.id, {
|
|
name: user.name,
|
|
email: user.email,
|
|
workspaceId: user.workspaceId,
|
|
workspaceHostname: workspace.hostname,
|
|
lastActiveAt: new Date().toISOString(),
|
|
createdAt: user.createdAt,
|
|
source: "docmost-app",
|
|
});
|
|
posthog?.group("workspace", workspace.id, {
|
|
name: workspace.name,
|
|
hostname: workspace.hostname,
|
|
plan: workspace?.plan,
|
|
status: workspace.status,
|
|
isOnTrial: !!workspace.trialEndAt,
|
|
hasStripeCustomerId: !!workspace.stripeCustomerId,
|
|
memberCount: workspace.memberCount,
|
|
lastActiveAt: new Date().toISOString(),
|
|
createdAt: workspace.createdAt,
|
|
source: "docmost-app",
|
|
});
|
|
}
|
|
}, [posthog, currentUser]);
|
|
|
|
return null;
|
|
}
|