1- import React , { useState } from 'react' ;
1+ import React , { useEffect , useState } from 'react' ;
22
33import { Button } from '@orfium/ictinus' ;
44import {
@@ -15,7 +15,7 @@ import {
1515 PageWrapper ,
1616} from '../../common.style' ;
1717import { useResponsiveLayout } from '../../hooks/useResponsiveSidebar' ;
18- import { OwnedEpisodeAPI } from '../../models/apiTypes' ;
18+ import { AnnouncementAPI , OwnedEpisodeAPI } from '../../models/apiTypes' ;
1919import { DashboardText , DashboardTextHeader , DashboardWrapper } from './LandingPage.style' ;
2020
2121
@@ -86,12 +86,21 @@ const LandingPage: React.FC = () => {
8686 } ;
8787
8888 const [ dismissedIds , setDismissedIds ] = useState < number [ ] > ( [ ] ) ;
89+ const [ announcementsToShow , setAnnouncementsToShow ] = useState < AnnouncementAPI [ ] > ( [ ] ) ;
8990
9091 const { data : announcementsResponse , isLoading : isLoadingAnnouncements , error : announcementsError } = useGetAnnouncements ( ) ;
9192 const announcements = announcementsResponse ?. results ?? [ ] ;
9293
94+ useEffect ( ( ) => {
95+ if ( announcements . length > 0 ) {
96+ setAnnouncementsToShow (
97+ announcements . filter ( ( a ) => ! dismissedIds . includes ( a . id ) )
98+ ) ;
99+ }
100+ } , [ announcements , dismissedIds ] ) ;
101+
93102 const dismissAnnouncement = ( id : number ) => {
94- setDismissedIds ( ( prev ) => [ ...prev , id ] ) ;
103+ setDismissedIds ( ( prev ) => [ ...prev , id ] ) ;
95104 } ;
96105
97106 return (
@@ -113,9 +122,7 @@ const LandingPage: React.FC = () => {
113122
114123 { isLoadingAnnouncements && < div > Loading announcements...</ div > }
115124
116- { announcements
117- . filter ( ( announcement ) => ! dismissedIds . includes ( announcement . id ) )
118- . map ( ( announcement ) => (
125+ { announcementsToShow . map ( ( announcement ) => (
119126 < div
120127 key = { announcement . id }
121128 style = { {
0 commit comments