Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3503 | Rev 3512 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import { useRef, useState } from 'react';

import { useFetch, useSearch } from '@shared/hooks';

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 capsulesRoutes = useRef(CAPSULES_ROUTES);
  const capsuleCategories = useRef(CAPSULES_CATEGORIES);

  const { searchTerm, handleSearch } = useSearch();

  const { data: capsules, loading: capsulesLoading } = useFetch(
    capsulesRoutes.current[category].link,
    { initialParams: capsulesRoutes.current[category].params }
  );

  const { data: currentCapsule, loading: currentCapsuleLoading } = useFetch(
    '/microlearning/last-capsule-in-progress'
  );

  const filteredCapsules =
    capsules?.filter((capsule) => capsule.name.toLowerCase().includes(searchTerm.toLowerCase())) ||
    [];

  const changeCategory = (value) => {
    setCategory(value);
  };

  return {
    capsules: filteredCapsules,
    currentCapsule,
    capsulesLoading,
    currentCapsuleLoading,
    category,
    categories: capsuleCategories.current,
    searchTerm,
    changeCategory,
    searchCapsules: handleSearch
  };
}