feat: add initial pending tasks support in DailyPage
- Updated `DailyPageClient` to accept and pass `initialPendingTasks` to the `PendingTasksSection`. - Modified `page.tsx` to fetch pending tasks from the service and handle graceful fallbacks. - Adjusted `PendingTasksSection` to initialize state with `initialPendingTasks` and prevent unnecessary loading when initial data is present.
This commit is contained in:
@@ -13,16 +13,18 @@ interface PendingTasksSectionProps {
|
||||
onDeleteCheckbox: (checkboxId: string) => Promise<void>;
|
||||
onRefreshDaily?: () => Promise<void>; // Pour rafraîchir la vue daily principale
|
||||
refreshTrigger?: number; // Pour forcer le refresh depuis le parent
|
||||
initialPendingTasks?: DailyCheckbox[]; // Données SSR
|
||||
}
|
||||
|
||||
export function PendingTasksSection({
|
||||
onToggleCheckbox,
|
||||
onDeleteCheckbox,
|
||||
onRefreshDaily,
|
||||
refreshTrigger
|
||||
refreshTrigger,
|
||||
initialPendingTasks = []
|
||||
}: PendingTasksSectionProps) {
|
||||
const [isCollapsed, setIsCollapsed] = useState(true);
|
||||
const [pendingTasks, setPendingTasks] = useState<DailyCheckbox[]>([]);
|
||||
const [isCollapsed, setIsCollapsed] = useState(false); // Open by default
|
||||
const [pendingTasks, setPendingTasks] = useState<DailyCheckbox[]>(initialPendingTasks);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [isPending, startTransition] = useTransition();
|
||||
const [filters, setFilters] = useState({
|
||||
@@ -52,9 +54,15 @@ export function PendingTasksSection({
|
||||
// Charger au montage et quand les filtres changent
|
||||
useEffect(() => {
|
||||
if (!isCollapsed) {
|
||||
loadPendingTasks();
|
||||
// Si on a des données initiales et qu'on utilise les filtres par défaut, ne pas recharger
|
||||
const hasInitialData = initialPendingTasks.length > 0;
|
||||
const usingDefaultFilters = filters.maxDays === 7 && filters.type === 'all' && filters.limit === 50;
|
||||
|
||||
if (!hasInitialData || !usingDefaultFilters) {
|
||||
loadPendingTasks();
|
||||
}
|
||||
}
|
||||
}, [isCollapsed, filters, refreshTrigger, loadPendingTasks]);
|
||||
}, [isCollapsed, filters, refreshTrigger, loadPendingTasks, initialPendingTasks.length]);
|
||||
|
||||
// Gérer l'archivage d'une tâche
|
||||
const handleArchiveTask = async (checkboxId: string) => {
|
||||
|
||||
Reference in New Issue
Block a user