summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeebles <102569435+beebls@users.noreply.github.com>2024-09-13 18:32:22 -0600
committerBeebles <102569435+beebls@users.noreply.github.com>2025-08-01 06:54:40 -0600
commit428de00b29be7791612fd75a201919479a742ac9 (patch)
tree12a0a36b06e2c63f8110f070b1d4af771b4372d5
parent5a02f5fbe7aa4fed255c971663345bd37a5eb148 (diff)
downloaddecky-loader-428de00b29be7791612fd75a201919479a742ac9.tar.gz
decky-loader-428de00b29be7791612fd75a201919479a742ac9.zip
remove duplicates when adding announcements to array
-rw-r--r--frontend/src/components/AnnouncementsDisplay.tsx17
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]);