📈 Capture logout event + merge set and identify calls (#1211)

Signed-off-by: Luke Vella <me@lukevella.com>
This commit is contained in:
Luke Vella 2024-07-21 09:47:00 +01:00 committed by GitHub
parent c126cbdda1
commit ba3008b3f2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 16 deletions

View file

@ -1,14 +1,29 @@
"use client";
import { Button, ButtonProps } from "@rallly/ui/button";
import { signOut } from "next-auth/react";
import { usePostHog } from "@/utils/posthog";
export function LogoutButton({
children,
onClick,
...rest
}: React.PropsWithChildren<ButtonProps>) {
const posthog = usePostHog();
return (
<form action="/auth/logout" method="POST">
<Button {...rest} type="submit">
<Button
{...rest}
onClick={async (e) => {
onClick?.(e);
posthog?.capture("logout");
posthog?.reset();
signOut({
redirect: true,
callbackUrl: "/login",
});
}}
>
{children}
</Button>
</form>
);
}

View file

@ -5,6 +5,7 @@ import { PostHogProvider as Provider, usePostHog } from "posthog-js/react";
import React from "react";
import { useMount } from "react-use";
import { useTranslation } from "@/app/i18n/client";
import { useUser } from "@/components/user-provider";
import { env } from "@/env";
@ -48,14 +49,18 @@ function usePostHogPageView() {
export function PostHogProvider(props: PostHogProviderProps) {
const { user } = useUser();
const { i18n } = useTranslation();
usePostHogPageView();
useMount(() => {
if (user.email) {
posthog.identify(user.id);
posthog.people.set({
$email: user.email,
$name: user.name,
posthog.identify(user.id, {
email: user.email,
name: user.name,
tier: user.tier,
timeZone: user.timeZone,
locale: i18n.language,
});
}
});

View file

@ -174,7 +174,6 @@ const getAuthOptions = (...args: GetServerSessionParams) =>
providers: providers,
pages: {
signIn: "/login",
signOut: "/logout",
error: "/auth/error",
},
events: {
@ -193,12 +192,6 @@ const getAuthOptions = (...args: GetServerSessionParams) =>
},
});
},
signOut({ session }) {
posthog?.capture({
distinctId: session.user.id,
event: "logout",
});
},
},
callbacks: {
async signIn({ user, email, profile }) {