import { Router, Request, Response } from 'express'; import logger from '../utils/logger'; import { getAnnouncementsState, refreshAnnouncements, refreshIfDue } from '../services/announcements'; const router = Router(); // GET /api/announcements - Everything the "What's new" panel shows. // Refreshes the remote feed first when it is due, so a page load a few // minutes after something is published sees it without a manual refresh. router.get('/', async (_req: Request, res: Response) => { try { await refreshIfDue(); res.json({ success: true, data: getAnnouncementsState() }); } catch (error) { logger.error('Failed to get announcements:', error); res.status(500).json({ success: false, error: 'Failed to retrieve announcements' }); } }); // POST /api/announcements/refresh - Fetch the remote feed now, then return the state router.post('/refresh', async (_req: Request, res: Response) => { try { const result = await refreshAnnouncements(true); res.json({ success: true, data: { ...getAnnouncementsState(), refresh: result } }); } catch (error) { logger.error('Failed to refresh announcements:', error); res.status(500).json({ success: false, error: 'Failed to refresh announcements' }); } }); export default router;