/** * BoostMedia AI Content Generator Admin - useLogs Hook * * @package BoostMedia_AI * @license GPL-2.0-or-later */ import { useState, useEffect, useCallback } from 'react' import type { GenerationLog, ApiError } from '../types' import { endpoints } from '../api/client' interface UseLogsParams { limit?: number action_type?: string } interface UseLogsReturn { logs: GenerationLog[] loading: boolean error: ApiError | null refetch: () => Promise } export function useLogs(params?: UseLogsParams): UseLogsReturn { const [logs, setLogs] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const limitRef = params?.limit const actionTypeRef = params?.action_type const fetchLogs = useCallback(async () => { setLoading(true) setError(null) try { const response = await endpoints.getLogs({ limit: limitRef, action_type: actionTypeRef }) const data = response.data setLogs(Array.isArray(data) ? data as GenerationLog[] : []) } catch (err) { setError(err as ApiError) setLogs([]) } finally { setLoading(false) } }, [limitRef, actionTypeRef]) useEffect(() => { fetchLogs() }, [fetchLogs]) return { logs, loading, error, refetch: fetchLogs } }