37 lines
914 B
JavaScript
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);
|
|
},
|
|
};
|