"use client"; import { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { LogOut, User, CreditCard } from "lucide-react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { supabaseClient } from "@/lib/supabase-client"; import { LoginButton } from "./LoginButton"; import { cn } from "@/lib/utils"; export function UserAuth() { const [user, setUser] = useState(null); const supabase = supabaseClient; const router = useRouter(); useEffect(() => { const getUser = async () => { const { data: { user } } = await supabase.auth.getUser(); setUser(user); if (user) { console.log("🔄 UserAuth: Calling RPC handle_user_login on mount"); await supabase.rpc('handle_user_login', { user_email: user.email, user_full_name: user.user_metadata.full_name || '', user_avatar_url: user.user_metadata.avatar_url || '' }).then(({ error }) => { if (error) console.error("❌ RPC Error:", error); else console.log("✅ RPC Success: User synced"); }); } }; getUser(); const { data: { subscription } } = supabase.auth.onAuthStateChange(async (_event, session) => { setUser(session?.user ?? null); if (session?.user) { console.log("🔄 UserAuth: Calling RPC handle_user_login on auth change"); await supabase.rpc('handle_user_login', { user_email: session.user.email, user_full_name: session.user.user_metadata.full_name || '', user_avatar_url: session.user.user_metadata.avatar_url || '' }).then(({ error }) => { if (error) console.error("❌ RPC Error:", error); else { console.log("✅ RPC Success: User synced"); router.refresh(); } }); } router.refresh(); }); return () => subscription.unsubscribe(); }, [supabase, router]); const handleLogin = async () => { await supabase.auth.signInWithOAuth({ provider: "google", options: { redirectTo: `${location.origin}/auth/callback`, }, }); }; const handleLogout = async () => { await supabase.auth.signOut(); router.refresh(); }; if (!user) { return ( ); } return (

{user.user_metadata?.full_name}

{user.email}

Profile Billing Log out
); }