import { createRouter, createWebHistory } from 'vue-router';
import HomeView from '../views/HomeView.vue';
// Импортируем функцию useAuth для проверки аутентификации
import { useAuth } from '../auth';

const routes = [
  {
    path: '/',
    name: 'Home',
    component: HomeView,
  },
  {
    path: '/login',
    name: 'Login',
    component: () => import('../views/LoginView.vue'),
  },
  {
    path: '/register',
    name: 'Register',
    component: () => import('../views/RegisterView.vue'),
  },
  {
    path: '/profile',
    name: 'Profile',
    component: () => import('../views/ProfileView.vue'), 
    meta: { requiresAuth: true } 
  },
  {
    path: '/swipe',
    name: 'Swipe',
    component: () => import('../views/SwipeView.vue'),
    meta: { requiresAuth: true } // Помечаем, что этот маршрут требует аутентификации
  },
  {
    path: '/chats', // Список всех чатов
    name: 'ChatList',
    component: () => import('../views/ChatListView.vue'),
    meta: { requiresAuth: true }
  },
  {
    path: '/chat/:conversationId', // Конкретный чат
    name: 'ChatView',
    component: () => import('../views/ChatView.vue'), // Мы создадим этот компонент позже
    meta: { requiresAuth: true },
    props: true // Позволяет передавать :conversationId как пропс в компонент
  }
  // ... здесь будут другие маршруты: /profile, /swipe, /chat/:id и т.д.
];

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes,
});

// Добавляем навигационный guard для проверки аутентификации
router.beforeEach((to, from, next) => {
  const { isAuthenticated } = useAuth(); // Получаем текущий статус аутентификации

  // Проверяем, требует ли маршрут аутентификации и не аутентифицирован ли пользователь
  if (to.meta.requiresAuth && !isAuthenticated.value) {
    // Если да, перенаправляем на страницу входа
    console.log(`[Router Guard] Доступ к ${to.path} запрещен. Пользователь не аутентифицирован. Перенаправление на /login.`);
    next({ name: 'Login' }); // Или next('/login');
  } else if ((to.name === 'Login' || to.name === 'Register') && isAuthenticated.value) {
    // (Опционально) Если пользователь уже аутентифицирован и пытается зайти на /login или /register,
    // перенаправляем его на главную или на /swipe
    console.log(`[Router Guard] Пользователь аутентифицирован. Перенаправление с ${to.path} на /.`);
    next({ name: 'Home' }); // или next('/');
  }
  else {
    // В противном случае разрешаем навигацию
    next();
  }
});

// Убедимся, что экспорт работает правильно
export { router };
export default router;