import { useState, useEffect, useCallback } from 'react'; import { api } from '../services/api'; import { Activity } from '../types'; export const useActivities = (subDepartmentId?: string | number) => { const [activities, setActivities] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const fetchActivities = useCallback(async () => { setLoading(true); setError(null); try { const params: { subDepartmentId?: number; departmentId?: number } = {}; if (subDepartmentId) { params.subDepartmentId = Number(subDepartmentId); } const data = await api.getActivities(params); setActivities(data); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to fetch activities'); setActivities([]); } finally { setLoading(false); } }, [subDepartmentId]); useEffect(() => { fetchActivities(); }, [fetchActivities]); return { activities, loading, error, refresh: fetchActivities }; }; export const useActivitiesByDepartment = (departmentId?: string | number) => { const [activities, setActivities] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const fetchActivities = useCallback(async () => { if (!departmentId) { setActivities([]); return; } setLoading(true); setError(null); try { const data = await api.getActivities({ departmentId: Number(departmentId) }); setActivities(data); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to fetch activities'); setActivities([]); } finally { setLoading(false); } }, [departmentId]); useEffect(() => { fetchActivities(); }, [fetchActivities]); return { activities, loading, error, refresh: fetchActivities }; };