From 01cd491f5ee69966c8bfee8491417bba4215700e Mon Sep 17 00:00:00 2001 From: hzm <934585316@qq.com> Date: Sat, 7 Feb 2026 13:19:26 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E7=94=A8=E6=88=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/globals.css | 4 +- app/page.jsx | 57 ++++-- package-lock.json | 440 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 5 + 4 files changed, 490 insertions(+), 16 deletions(-) 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() { > - - - {/* 临时隐藏用户菜单入口 */} -