Skip to content

Commit 5c4c7da

Browse files
committed
add hook to refresh AlertCards every 60 seconds
1 parent b19006d commit 5c4c7da

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/components/Alerts/AlertsList/AlertCard.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
} from '../../../utils/dates';
1818
import { useTranslationPrefix } from '../../../utils/useTranslationPrefix';
1919
import { CameraName } from '../../Common/CameraName';
20+
import { useRefreshEvery } from './useRefreshEvery';
2021

2122
interface AlertCardType {
2223
isActive: boolean;
@@ -34,6 +35,8 @@ export const AlertCard = ({ isActive, setActive, alert }: AlertCardType) => {
3435
translationFunction: timeTranslation,
3536
});
3637

38+
useRefreshEvery(60); // re-render every 60s
39+
3740
return (
3841
<Card sx={{ borderRadius: '2px' }}>
3942
<CardActionArea
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { useEffect, useState } from 'react';
2+
3+
/*
4+
* Use this function when a component should be rerendered every X seconds.
5+
* Simply add useRefreshEvery(60) to have your component be refreshed every minute
6+
*/
7+
export const useRefreshEvery = (timeInSeconds: number): number => {
8+
const [tick, setTick] = useState(0);
9+
10+
useEffect(() => {
11+
const interval = setInterval(() => {
12+
setTick((prev) => prev + 1);
13+
}, timeInSeconds * 1000);
14+
15+
return () => clearInterval(interval);
16+
}, [timeInSeconds]);
17+
18+
return tick;
19+
};

0 commit comments

Comments
 (0)