/** * BoostMedia AI Content Generator Admin - useStructures Hook * * @package BoostMedia_AI * @license GPL-2.0-or-later */ import { useState, useEffect, useCallback } from 'react' import type { PostStructure, ApiError } from '../types' import { endpoints, getErrorMessage } from '../api/client' interface UseStructuresReturn { structures: PostStructure[] loading: boolean error: ApiError | null refetch: () => Promise } export function useStructures(): UseStructuresReturn { const [structures, setStructures] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const fetchStructures = useCallback(async () => { setLoading(true) setError(null) try { const response = await endpoints.getStructures() const data = response.data setStructures(Array.isArray(data) ? data as PostStructure[] : []) } catch (err) { setStructures([]) setError({ message: getErrorMessage(err, 'Failed to load structures') } as ApiError) } finally { setLoading(false) } }, []) useEffect(() => { fetchStructures() }, [fetchStructures]) return { structures, loading, error, refetch: fetchStructures } }