mirror of
https://github.com/lukevella/rallly.git
synced 2025-07-31 23:19:15 +02:00
📈 Capture logout event + merge set and identify calls (#1211)
Signed-off-by: Luke Vella <me@lukevella.com>
This commit is contained in:
parent
c126cbdda1
commit
ba3008b3f2
3 changed files with 29 additions and 16 deletions
|
@ -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>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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 }) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue