Files
DiscordClone/packages/platform-web/src/idle.js
Bryan1029384756 fe869a3222
Some checks failed
Build and Release / build-and-release (push) Failing after 3m28s
feat: Add new emoji assets and an UpdateBanner component.
2026-02-13 12:20:40 -06:00

37 lines
914 B
JavaScript

/**
* Web platform idle detection using Page Visibility API.
* Provides a simplified version of the Electron idle API.
*/
let idleCallback = null;
let lastActiveTime = Date.now();
function handleVisibilityChange() {
if (!idleCallback) return;
if (document.hidden) {
idleCallback({ isIdle: true });
} else {
lastActiveTime = Date.now();
idleCallback({ isIdle: false });
}
}
export default {
getSystemIdleTime() {
// Return seconds since last activity (approximation using visibility)
if (document.hidden) {
return Math.floor((Date.now() - lastActiveTime) / 1000);
}
return 0;
},
onIdleStateChanged(callback) {
idleCallback = callback;
document.addEventListener('visibilitychange', handleVisibilityChange);
},
removeIdleStateListener() {
idleCallback = null;
document.removeEventListener('visibilitychange', handleVisibilityChange);
},
};