"use client"; import { useState, useCallback, type ReactNode } from "react"; import { useRouter } from "next/navigation"; import { RefreshButton } from "@/components/library/RefreshButton"; import { PullToRefreshIndicator } from "@/components/common/PullToRefreshIndicator"; import { usePullToRefresh } from "@/hooks/usePullToRefresh"; import { revalidateForRefresh } from "@/app/actions/refresh"; interface HomeClientWrapperProps { children: ReactNode; } const REFRESH_ANIMATION_MS = 400; export function HomeClientWrapper({ children }: HomeClientWrapperProps) { const router = useRouter(); const [isRefreshing, setIsRefreshing] = useState(false); const handleRefresh = useCallback(async () => { try { setIsRefreshing(true); await revalidateForRefresh("home", "home"); router.refresh(); await new Promise((r) => setTimeout(r, REFRESH_ANIMATION_MS)); return { success: true }; } catch (_error) { return { success: false, error: "Erreur lors du rafraîchissement de la page d'accueil" }; } finally { setIsRefreshing(false); } }, [router]); const pullToRefresh = usePullToRefresh({ onRefresh: async () => { await handleRefresh(); }, enabled: !isRefreshing, }); return ( <>
{children}
); }