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);
	}
})();