refactor
This commit is contained in:
parent
ef9f0ffd69
commit
b4d900f9bf
|
|
@ -235,18 +235,16 @@ export const kWebLinkRe = new RegExp('(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\\/\\/|www\\
|
||||||
export function useFlash(): [boolean, EffectCallback] {
|
export function useFlash(): [boolean, EffectCallback] {
|
||||||
const [flash, setFlash] = React.useState(false);
|
const [flash, setFlash] = React.useState(false);
|
||||||
const trigger = React.useCallback<React.EffectCallback>(() => {
|
const trigger = React.useCallback<React.EffectCallback>(() => {
|
||||||
let timeout: number | undefined;
|
const timeouts: any[] = [];
|
||||||
setFlash(currentlyFlashing => {
|
setFlash(currentlyFlashing => {
|
||||||
if (!currentlyFlashing) {
|
timeouts.push(setTimeout(() => setFlash(false), 1000));
|
||||||
timeout = setTimeout(() => setFlash(false), 1000) as any;
|
if (!currentlyFlashing)
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
// It's already flashing, so we remove the class and re-add it after 50ms to trigger the animation again.
|
timeouts.push(setTimeout(() => setFlash(true), 50));
|
||||||
timeout = setTimeout(() => setFlash(true), 50) as any;
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
return () => clearTimeout(timeout);
|
return () => timeouts.forEach(clearTimeout);
|
||||||
}, [setFlash]);
|
}, [setFlash]);
|
||||||
return [flash, trigger];
|
return [flash, trigger];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue