45 lines
1014 B
TypeScript
45 lines
1014 B
TypeScript
"use client";
|
|
|
|
import { useState, useEffect } from "react";
|
|
|
|
interface UserActivityData {
|
|
activeUsers: number;
|
|
inactiveUsers: number;
|
|
totalUsers: number;
|
|
}
|
|
|
|
export function useUserActivity() {
|
|
const [activity, setActivity] = useState<UserActivityData | null>(null);
|
|
const [loading, setLoading] = useState(true);
|
|
const [error, setError] = useState<string | null>(null);
|
|
|
|
const fetchActivity = async () => {
|
|
try {
|
|
setLoading(true);
|
|
setError(null);
|
|
|
|
const response = await fetch("/api/user-activity");
|
|
if (!response.ok) {
|
|
throw new Error("Erreur lors du chargement de l'activité des utilisateurs");
|
|
}
|
|
|
|
const data = await response.json();
|
|
setActivity(data);
|
|
} catch (err) {
|
|
setError(err instanceof Error ? err.message : "Erreur inconnue");
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
};
|
|
|
|
useEffect(() => {
|
|
fetchActivity();
|
|
}, []);
|
|
|
|
return {
|
|
activity,
|
|
loading,
|
|
error,
|
|
refetch: fetchActivity
|
|
};
|
|
} |