// File: main.jsx

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App.jsx';
import './index.css'; 
import axios from 'axios';
import { HelmetProvider } from 'react-helmet-async';
import { getApiBaseUrl } from './utils/apiBaseUrl.js';
import { BIOMETRIC_SESSION_KEY } from './utils/biometricAuth.js';

const apiBaseUrl = getApiBaseUrl();
axios.defaults.baseURL = apiBaseUrl;
axios.defaults.timeout = 30000;
const BROWSER_RESET_VERSION = import.meta.env.VITE_BROWSER_RESET_VERSION || 'ucarmobility-reset-v1';
const BROWSER_RESET_FLAG_KEY = 'ucarmobility_browser_reset_version';
const CMS_THEME_CACHE_KEY = 'ucar_cms_theme_v1';

// Force a one-time browser reset per deployed version so old domains/caches do not linger.
if (typeof window !== 'undefined') {
  const shouldResetBrowserState = window.localStorage.getItem(BROWSER_RESET_FLAG_KEY) !== BROWSER_RESET_VERSION;

  if (shouldResetBrowserState) {
    try {
      const savedBiometricSession = window.localStorage.getItem(BIOMETRIC_SESSION_KEY);
      const savedCmsTheme = window.localStorage.getItem(CMS_THEME_CACHE_KEY);
      window.localStorage.clear();
      window.sessionStorage.clear();
      if (savedBiometricSession) {
        window.localStorage.setItem(BIOMETRIC_SESSION_KEY, savedBiometricSession);
      }
      if (savedCmsTheme) {
        window.localStorage.setItem(CMS_THEME_CACHE_KEY, savedCmsTheme);
      }
      window.localStorage.setItem(BROWSER_RESET_FLAG_KEY, BROWSER_RESET_VERSION);
    } catch (_) {}

    if ('serviceWorker' in navigator) {
      navigator.serviceWorker.getRegistrations()
        .then((regs) => Promise.all(regs.map((reg) => reg.unregister())))
        .catch(() => {});
    }

    if ('caches' in window) {
      window.caches.keys()
        .then((keys) => Promise.all(keys.map((key) => window.caches.delete(key))))
        .catch(() => {});
    }
  } else if ('serviceWorker' in navigator) {
    navigator.serviceWorker.getRegistrations()
      .then((regs) => Promise.all(regs.map((reg) => reg.unregister())))
      .catch(() => {});
  }
}

// Service worker registration is intentionally disabled to avoid stale cached builds.

ReactDOM.createRoot(document.getElementById('root')).render(
  <HelmetProvider>
    <App />
  </HelmetProvider>,
);
