feat: loading on page change

This commit is contained in:
Julien Froidefond
2025-02-15 11:37:54 +01:00
parent c049341fcd
commit eb542feaef
5 changed files with 171 additions and 38 deletions

View File

@@ -0,0 +1,40 @@
"use client";
import { useNetworkProgress, simulateProgress } from "@/components/ui/network-progress";
import { useCallback } from "react";
export function useNetworkRequest() {
const { startProgress, updateProgress, completeProgress } = useNetworkProgress();
const executeRequest = useCallback(
async <T>(requestFn: () => Promise<T>): Promise<T> => {
const requestId = Math.random().toString(36).substring(7);
try {
startProgress(requestId);
// Démarrer la simulation de progression
const progressPromise = simulateProgress(requestId, updateProgress, 500);
// Exécuter la requête
const result = await requestFn();
// Attendre que la simulation soit terminée
await progressPromise;
// Forcer la progression à 100% avant de terminer
updateProgress(requestId, 100);
setTimeout(() => completeProgress(requestId), 100);
return result;
} catch (error) {
// En cas d'erreur, on termine quand même la progression
completeProgress(requestId);
throw error;
}
},
[startProgress, updateProgress, completeProgress]
);
return { executeRequest };
}