import { useEffect, useState } from "react"; import { useTranslation } from "next-i18next"; import { DateTime } from "luxon"; import useWidgetAPI from "../../../utils/proxy/use-widget-api"; import Error from "../../../components/services/widget/error"; import Agenda from "../agenda"; export default function Label({ widget }) { const { t } = useTranslation(); const { data: tasksData, error: tasksError } = useWidgetAPI(widget, "getTasksWithLabel", { refreshInterval: widget.refreshInterval || 300000, // 5 minutes, use default if not provided label: widget.label }); const [tasks, setEvents] = useState([]); // State to hold events useEffect(() => { if (!tasksError && tasksData && tasksData.length > 0) { // Check if tasksData is not empty // Process label data and set tasks const tasksToAdd = tasksData.slice(0, widget.maxTasks || tasksData.length).map((task) => ({ title: task.content || t("Untitled Task by Label"), date: task.due ? DateTime.fromISO(task.due.date, { zone: widget.timeZone }).toJSDate() : null, color: widget.color || task.color || "blue", description: task.tags ? task.tags.join(", ") : "", url: task.url, id: task.id, })); // Update the events state setEvents(tasksToAdd); } }, [tasksData, tasksError, widget, setEvents, t]); const error = tasksError ?? tasksData?.error; if (error && !widget.hideErrors) { return ; } // Render the Agenda component if tasks is not empty return ; }