Proyectos de Subversion LeadersLinked - SPA

Rev

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

import { useEffect, useState } from 'react';

import { useAlert, useApi, useFetch } from '@shared/hooks';
import { markSlideCompleted } from '@microlearning/services';

export function useSlide(topicUuid, slideUuid) {
  const [slide, setSlide] = useState(null);

  const { data, loading } = useFetch(`/microlearning/slides/${slideUuid}`);
  const { loading: markLoading, execute } = useApi(markSlideCompleted);
  const { showSuccess, showError } = useAlert();

  const handleMarkSlideCompleted = async () => {
    try {
      const message = await execute(`/microlearning/sync/topic/${topicUuid}/slide/${slideUuid}`);
      setSlide({ ...slide, completed: true });
      showSuccess(message);
    } catch (error) {
      console.error(error);
      showError(error.message);
    }
  };

  useEffect(() => {
    if (data) setSlide(data);
  }, [data]);

  return { slide, loading, markLoading, handleMarkSlideCompleted };
}