feat: add posthog student signup

This commit is contained in:
Rotimi Best
2024-04-07 22:01:36 +01:00
parent d01c1a1ba3
commit 9311a21de8
6 changed files with 43 additions and 15 deletions
@@ -63,7 +63,7 @@ export async function getOrgTeam(orgId: string) {
};
}
export async function getOrganizations(userId: string) {
export async function getOrganizations(userId: string, isOrgSite?: boolean, orgSiteName?: string) {
const { data, error } = await supabase
.from('organizationmember')
.select(
@@ -120,19 +120,30 @@ export async function getOrganizations(userId: string) {
orgs.set(orgsArray);
if (localStorage) {
const lastOrgSiteName = localStorage.getItem('classroomio_org_sitename');
// If this is a student dashboard
if (isOrgSite && orgSiteName) {
const orgData = orgsArray.find((org) => org.siteName === orgSiteName);
const lastOrg = orgsArray.find((org) => org.siteName === lastOrgSiteName);
if (lastOrg) {
currentOrg.set(lastOrg);
if (orgData) {
currentOrg.set(orgData);
}
}
} else {
// Check if org was last visited in localhost
if (localStorage) {
const lastOrgSiteName = localStorage.getItem('classroomio_org_sitename');
const _currentOrg = get(currentOrg);
if (!_currentOrg.siteName) {
currentOrg.set(orgsArray[0]);
const lastOrg = orgsArray.find((org) => org.siteName === lastOrgSiteName);
if (lastOrg) {
currentOrg.set(lastOrg);
}
}
// Default to setting the first org in the array of orgs
const _currentOrg = get(currentOrg);
if (!_currentOrg.siteName) {
currentOrg.set(orgsArray[0]);
}
}
}
@@ -1,13 +1,13 @@
import { dev } from '$app/environment';
import posthog from 'posthog-js';
export const capturePosthogEvent = (event: string, properties?: Record<string, any>): void => {
export const capturePosthogEvent = (event: string, properties?: Record<string, unknown>): void => {
if (dev) return;
posthog.capture(event, properties);
};
export const identifyPosthogUser = (id: string, properties?: Record<string, any>): void => {
export const identifyPosthogUser = (id: string, properties?: Record<string, unknown>): void => {
if (dev) return;
posthog.identify(id, properties);
+1 -1
View File
@@ -166,7 +166,7 @@
// Set user in sentry
setAnalyticsUser();
const orgRes = await getOrganizations(profileData.id);
const orgRes = await getOrganizations(profileData.id, data.isOrgSite, data.orgSiteName);
// student redirect
if (data.isOrgSite) {
@@ -8,6 +8,7 @@
import AuthUI from '$lib/components/AuthUI/index.svelte';
import { currentOrg } from '$lib/utils/store/org';
import { capturePosthogEvent } from '$lib/utils/services/posthog';
import { globalStore } from '$lib/utils/store/app';
let formRef: HTMLFormElement;
let supabase = getSupabase();
@@ -40,6 +41,12 @@
capturePosthogEvent('login', {
email: fields.email
});
if ($globalStore.isOrgSite) {
capturePosthogEvent('student_login', {
email: fields.email
});
}
} catch (error) {
submitError = error.error_description || error.message;
loading = false;
@@ -167,7 +167,7 @@
// Set extra metadata based off location
await setMetaData();
let { data, error } = await supabase
await supabase
.from('profile')
.update({
...fields,
@@ -14,6 +14,7 @@
import { profile } from '$lib/utils/store/user';
import { currentOrg } from '$lib/utils/store/org';
import { capturePosthogEvent } from '$lib/utils/services/posthog';
import { globalStore } from '$lib/utils/store/app';
let supabase = getSupabase();
let fields = Object.assign({}, SIGNUP_FIELDS);
@@ -92,6 +93,15 @@
metadata
});
if ($globalStore.isOrgSite) {
capturePosthogEvent('student_signed_up', {
distinct_id: $profile.id || '',
email: authUser.email,
username: regexUsernameMatch[1],
metadata
});
}
if (redirect) {
goto(redirect);
} else {