/* @refresh reload */
import { render } from 'solid-js/web';
import { Router, hashIntegration } from '@solidjs/router';

import App from './App';

// See https://stackoverflow.com/questions/71538643/property-wakelock-does-not-exist-on-type-navigator
const requestWakeLock = async () => {
  const anyNav: any = navigator;
  if ('wakeLock' in navigator) {
    try {
      const wakeLock = await anyNav['wakeLock'].request('screen');
    } catch (err: any) {
      // The wake lock request fails - usually system-related, such as low battery.
      console.log(`Wake lock request failed: ${err.name}, ${err.message}`);
    }
  } else {
    console.log('No wake lock support here...');
  }
};

const handleVisibilityChange = () => {
  if (document.hidden) {
    console.log('Application hidden');
  } else {
    console.log('Application visible');
    requestWakeLock();
  }
};

// See https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
document.addEventListener('visibilitychange', handleVisibilityChange, false);
requestWakeLock();

render(
  () => (
    <Router>
      <App />
    </Router>
  ),
  document.getElementById('root') as HTMLElement
);
