Rev 3512 | Rev 3514 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { useRef, useState, useMemo } from 'react';import { useFetch } from '@shared/hooks';import { useDebouncedSearchParam } from '@shared/hooks/useDebouncedSearchParam';const CAPSULES_ROUTES = {pending: {link: '/microlearning/capsules-pending',params: {order_field: 'added_on',order_direction: 'desc'}},progress: {link: '/microlearning/capsules-in-progress',params: {}},completed: {link: '/microlearning/capsules-completed',params: {order_field: 'last_access_on',order_direction: 'desc'}}};const CAPSULES_CATEGORIES = [{label: 'Pendiente',value: 'pending'},{label: 'En curso',value: 'progress'},{label: 'Finalizado',value: 'completed'}];export function useMicrolearning() {const [category, setCategory] = useState(CAPSULES_CATEGORIES[0].value);const {inputValue: searchTerm,setInputValue: setSearchTerm,debouncedValue: debouncedSearchTerm} = useDebouncedSearchParam('search', 500);const capsulesRoutes = useRef(CAPSULES_ROUTES);const capsuleCategories = useRef(CAPSULES_CATEGORIES);const { data: rawCapsules, loading: capsulesLoading } = useFetch(capsulesRoutes.current[category].link,{ initialParams: capsulesRoutes.current[category].params });const capsules = useMemo(() => {if (!rawCapsules) return [];if (!debouncedSearchTerm) return rawCapsules;return rawCapsules.filter((capsule) =>capsule.title?.toLowerCase().includes(debouncedSearchTerm.toLowerCase()));}, [rawCapsules, debouncedSearchTerm]);const { data: currentCapsule, loading: currentCapsuleLoading } = useFetch('/microlearning/last-capsule-in-progress');const changeCategory = (value) => {setCategory(value);};return {capsules: capsules || [],currentCapsule,capsulesLoading,currentCapsuleLoading,category,categories: capsuleCategories.current,changeCategory,searchCapsules: setSearchTerm,searchTerm};}