@ludiks/react
Version:
Complete React library for Ludiks gamification platform - includes SDK and ready-to-use components
38 lines (37 loc) • 1.21 kB
JavaScript
import { useState, useEffect } from 'react';
import { fetchLeaderboard } from '../utils/ludiks-client';
export function useLeaderboard({ period = 'all', limit = 10, autoRefresh = false, refreshInterval = 30000, } = {}) {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const fetchData = async () => {
try {
setLoading(true);
setError(null);
const result = await fetchLeaderboard(period, limit);
setData(result);
}
catch (err) {
setError(err instanceof Error ? err.message : 'Failed to fetch leaderboard');
setData(null);
}
finally {
setLoading(false);
}
};
useEffect(() => {
fetchData();
}, [period, limit]);
useEffect(() => {
if (autoRefresh && refreshInterval > 0) {
const interval = setInterval(fetchData, refreshInterval);
return () => clearInterval(interval);
}
}, [autoRefresh, refreshInterval, period, limit]);
return {
data,
loading,
error,
refetch: fetchData,
};
}