Fix TemporaryAlert (#81384)

This commit is contained in:
Fabrizio 2024-01-26 21:46:52 +01:00 committed by GitHub
parent b758b91e84
commit 77b0369fdb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -30,22 +30,26 @@ const timeoutMap = {
export const TemporaryAlert = (props: { severity: AlertVariant; text: string }) => { export const TemporaryAlert = (props: { severity: AlertVariant; text: string }) => {
const style = getStyle(useTheme2()); const style = getStyle(useTheme2());
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
const [timer, setTimer] = useState<NodeJS.Timeout>();
useEffect(() => { useEffect(() => {
const timer = setTimeout(() => {
setVisible(false);
}, timeoutMap[props.severity]);
return () => { return () => {
if (timer) {
clearTimeout(timer); clearTimeout(timer);
}
}; };
}, [props.severity, visible]); }, [timer]);
useEffect(() => { useEffect(() => {
if (props.text !== '') { if (props.text !== '') {
setVisible(true); setVisible(true);
}
}, [props.text]);
return <Alert className={style} elevated={true} title={props.text} severity={props.severity} />; const timer = setTimeout(() => {
setVisible(false);
}, timeoutMap[props.severity]);
setTimer(timer);
}
}, [props.severity, props.text]);
return <>{visible && <Alert className={style} elevated={true} title={props.text} severity={props.severity} />}</>;
}; };