change to use array of hidden announcements

This commit is contained in:
Beebles
2024-09-01 16:04:19 -06:00
parent 1a231bf03e
commit 83ae98a709
@@ -31,7 +31,7 @@ const welcomeAnnouncement: Announcement = {
export function AnnouncementsDisplay() { export function AnnouncementsDisplay() {
const [announcement, setAnnouncement] = useState<Announcement | null>(null); const [announcement, setAnnouncement] = useState<Announcement | null>(null);
// showWelcome will display a welcome motd, the welcome motd has an id of "welcome" and once that is saved to hiddenMotdId, it will not show again // showWelcome will display a welcome motd, the welcome motd has an id of "welcome" and once that is saved to hiddenMotdId, it will not show again
const [hiddenAnnouncementId, setHiddenAnnouncementId] = useSetting('hiddenAnnouncementId', 'showWelcome'); const [hiddenAnnouncementIds, setHiddenAnnouncementIds] = useSetting<string[]>('hiddenAnnouncementIds', []);
async function fetchAnnouncement() { async function fetchAnnouncement() {
const announcement = await getLatestAnnouncement(); const announcement = await getLatestAnnouncement();
@@ -41,23 +41,22 @@ export function AnnouncementsDisplay() {
useEffect(() => { useEffect(() => {
void fetchAnnouncement(); void fetchAnnouncement();
}, []); }, []);
useEffect(() => { useEffect(() => {
if (hiddenAnnouncementId === 'showWelcome') { if (hiddenAnnouncementIds.length > 0) {
setAnnouncement(welcomeAnnouncement); setAnnouncement(welcomeAnnouncement);
} }
}, [hiddenAnnouncementId]); }, [hiddenAnnouncementIds]);
function hideAnnouncement() { function hideAnnouncement() {
if (announcement) { if (announcement) {
setHiddenAnnouncementId(announcement.id); setHiddenAnnouncementIds([...hiddenAnnouncementIds, announcement.id]);
void fetchAnnouncement(); void fetchAnnouncement();
} }
} }
const hidden = useMemo(() => { const hidden = useMemo(() => {
return hiddenAnnouncementId === announcement?.id; return !announcement?.id || hiddenAnnouncementIds.includes(announcement.id);
}, [hiddenAnnouncementId, announcement]); }, [hiddenAnnouncementIds, announcement]);
if (!announcement || !announcement.title || hidden) { if (!announcement || !announcement.title || hidden) {
return null; return null;