import { useState, useEffect } from 'react'; import { getUserTasks } from '@/api/users.service'; import { Button } from '@/components/ui/button'; import { cn } from '@/lib/utils'; import styles from '@/lib/styles'; import { Plus } from 'lucide-react'; export default function Calendar() { const [tasksFromBackend, setTasksFromBackend] = useState([]); const [loading, setLoading] = useState(true); // Fetch tasks when component mounts useEffect(() => { const fetchTasks = async () => { try { console.log('Calendar: Fetching user tasks...'); const response = await getUserTasks(1); console.log('Calendar: Tasks from backend:', response); setTasksFromBackend(response); } catch (error) { console.error('Calendar: Failed to fetch tasks:', error); } finally { setLoading(false); } }; fetchTasks(); }, []); const today = new Date(); const currentDay = today.getDay(); const currentDate = new Date(today); const dayOffset = currentDay === 0 ? -6 : 1 - currentDay; currentDate.setDate(today.getDate() + dayOffset); const groupTasksByDay = (tasks) => { const grouped = {}; tasks.forEach(task => { const taskDate = new Date(task.due_date); const dateKey = taskDate.toDateString(); if (!grouped[dateKey]) { grouped[dateKey] = []; } grouped[dateKey].push({ id: task.id, title: task.title, priority: task.priority, completed: task.status === 'closed' || task.status === 'completed', dueDate: task.due_date }); }); return grouped; }; const groupedTasks = groupTasksByDay(tasksFromBackend); const daysOfWeek = [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday' ].map((name, index) => { const date = new Date(currentDate); date.setDate(currentDate.getDate() + index); const dateKey = date.toDateString(); return { name, date: date.getDate(), month: date.toLocaleDateString('en-US', { month: 'short' }), fullDate: date, tasks: groupedTasks[dateKey] || [] }; }); if (loading) { return (

Loading tasks...

); } return (
{daysOfWeek.map((day) => { const isToday = day.fullDate.toDateString() === today.toDateString(); return (
{/* Header */}

{day.name}

{day.month} {day.date}

{/* Tasks */}
{day.tasks.map((task) => (
{/* Priority indicator */}

{task.title}

))} {/* Add button */}
); })}
); }