diff --git a/app/globals.css b/app/globals.css index 5a49783..2d05191 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1166,8 +1166,8 @@ input[type="number"] { } .user-menu-trigger.logged-in { - border-color: var(--primary); - background: rgba(34, 211, 238, 0.1); + /*border-color: var(--primary);*/ + /*background: rgba(34, 211, 238, 0.1);*/ } .user-avatar-small { diff --git a/app/page.jsx b/app/page.jsx index 66ae98e..6e706cc 100644 --- a/app/page.jsx +++ b/app/page.jsx @@ -2,6 +2,8 @@ import { useEffect, useRef, useState, useMemo, useLayoutEffect } from 'react'; import { motion, AnimatePresence, Reorder } from 'framer-motion'; +import { createAvatar } from '@dicebear/core'; +import { glass } from '@dicebear/collection'; import Announcement from "./components/Announcement"; import zhifubaoImg from "./assets/zhifubao.jpg"; import weixinImg from "./assets/weixin.jpg"; @@ -1788,6 +1790,14 @@ export default function HomePage() { const [loginSuccess, setLoginSuccess] = useState(''); const [loginOtp, setLoginOtp] = useState(''); + const userAvatar = useMemo(() => { + if (!user?.id) return ''; + return createAvatar(glass, { + seed: user.id, + size: 80 + }).toDataUri(); + }, [user?.id]); + // 反馈弹窗状态 const [feedbackOpen, setFeedbackOpen] = useState(false); const [feedbackNonce, setFeedbackNonce] = useState(0); @@ -2454,6 +2464,13 @@ export default function HomePage() { // 登出 const handleLogout = async () => { try { + const { data: { session } } = await supabase.auth.getSession(); + if (!session) { + await supabase.auth.signOut({ scope: 'local' }); + setUserMenuOpen(false); + setUser(null); + return; + } const { error } = await supabase.auth.signOut(); if (error?.code === 'session_not_found') { await supabase.auth.signOut({ scope: 'local' }); @@ -3477,17 +3494,8 @@ export default function HomePage() { > - - - {/* 临时隐藏用户菜单入口 */} -