- Updated `getJiraAnalytics` to accept a `forceRefresh` parameter for optional cache bypass. - Modified `getProjectAnalytics` to check the cache and return cached data unless forced to refresh. - Adjusted `loadAnalytics` in `useJiraAnalytics` to trigger a forced refresh on manual updates. - Improved UI in `JiraDashboardPageClient` to indicate when data is served from cache.
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
'use client';
|
|
|
|
import { useState, useTransition, useCallback } from 'react';
|
|
import { getJiraAnalytics } from '@/actions/jira-analytics';
|
|
import { JiraAnalytics } from '@/lib/types';
|
|
|
|
export function useJiraAnalytics() {
|
|
const [analytics, setAnalytics] = useState<JiraAnalytics | null>(null);
|
|
const [error, setError] = useState<string | null>(null);
|
|
const [isPending, startTransition] = useTransition();
|
|
|
|
const loadAnalytics = useCallback((forceRefresh = false) => {
|
|
startTransition(async () => {
|
|
try {
|
|
setError(null);
|
|
|
|
const result = await getJiraAnalytics(forceRefresh);
|
|
|
|
if (result.success && result.data) {
|
|
setAnalytics(result.data);
|
|
} else {
|
|
setError(result.error || 'Erreur lors du chargement des analytics');
|
|
}
|
|
} catch (err) {
|
|
const errorMessage = err instanceof Error ? err.message : 'Erreur lors du chargement des analytics';
|
|
setError(errorMessage);
|
|
console.error('Erreur analytics Jira:', err);
|
|
}
|
|
});
|
|
}, []);
|
|
|
|
const refreshAnalytics = useCallback(() => {
|
|
loadAnalytics(true); // Force refresh quand on actualise manuellement
|
|
}, [loadAnalytics]);
|
|
|
|
return {
|
|
analytics,
|
|
isLoading: isPending,
|
|
error,
|
|
loadAnalytics,
|
|
refreshAnalytics
|
|
};
|
|
}
|