From cda5d7322dd8f57c6a7ac266a65e92598a5439f6 Mon Sep 17 00:00:00 2001 From: Alma Date: Sat, 12 Apr 2025 14:26:04 +0200 Subject: [PATCH] working leantime widget 35 --- components/flow.tsx | 79 ++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 41 deletions(-) diff --git a/components/flow.tsx b/components/flow.tsx index 622bd5cb..e7b18f96 100644 --- a/components/flow.tsx +++ b/components/flow.tsx @@ -5,55 +5,53 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { RefreshCw } from "lucide-react"; -interface StatusLabel { +interface Task { id: string; - name: string; - statusType: string; - class: string; -} - -interface Project { - id: string; - name: string; - labels: StatusLabel[]; + headline: string; + projectName: string; + projectId: number; + status: string; + dueDate: string | null; + milestone: string | null; + details: string | null; } export function Flow() { - const [projects, setProjects] = useState([]); + const [tasks, setTasks] = useState([]); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); const [refreshing, setRefreshing] = useState(false); const [retryTimeout, setRetryTimeout] = useState(null); - const fetchProjects = async (isRefresh = false) => { + const fetchTasks = async (isRefresh = false) => { try { if (isRefresh) { setRefreshing(true); } - const response = await fetch('/api/leantime/status-labels'); + const response = await fetch('/api/leantime/tasks'); if (response.status === 429) { const retryAfter = parseInt(response.headers.get('retry-after') || '60'); - const timeout = setTimeout(() => fetchProjects(), retryAfter * 1000); + const timeout = setTimeout(() => fetchTasks(), retryAfter * 1000); setRetryTimeout(timeout); setError(`Rate limit exceeded. Retrying in ${retryAfter} seconds...`); return; } if (!response.ok) { - throw new Error('Failed to fetch projects'); + throw new Error('Failed to fetch tasks'); } const data = await response.json(); - if (data.projects && Array.isArray(data.projects)) { - setProjects(data.projects); + if (data.tasks && Array.isArray(data.tasks)) { + setTasks(data.tasks); } else { - setProjects([]); + setTasks([]); } setError(null); } catch (err) { - console.error('Error fetching projects:', err); - setError('Failed to fetch projects'); + console.error('Error fetching tasks:', err); + setError('Failed to fetch tasks'); } finally { setLoading(false); setRefreshing(false); @@ -61,7 +59,7 @@ export function Flow() { }; useEffect(() => { - fetchProjects(); + fetchTasks(); return () => { if (retryTimeout) { clearTimeout(retryTimeout); @@ -72,11 +70,11 @@ export function Flow() { return ( - Flow + Tasks