import React, { useEffect, useState } from 'react';
import { Navigate, Outlet } from 'react-router-dom';
import { useAuth } from '../../contexts/AuthContext';

const ProjectRoute = ({ projectName }) => {
  const { user, isInitialized, hasProjectAccess } = useAuth();
  const [hasAccess, setHasAccess] = useState(null);

  useEffect(() => {
    const checkAccess = async () => {
      if (user) {
        const access = await hasProjectAccess(projectName);
        setHasAccess(access);
      } else {
        setHasAccess(false);
      }
    };

    checkAccess();
  }, [user, projectName, hasProjectAccess]);

  // Ожидаем инициализации и проверки доступа
  if (!isInitialized || hasAccess === null) {
    return (
      <div className="min-h-screen flex items-center justify-center bg-campfire-dark">
        <div className="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-campfire-amber"></div>
      </div>
    );
  }

  // Если пользователь не авторизован, перенаправляем на страницу входа
  if (!user) {
    return <Navigate to="/auth" replace />;
  }

  // Если у пользователя нет доступа к проекту, показываем сообщение об ошибке
  if (!hasAccess) {
    return (
      <div className="min-h-screen flex items-center justify-center bg-campfire-dark">
        <div className="text-center">
          <h1 className="text-2xl font-bold text-campfire-light mb-4">
            Доступ запрещен
          </h1>
          <p className="text-campfire-ash">
            У вас нет доступа к проекту {projectName}
          </p>
        </div>
      </div>
    );
  }

  // Если у пользователя есть доступ, отображаем содержимое
  return <Outlet />;
};

export default ProjectRoute; 