From 1bfd0b41cce191b354d6798d848028008597a9ca Mon Sep 17 00:00:00 2001 From: Dustin Do Date: Wed, 11 Sep 2024 12:47:40 +0700 Subject: [PATCH] feat(mobile): add auth event data (#307) --- apps/mobile/app/(auth)/login.tsx | 22 +++++-- apps/mobile/components/auth/auth-email.tsx | 30 ++++++++-- apps/mobile/components/auth/auth-social.tsx | 65 ++++++++++++++++++--- 3 files changed, 101 insertions(+), 16 deletions(-) diff --git a/apps/mobile/app/(auth)/login.tsx b/apps/mobile/app/(auth)/login.tsx index 2af31463..d4693c69 100644 --- a/apps/mobile/app/(auth)/login.tsx +++ b/apps/mobile/app/(auth)/login.tsx @@ -23,16 +23,30 @@ export default function LoginScreen() { const posthog = usePostHog() const handleSignedUp = useCallback( - (strategy: Strategy, userId?: string) => { - posthog.identify(userId) + ( + strategy: Strategy, + userData: { + id?: string + email?: string + name?: string + }, + ) => { + posthog.identify(userData.id) posthog.capture('user_signed_up', { strategy }) }, [posthog], ) const handleSignedIn = useCallback( - (strategy: Strategy, userId?: string) => { - posthog.identify(userId) + ( + strategy: Strategy, + userData: { + id?: string + email?: string + name?: string + }, + ) => { + posthog.identify(userData.id) posthog.capture('user_signed_up', { strategy }) }, [posthog], diff --git a/apps/mobile/components/auth/auth-email.tsx b/apps/mobile/components/auth/auth-email.tsx index edee0789..c104b63e 100644 --- a/apps/mobile/components/auth/auth-email.tsx +++ b/apps/mobile/components/auth/auth-email.tsx @@ -26,8 +26,22 @@ export function AuthEmail({ onSignedUp, onSignedIn, }: { - onSignedUp: (strategy: 'email_code', userId?: string) => void - onSignedIn: (strategy: 'email_code', userId?: string) => void + onSignedUp: ( + strategy: 'email_code', + userData: { + id?: string + email?: string + name?: string + }, + ) => void + onSignedIn: ( + strategy: 'email_code', + userData: { + id?: string + email?: string + name?: string + }, + ) => void }) { const { i18n } = useLingui() @@ -114,7 +128,11 @@ export function AuthEmail({ email: signUpAttempt.emailAddress!, name: signUpAttempt.firstName ?? '', }) - onSignedUp('email_code', signUpAttempt.id) + onSignedUp('email_code', { + id: signUpAttempt.id, + email: signUpAttempt.emailAddress ?? undefined, + name: signUpAttempt.firstName ?? undefined, + }) } else { console.error(signUpAttempt) } @@ -126,7 +144,11 @@ export function AuthEmail({ if (signInAttempt.status === 'complete') { await setActiveSignIn({ session: signInAttempt.createdSessionId }) // signed in - onSignedIn('email_code', signInAttempt.id) + onSignedIn('email_code', { + id: signInAttempt.id, + email: authEmailForm.getValues().emailAddress, + name: signInAttempt.userData.firstName ?? undefined, + }) } else { console.error(signInAttempt) } diff --git a/apps/mobile/components/auth/auth-social.tsx b/apps/mobile/components/auth/auth-social.tsx index c759b59c..56873950 100644 --- a/apps/mobile/components/auth/auth-social.tsx +++ b/apps/mobile/components/auth/auth-social.tsx @@ -15,8 +15,22 @@ type AuthSocialProps = { label: string icon: React.ComponentType strategy: Strategy - onSignedUp: (strategy: Strategy, userId?: string) => void - onSignedIn: (strategy: Strategy, userId?: string) => void + onSignedUp: ( + strategy: Strategy, + userData: { + id?: string + email?: string + name?: string + }, + ) => void + onSignedIn: ( + strategy: Strategy, + userData: { + id?: string + email?: string + name?: string + }, + ) => void } export function AuthSocial({ @@ -42,12 +56,19 @@ export function AuthSocial({ name: signUp.firstName ?? '', }) - onSignedUp(strategy, signUp.id) + onSignedUp(strategy, { + id: signUp.id, + email: signUp.emailAddress ?? undefined, + name: signUp.firstName ?? undefined, + }) }, 1000) } } else { // Use signIn or signUp for next steps such as MFA - onSignedIn(strategy, signIn?.id) + onSignedIn(strategy, { + id: signIn?.id, + name: signIn?.userData.firstName, + }) } // biome-ignore lint/suspicious/noExplicitAny: } catch (err: any) { @@ -69,8 +90,22 @@ export function GoogleAuthButton({ onSignedUp, onSignedIn, }: { - onSignedUp: (strategy: Strategy, userId?: string) => void - onSignedIn: (strategy: Strategy, userId?: string) => void + onSignedUp: ( + strategy: Strategy, + userData: { + id?: string + email?: string + name?: string + }, + ) => void + onSignedIn: ( + strategy: Strategy, + userData: { + id?: string + email?: string + name?: string + }, + ) => void }) { const { i18n } = useLingui() return ( @@ -88,8 +123,22 @@ export function AppleAuthButton({ onSignedUp, onSignedIn, }: { - onSignedUp: (strategy: Strategy, userId?: string) => void - onSignedIn: (strategy: Strategy, userId?: string) => void + onSignedUp: ( + strategy: Strategy, + userData: { + id?: string + email?: string + name?: string + }, + ) => void + onSignedIn: ( + strategy: Strategy, + userData: { + id?: string + email?: string + name?: string + }, + ) => void }) { const { i18n } = useLingui() return (