fix anc no dialog

This commit is contained in:
2025-10-23 20:35:01 +08:00
parent b808feb1fd
commit abd4aaac7c

View File

@@ -31,11 +31,13 @@ const AnnouncementDialog = () => {
const [lastAnnouncement, setLastAnnouncement] = useState(""); const [lastAnnouncement, setLastAnnouncement] = useState("");
useEffect(() => { useEffect(() => {
// 检查公告是否更新,如果更新了则清除"不再显示"状态 // 检查公告是否更新
const hasAnnouncementChanged = announcement !== lastAnnouncement && lastAnnouncement !== ""; const hasAnnouncementChanged = announcement !== lastAnnouncement && lastAnnouncement !== "";
// 如果公告已更新,清除不再显示状态并强制显示
if (hasAnnouncementChanged) { if (hasAnnouncementChanged) {
// 使用set方法将其设置为null来清除不再显示状态 // 使用特殊标记来覆盖之前的设置
SessionManager.set("announcement_dismissed", null); SessionManager.set("announcement_dismissed", "false");
} }
// 更新上次显示的公告内容 // 更新上次显示的公告内容
@@ -44,16 +46,17 @@ const AnnouncementDialog = () => {
} }
// 检查是否应该显示公告 // 检查是否应该显示公告
const shouldShow = // 更健壮的检测逻辑:只有当设置为"true"时才视为不再显示
announcementEnabled && const dismissed = SessionManager.get("announcement_dismissed") === "true";
announcement && const shouldShow = announcementEnabled && announcement && announcement.trim() !== "" && !dismissed;
announcement.trim() !== "" &&
!SessionManager.get("announcement_dismissed");
if (shouldShow) { if (shouldShow) {
// 延迟显示,让页面加载完成 // 延迟显示,让页面加载完成
const timer = setTimeout(() => setOpen(true), 1000); const timer = setTimeout(() => setOpen(true), 1000);
return () => clearTimeout(timer); return () => clearTimeout(timer);
} else {
// 确保当不应该显示时关闭弹窗
setOpen(false);
} }
}, [announcement, announcementEnabled, lastAnnouncement]); }, [announcement, announcementEnabled, lastAnnouncement]);