MCPcopy Create free account
hub / github.com/Dispatcharr/Dispatcharr / SystemEvents

Function SystemEvents

frontend/src/components/SystemEvents.jsx:174–335  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

172};
173
174const SystemEvents = () => {
175 const [events, setEvents] = useState([]);
176 const [totalEvents, setTotalEvents] = useState(0);
177 const [isExpanded, setIsExpanded] = useState(false);
178 const { ref: cardRef, width: cardWidth } = useElementSize();
179 const isNarrow = cardWidth < 650;
180 const [isLoading, setIsLoading] = useState(false);
181
182 const [eventsRefreshInterval, setEventsRefreshInterval] = useLocalStorage(
183 'events-refresh-interval',
184 0
185 );
186 const [eventsLimit, setEventsLimit] = useLocalStorage('events-limit', 100);
187 const [currentPage, setCurrentPage] = useState(1);
188
189 // Calculate offset based on current page and limit
190 const offset = (currentPage - 1) * eventsLimit;
191 const totalPages = Math.ceil(totalEvents / eventsLimit);
192
193 const fetchEvents = useCallback(async () => {
194 try {
195 setIsLoading(true);
196 const response = await getSystemEvents(eventsLimit, offset);
197 if (response && response.events) {
198 setEvents(response.events);
199 setTotalEvents(response.total || 0);
200 }
201 } catch (error) {
202 console.error('Error fetching system events:', error);
203 } finally {
204 setIsLoading(false);
205 }
206 }, [eventsLimit, offset]);
207
208 // Fetch events on mount and when eventsRefreshInterval changes
209 useEffect(() => {
210 fetchEvents();
211
212 // Set up polling if interval is set and events section is expanded
213 if (eventsRefreshInterval > 0 && isExpanded) {
214 const interval = setInterval(fetchEvents, eventsRefreshInterval * 1000);
215 return () => clearInterval(interval);
216 }
217 }, [fetchEvents, eventsRefreshInterval, isExpanded]);
218
219 // Reset to first page when limit changes
220 useEffect(() => {
221 setCurrentPage(1);
222 }, [eventsLimit]);
223
224 return (
225 <Card
226 ref={cardRef}
227 shadow="sm"
228 padding="sm"
229 radius="md"
230 withBorder
231 style={{

Callers

nothing calls this directly

Calls 2

useLocalStorageFunction · 0.85
getSystemEventsFunction · 0.85

Tested by

no test coverage detected