Debounce page visibility to prevent streaming/polling noise

This commit is contained in:
Lim Chee Aun 2024-08-28 00:20:44 +08:00
parent ef0d9cd810
commit 6930ce9a7c
2 changed files with 14 additions and 3 deletions

View file

@ -16,7 +16,18 @@ export default memo(function BackgroundService({ isLoggedIn }) {
// Notifications service
// - WebSocket to receive notifications when page is visible
const [visible, setVisible] = useState(true);
usePageVisibility(setVisible);
const visibleTimeout = useRef();
usePageVisibility((visible) => {
clearTimeout(visibleTimeout.current);
if (visible) {
setVisible(true);
} else {
visibleTimeout.current = setTimeout(() => {
setVisible(false);
}, POLL_INTERVAL);
}
});
const checkLatestNotification = async (masto, instance, skipCheckMarkers) => {
if (states.notificationsLast) {
const notificationsIterator = masto.v1.notifications.list({

View file

@ -511,11 +511,11 @@ msgstr ""
msgid "server domain name"
msgstr ""
#: src/components/background-service.jsx:138
#: src/components/background-service.jsx:149
msgid "Cloak mode disabled"
msgstr ""
#: src/components/background-service.jsx:138
#: src/components/background-service.jsx:149
msgid "Cloak mode enabled"
msgstr ""