@@ -172,17 +172,32 @@ const NavBar = ({ locale }: { locale: string }) => {
172172useEffect ( ( ) => {
173173 const fetchUnreadCount = async ( ) => {
174174 try {
175+ const ONE_WEEK_MS = 7 * 24 * 60 * 60 * 1000 ;
176+ const now = Date . now ( ) ;
177+
175178 const postsResponse = await fetch ( "/api/news?numPosts=4" ) ;
176179 const postsData = await postsResponse . json ( ) ;
177180
178- const postUpdate = await fetch ( "/api/news/byTag?tag=release-notes&numPosts=4" )
179- const postRelease = await postUpdate . json ( )
181+ const releasesResponse = await fetch ( "/api/news/byTag?tag=release-notes&numPosts=4" ) ;
182+ const releasesData = await releasesResponse . json ( ) ;
180183
181184 const eventsData = await fetchLatestEvents ( ) ;
182185 const slicedEvents = eventsData . slice ( 0 , 6 ) ;
183-
184- const totalCount = ( postsData . posts ?. length || 0 ) + ( postRelease . posts ?. length || 0 ) + ( slicedEvents . length || 0 ) ;
185-
186+
187+ const recentPosts = ( postsData . posts || [ ] ) . filter (
188+ ( p : { date : string } ) => now - new Date ( p . date ) . getTime ( ) <= ONE_WEEK_MS
189+ ) ;
190+
191+ const recentReleases = ( releasesData . posts || [ ] ) . filter (
192+ ( p : { date : string } ) => now - new Date ( p . date ) . getTime ( ) <= ONE_WEEK_MS
193+ ) ;
194+
195+ const recentEvents = ( slicedEvents || [ ] ) . filter (
196+ ( e : { date : string } ) => now - new Date ( e . date ) . getTime ( ) <= ONE_WEEK_MS
197+ ) ;
198+
199+ const totalCount = recentPosts . length + recentReleases . length + recentEvents . length ;
200+
186201 setUnreadCount ( totalCount ) ;
187202 } catch ( error ) {
188203 console . error ( "Error fetching announcement count:" , error ) ;
@@ -198,6 +213,7 @@ const handleNotificationRead = () => {
198213} ;
199214
200215
216+
201217 useEffect ( ( ) => {
202218 if ( ! mobileMenuOpen ) {
203219 setShowLastSlide ( false )
0 commit comments