Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 1x 1x 1x 1x 291x 291x 291x 291x 291x 222x 222x 222x 222x 221x 221x 222x 1x 1x 222x 222x 222x 222x 291x 1x 1x 1x 291x 221x 291x 291x 291x 291x 291x 291x 291x 291x 1x | import { useEffect, useState } from "react"; import { CIAContentService, createCIAContentService, } from "../services/ciaContentService"; import { toErrorObject } from "../utils"; /** * Hook to access the CIA content service with loading and error states * @returns Object containing the CIA content service, loading state, and error state */ export const useCIAContentService = () => { const [ciaContentService, setCIAContentService] = useState<CIAContentService | null>(null); const [isLoading, setIsLoading] = useState<boolean>(true); const [error, setError] = useState<Error | null>(null); const initService = async () => { try { setIsLoading(true); // Create the service using the createCIAContentService factory function const service = createCIAContentService(); // Wait for any async initialization to complete await service.initialize(); setCIAContentService(service); setError(null); } catch (err) { setCIAContentService(null); setError(toErrorObject(err)); } finally { setIsLoading(false); } }; // Refresh function to retry initialization if needed const refresh = () => { // Make sure we set isLoading immediately, not after the async part setIsLoading(true); initService(); }; useEffect(() => { initService(); }, []); return { ciaContentService, isLoading, error, refresh, }; }; // Keep the default export for backward compatibility export default useCIAContentService; |