40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
import _ from './anime-client.js';
|
|
|
|
(() => {
|
|
let hidden = null;
|
|
let visibilityChange = null;
|
|
|
|
if (typeof document.hidden !== "undefined") {
|
|
hidden = "hidden";
|
|
visibilityChange = "visibilitychange";
|
|
} else if (typeof document.msHidden !== "undefined") {
|
|
hidden = "msHidden";
|
|
visibilityChange = "msvisibilitychange";
|
|
} else if (typeof document.webkitHidden !== "undefined") {
|
|
hidden = "webkitHidden";
|
|
visibilityChange = "webkitvisibilitychange";
|
|
}
|
|
|
|
function handleVisibilityChange() {
|
|
// Check the user's session to see if they are currently logged-in
|
|
// when the page becomes visible
|
|
if ( ! document[hidden]) {
|
|
_.get('/heartbeat', (beat) => {
|
|
const status = JSON.parse(beat)
|
|
|
|
// If the session is expired, immediately reload so that
|
|
// you can't attempt to do an action that requires authentication
|
|
if (status.hasAuth !== true) {
|
|
document.removeEventListener(visibilityChange, handleVisibilityChange, false);
|
|
location.reload();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
if (hidden === null) {
|
|
console.info('Page visibility API not supported, JS session check will not work');
|
|
} else {
|
|
document.addEventListener(visibilityChange, handleVisibilityChange, false);
|
|
}
|
|
})(); |