feat: user create analytics

This commit is contained in:
Nicholas Tindle
2024-09-11 15:20:44 -05:00
parent e608491b70
commit b770a7b044
3 changed files with 27 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ import { revalidatePath } from "next/cache";
import { redirect } from "next/navigation";
import { createServerClient } from "@/lib/supabase/server";
import { z } from "zod";
import AutoGPTServerAPI from "@/lib/autogpt-server-api";
const loginFormSchema = z.object({
email: z.string().email().min(2).max(64),
@@ -32,6 +33,7 @@ export async function login(values: z.infer<typeof loginFormSchema>) {
}
export async function signup(values: z.infer<typeof loginFormSchema>) {
"use server";
const supabase = createServerClient();
if (!supabase) {
@@ -48,6 +50,16 @@ export async function signup(values: z.infer<typeof loginFormSchema>) {
if (data.session) {
await supabase.auth.setSession(data.session);
}
if (data.user) {
const api = new AutoGPTServerAPI();
api.logCreateUser({
email: values.email,
user_id: data.user.id,
name: values.email,
username: values.email,
});
}
revalidatePath("/", "layout");
redirect("/profile");

View File

@@ -2,6 +2,8 @@ import React, { createContext, useContext, useEffect } from "react";
import { usePathname, useSearchParams } from "next/navigation";
import logPageViewAction from "./actions";
const EXCLUDED_PATHS = ["/login"];
const PageViewContext = createContext<null>(null);
export const PageViewProvider: React.FC<{ children: React.ReactNode }> = ({
@@ -11,6 +13,10 @@ export const PageViewProvider: React.FC<{ children: React.ReactNode }> = ({
const searchParams = useSearchParams();
useEffect(() => {
if (EXCLUDED_PATHS.includes(pathname)) {
return;
}
const logPageView = async () => {
const pageViewData = {
page: pathname,

View File

@@ -9,6 +9,15 @@ DEFAULT_USER_ID = "3e53486c-cf57-477e-ba2a-cb02dc828e1a"
DEFAULT_EMAIL = "default@example.com"
class UserMetadata(BaseModel):
name: str
picture: str
class UserData(BaseModel):
sub: str
email: str
user_metadata: UserMetadata
async def get_or_create_user(user_data: dict) -> User:
user_id = user_data.get("sub")