'use client' import { useEffect, useState } from 'react' import { useSession, signIn, signOut } from 'next-auth/react' import { signOutWithStatus } from '@/app/lib/signOutWithStatus' import { useRouter, usePathname } from 'next/navigation' import { AnimatePresence, motion } from 'framer-motion' import Image from 'next/image' import LoadingSpinner from '@/app/components/LoadingSpinner' import Button from './Button' import UserAvatarWithStatus from './UserAvatarWithStatus' import PremierRankBadge from './PremierRankBadge' export default function SidebarFooter() { const router = useRouter() const pathname = usePathname() const { data: session, status } = useSession() const [isOpen, setIsOpen] = useState(false) const [teamName, setTeamName] = useState(null) const [premierRank, setPremierRank] = useState(0) // ➜ Nach Login: User aus DB laden (inkl. premierRank & Teamname) useEffect(() => { if (status !== 'authenticated') { setTeamName(null) setPremierRank(0) // ← immer 0, nicht null return } (async () => { try { const res = await fetch('/api/user', { cache: 'no-store' }) if (!res.ok) return const user = await res.json() const rank = typeof user?.premierRank === 'number' ? user.premierRank : 0 setPremierRank(rank) setTeamName(user?.team?.name ?? null) } catch (e) { console.error('[SidebarFooter] /api/user fehlgeschlagen:', e) setPremierRank(0) } })() }, [status]) if (status === 'loading') return if (status === 'unauthenticated') { return ( ) } const subline = teamName ?? session?.user?.steamId const userName = session?.user?.name || 'Profil' const avatarSrc = (session?.user as any)?.avatar || session?.user?.image || '/default-avatar.png' const linkClass = (active: boolean) => `flex items-center gap-x-3.5 py-2 px-2.5 text-sm rounded-lg transition-colors ${ active ? 'bg-gray-100 dark:bg-neutral-700 text-gray-900 dark:text-white' : 'text-gray-800 hover:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-700' }` return (
{/* Kopf / Toggle */} {/* Dropdown */} {isOpen && (
{session?.user?.isAdmin && ( )}
)}
) }