signoz/frontend/src/hooks/useTabFocus.tsx
Palash Gupta e7a5eb7b22
feat: new dashboard page is updated (#3385)
* feat: dashboard widget page is refactored

* chore: key is updated

* chore: delete widget is updated

* chore: naming of the file is updated

* feat: dashboard changes are updated and selected dashboard and dashboardId is added

* chore: dashboard widget page is updated

* feat: setlayout is updated

* chore: selected dashboard is updated

* chore: dashboard is updated

* fix: feedback is updated

* chore: comments are resolved

* chore: empty widget id is updated

* fix: variables is updated

* chore: dashboard variable and name,description is now updated in hooks

* chore: build is fixed

* chore: loading experience is updated

* chore: title is updated

* fix: dashboard variables and other changes are updated

* feat: dashboard reducer is removed

* feat: widget header is updated

* feat: widget header is updated

* chore: dashboard is updated

* chore: feedback is updated

* fix: issues are fixed

* chore: delete is updated

* chore: warning message is updated

* chore: warning message is updated

* chore: widget graph component

* feat: dashboard condition is updated

* chore: getChartData is updated

* chore: widget details page is updated

* feat: tab sync is updated

* chore: layout is updated

* chore: labels is updated

* chore: message is updated

* chore: warining message is updated

---------

Co-authored-by: Rajat Dabade <rajat@signoz.io>
Co-authored-by: Vishal Sharma <makeavish786@gmail.com>
2023-10-08 23:21:17 +05:30

29 lines
797 B
TypeScript

import { useEffect, useRef, useState } from 'react';
const useTabVisibility = (): boolean => {
const [isVisible, setIsVisible] = useState(false);
const prevVisibilityRef = useRef<boolean>(isVisible);
useEffect(() => {
const handleVisibilityChange = (): void => {
const isTabVisible = document.visibilityState === 'visible';
if (isTabVisible && !prevVisibilityRef.current) {
setIsVisible(true);
} else if (!isTabVisible && prevVisibilityRef.current) {
setIsVisible(false);
}
prevVisibilityRef.current = isTabVisible;
};
document.addEventListener('visibilitychange', handleVisibilityChange);
return (): void => {
document.removeEventListener('visibilitychange', handleVisibilityChange);
};
}, []);
return isVisible;
};
export default useTabVisibility;