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-доска помогает видеть весь процесс целиком: что запланировано, что уже в работе и что готово. Перетаскивайте карточки между колонками, фиксируйте договорённости и не теряйте контекст — всё в одном месте.
Загрузка...
) : isAuthenticated ? ( <> {tasks.length === 0 ? (Нет задач
) : (Войдите, чтобы увидеть свои задачи.
)}