diff options
| author | Beebles <102569435+beebls@users.noreply.github.com> | 2024-09-13 18:32:22 -0600 |
|---|---|---|
| committer | Beebles <102569435+beebls@users.noreply.github.com> | 2025-08-01 06:54:40 -0600 |
| commit | 428de00b29be7791612fd75a201919479a742ac9 (patch) | |
| tree | 12a0a36b06e2c63f8110f070b1d4af771b4372d5 | |
| parent | 5a02f5fbe7aa4fed255c971663345bd37a5eb148 (diff) | |
| download | decky-loader-428de00b29be7791612fd75a201919479a742ac9.tar.gz decky-loader-428de00b29be7791612fd75a201919479a742ac9.zip | |
remove duplicates when adding announcements to array
| -rw-r--r-- | frontend/src/components/AnnouncementsDisplay.tsx | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/frontend/src/components/AnnouncementsDisplay.tsx b/frontend/src/components/AnnouncementsDisplay.tsx index 66154192..04ce2fa1 100644 --- a/frontend/src/components/AnnouncementsDisplay.tsx +++ b/frontend/src/components/AnnouncementsDisplay.tsx @@ -33,9 +33,22 @@ export function AnnouncementsDisplay() { // 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 [hiddenAnnouncementIds, setHiddenAnnouncementIds] = useSetting<string[]>('hiddenAnnouncementIds', []); + function addAnnouncements(newAnnouncements: Announcement[]) { + // Removes any duplicates and sorts by created date + setAnnouncements((oldAnnouncements) => { + const newArr = [...oldAnnouncements, ...newAnnouncements]; + const setOfIds = new Set(newArr.map((a) => a.id)); + return Array.from(setOfIds) + .map((id) => newArr.find((a) => a.id === id)!) + .sort((a, b) => { + return new Date(b.created).getTime() - new Date(a.created).getTime(); + }); + }); + } + async function fetchAnnouncement() { const announcements = await getAnnouncements(); - announcements && setAnnouncements((oldAnnouncements) => [...announcements, ...oldAnnouncements]); + announcements && addAnnouncements(announcements); } useEffect(() => { @@ -43,7 +56,7 @@ export function AnnouncementsDisplay() { }, []); useEffect(() => { if (hiddenAnnouncementIds.length > 0) { - setAnnouncements((oldAnnouncement) => [welcomeAnnouncement, ...oldAnnouncement]); + addAnnouncements([welcomeAnnouncement]); } }, [hiddenAnnouncementIds]); |
