Proyectos de Subversion LeadersLinked - SPA

Rev

Autoría | Ultima modificación | Ver Log |

import { useState } from 'react';

import { useAlert, useApi } from '@shared/hooks';
import { deleteQuestion, getQuestion } from '@my-coach/services';

export function useQuestion(uuid, { onDeleteQuestion }) {
  const [question, setQuestion] = useState(null);

  const { loading } = useApi(getQuestion, {
    autoFetch: true,
    autoFetchArgs: [uuid],
    onSuccess: (data) => {
      setQuestion(data);
    },
    onError: (error) => {
      showError(error.message);
    }
  });

  const { showSuccess, showError } = useAlert();

  const { execute: executeDeleteQuestion } = useApi(deleteQuestion);

  const updateTotalAnswers = (answers) => {
    setQuestion((prev) => ({ ...prev, answers }));
  };

  const updateTotalComments = (comments) => {
    setQuestion((prev) => ({ ...prev, comments }));
  };

  const updateTotalReactions = (reactions) => {
    setQuestion((prev) => ({ ...prev, reactions }));
  };

  const removeQuestion = async (url) => {
    await executeDeleteQuestion(url)
      .then(({ message }) => {
        showSuccess(message);
        setQuestion(null);
        onDeleteQuestion();
      })
      .catch((error) => {
        showError(error.message);
      });
  };

  return {
    question,
    loading,
    updateTotalAnswers,
    updateTotalComments,
    updateTotalReactions,
    deleteQuestion: removeQuestion
  };
}