// App.jsx
function App() {
  const normalizeHash = (h) => {
    if (!h) return '#/';
    return h.startsWith('#') ? h : `#${h}`;
  };

  const [route, setRoute] = React.useState(() => normalizeHash(window.location.hash || '#/'));

  React.useEffect(() => {
    const onHash = () => setRoute(normalizeHash(window.location.hash || '#/'));
    window.addEventListener('hashchange', onHash);
    return () => window.removeEventListener('hashchange', onHash);
  }, []);

  const [profile, setProfile] = React.useState(() => {
    try {
      const raw = localStorage.getItem('mta_profile');
      return raw ? JSON.parse(raw) : null;
    } catch (e) {
      console.error('Ошибка парсинга mta_profile при инициализации:', e);
      return null;
    }
  });

  // слушаем изменения localStorage из других вкладок
  React.useEffect(() => {
    const onStorage = (e) => {
      if (e.key === 'mta_profile') {
        try {
          const raw = localStorage.getItem('mta_profile');
          setProfile(raw ? JSON.parse(raw) : null);
        } catch (err) {
          console.error('Ошибка парсинга mta_profile при событии storage:', err);
          setProfile(null);
        }
      }
    };
    window.addEventListener('storage', onStorage);
    return () => window.removeEventListener('storage', onStorage);
  }, []);

  // слушаем кастомное событие, которое диспатчим в той же вкладке после регистрации/обновления профиля
  React.useEffect(() => {
    const onProfileUpdated = () => {
      try {
        const raw = localStorage.getItem('mta_profile');
        setProfile(raw ? JSON.parse(raw) : null);
      } catch (err) {
        console.error('Ошибка парсинга mta_profile при mta_profile_updated:', err);
        setProfile(null);
      }
    };
    window.addEventListener('mta_profile_updated', onProfileUpdated);
    return () => window.removeEventListener('mta_profile_updated', onProfileUpdated);
  }, []);

  // перенаправления в зависимости от наличия профиля и маршрута
  React.useEffect(() => {
    if (profile && (route === '#/' || route === '' || route === '#')) {
      if (window.location.hash !== '#/dashboard') window.location.hash = '#/dashboard';
    }
    if (!profile && route === '#/dashboard') {
      if (window.location.hash !== '#/') window.location.hash = '#/';
    }
  }, [profile, route]);

  if (route === '#/dashboard') return <Dashboard />;
  if (route === '#/login') return <LoginForm />;
  if (route === '#/register') return <RegistrationForm />;
  if (route === '#/reset') return <PasswordReset />;
  return <AuthPage />;
}
