import { useState } from "react";
import { getState } from "@/lib/db";
import { getUserLessons, getLessonProgress } from "@/actions/srs";
import { Button } from "@/components/ui/button";
import { Card } from "@/components/ui/card";
import { Progress } from "@/components/ui/progress";
// This is a server component that gets the initial data
export default async function LessonsPage() {
const state = getState(null);
const userId = state.user?.id;
// If not logged in, show login required message
if (!userId) {
return (
Login Required
You need to be logged in to view your lessons.
);
}
// Get user lessons data
let lessons;
try {
lessons = await getUserLessons(userId);
} catch (error) {
console.error("Error fetching lessons:", error);
}
return (
Your Lessons
{!lessons || lessons.length === 0 ? (
) : (
{lessons.map((lesson) => (
))}
)}
);
}
// Component to display when no lessons are found
function NoLessonsFound() {
return (
No Lessons Found
You don't have any lessons available yet.
);
}
// Component to display a lesson card
function LessonCard({ lesson, userId }: { lesson: any; userId: number }) {
const [isHovered, setIsHovered] = useState(false);
// Calculate progress percentage
const progressPercentage = lesson.progress || 0;
// Determine progress color
const getProgressColor = (percentage: number) => {
if (percentage >= 80) return "bg-green-500";
if (percentage >= 50) return "bg-yellow-500";
return "bg-blue-500";
};
return (
setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
>
{lesson.name}
{lesson.description || "No description available."}