import {useEffect, useState} from 'react'; import axios from 'axios'; import Header from './Header'; import {useNavigate} from 'react-router-dom'; import './css/Mainpage.css'; const Mainpage = () => { const [tasks, setTasks] = useState([]); const [error_message, setErrorMessage] = useState(null); const [count, setCount] = useState(0); const [loading, setLoading] = useState(true); const navigate = useNavigate(); useEffect(() => { const checkSession = async () => { try { const response = await axios.get('/api/users/my_tasks'); setTasks(response.data.tasks || []); setCount(response.data.count || 0); setErrorMessage(null); } catch (err) { const message = err.response?.data?.message || 'Ошибка авторизации'; setErrorMessage(message); } finally { setLoading(false); } }; checkSession(); }, []); const isAuthenticated = !error_message; const formatDeadline = (deadline) => { if (!deadline) return 'Отсутствует'; const d = new Date(deadline); const day = String(d.getDate()).padStart(2, '0'); const month = String(d.getMonth() + 1).padStart(2, '0'); const year = d.getFullYear(); const hours = String(d.getHours()).padStart(2, '0'); const minutes = String(d.getMinutes()).padStart(2, '0'); // Формат: 01.04.2026 · 12:00 return `${day}.${month}.${year} ${hours}:${minutes}`; }; const handleTaskClick = (boardId) => { navigate(`/kanban-board/${boardId}`); }; const showScrollbar = count > 3; return ( <>

Добро пожаловать в Kanban!

Kanban-доска помогает видеть весь процесс целиком: что запланировано, что уже в работе и что готово. Перетаскивайте карточки между колонками, фиксируйте договорённости и не теряйте контекст — всё в одном месте.

Мои задачи ({count})

{loading ? (

Загрузка...

) : isAuthenticated ? ( <> {tasks.length === 0 ? (

Нет задач

) : (
    {tasks.map((task) => (
  • handleTaskClick(task.board_id)} >
    {task.title}
    {task.category_title && (
    Статус: {task.category_title}
    )} {task.board_title && (
    Доска: {task.board_title}
    )}
    Дедлайн: {formatDeadline(task.deadline)}
  • ))}
)} ) : (

Войдите, чтобы увидеть свои задачи.

)}
); }; export default Mainpage;