don't advance announcements if the dialog already opened

This commit is contained in:
Michael Genson
2026-03-28 19:03:18 +00:00
parent d0fa9a9c6b
commit 4cab2919ac

View File

@@ -85,20 +85,15 @@ const dialog = defineModel<boolean>({ default: false });
const { newAnnouncements, allAnnouncements, setLastRead } = useAnnouncements(); const { newAnnouncements, allAnnouncements, setLastRead } = useAnnouncements();
const currentAnnouncement = shallowRef<Announcement | undefined>(); const currentAnnouncement = shallowRef<Announcement | undefined>();
watch( watch(dialog, () => {
dialog, if (!dialog.value || currentAnnouncement.value) {
() => { return;
// Once the dialog is opened, show the next announcement }
if (dialog.value) {
nextAnnouncement();
// If there are no new announcements, this is never set, so show the newest one // Show first unread on open, or fall back to the newest
if (!currentAnnouncement.value) { const next = newAnnouncements.value.at(0) || allAnnouncements.at(-1)!;
setCurrentAnnouncement(allAnnouncements.at(-1)!); setCurrentAnnouncement(next);
} });
}
},
);
function setCurrentAnnouncement(announcement: Announcement) { function setCurrentAnnouncement(announcement: Announcement) {
currentAnnouncement.value = announcement; currentAnnouncement.value = announcement;