'use client'; import { useEffect, useState } from 'react'; import { createClientComponentClient } from '@supabase/auth-helpers-nextjs'; import CameraCapture from "@/components/CameraCapture"; import BottleGrid from "@/components/BottleGrid"; import AuthForm from "@/components/AuthForm"; import BuddyList from "@/components/BuddyList"; import SessionList from "@/components/SessionList"; export default function Home() { const supabase = createClientComponentClient(); const [bottles, setBottles] = useState([]); const [isLoading, setIsLoading] = useState(true); const [user, setUser] = useState(null); const [fetchError, setFetchError] = useState(null); useEffect(() => { // Check session const checkUser = async () => { try { const { data: { session }, error } = await supabase.auth.getSession(); console.log('Initial session check:', session ? 'User logged in' : 'No session'); if (error) { console.error('Session retrieval error:', error); } setUser(session?.user ?? null); if (session?.user) { fetchCollection(); } } catch (err) { console.error('Fatal error checking user:', err); setUser(null); } finally { setIsLoading(false); } }; checkUser(); // Listen for auth changes const { data: { subscription } } = supabase.auth.onAuthStateChange((event, session) => { console.log('Auth state change:', event, session?.user ? 'User logged in' : 'No user'); setUser(session?.user ?? null); if (session?.user) { fetchCollection(); } else { setBottles([]); } }); return () => subscription.unsubscribe(); }, []); const fetchCollection = async () => { setIsLoading(true); try { // Fetch bottles with their latest tasting date const { data, error } = await supabase .from('bottles') .select(` *, tastings ( created_at ) `) .order('created_at', { ascending: false }); if (error) { console.error('Supabase fetch error:', error); throw error; } console.log(`Fetched ${data?.length || 0} bottles from Supabase`); // Process data to get the absolute latest tasting date for each bottle const processedBottles = (data || []).map(bottle => { const lastTasted = bottle.tastings && bottle.tastings.length > 0 ? bottle.tastings.reduce((latest: string, current: any) => new Date(current.created_at) > new Date(latest) ? current.created_at : latest, bottle.tastings[0].created_at ) : null; return { ...bottle, last_tasted: lastTasted }; }); setBottles(processedBottles); } catch (err: any) { console.error('Detailed fetch error:', err); setFetchError(err.message || JSON.stringify(err)); } finally { setIsLoading(false); } }; const handleLogout = async () => { await supabase.auth.signOut(); }; if (!user) { return (

WHISKYVAULT

Scanne deine Flaschen, tracke deine Tastings und verwalte deinen Keller.

); } return (

WHISKYVAULT

Deine Sammlung {bottles.length}

{isLoading ? (
) : fetchError ? (

Sammlung konnte nicht geladen werden

Möglicherweise müssen die Datenbank-Regeln aktualisiert werden.

) : ( )}
); }