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> | 2024-09-13 18:32:22 -0600 |
| commit | 91e4d6ca6dae215bcd258056bc3760507ba9a50a (patch) | |
| tree | b804a101ca1ba799c566b9d5ec541651fb7358a5 /frontend/src/components | |
| parent | 5b9613c8dfebb01440178df38f5b667d9c5e98b2 (diff) | |
| download | decky-loader-91e4d6ca6dae215bcd258056bc3760507ba9a50a.tar.gz decky-loader-91e4d6ca6dae215bcd258056bc3760507ba9a50a.zip | |
remove duplicates when adding announcements to array
Diffstat (limited to 'frontend/src/components')
| -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]); |
