fix anc no dialog
This commit is contained in:
@@ -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]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user