Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { useEffect, useState } from 'react';import { useApi, useDebouncedSearchParam, usePagination } from '@shared/hooks';import { addQuestion, editQuestion, deleteQuestion } from '@my-coach/services';export function useQuestions() {const [questions, setQuestions] = useState([]);const { data, loading, hasMore, loadMore, applyFilters } = usePagination('/my-coach/questions');const { data: addedQuestion, execute: executeAddQuestion } = useApi(addQuestion);const { data: updatedQuestion, execute: executeEditQuestion } = useApi(editQuestion);const { data: deletedQuestion, execute: executeDeleteQuestion } = useApi(deleteQuestion);const {inputValue: searchTerm,setInputValue: setSearchTerm,debouncedValue: debouncedSearchTerm} = useDebouncedSearchParam('search');const {inputValue: searchCategory,setInputValue: setSearchCategory,debouncedValue: debouncedSearchCategory} = useDebouncedSearchParam('category_id');const clearFilters = () => {setSearchTerm('');setSearchCategory('');};useEffect(() => {applyFilters({search: debouncedSearchTerm,category_id: debouncedSearchCategory});}, [debouncedSearchTerm, debouncedSearchCategory]);useEffect(() => {if (data) {setQuestions(data);}}, [data]);useEffect(() => {if (addedQuestion) {setQuestions([...questions, addedQuestion]);}}, [addedQuestion]);useEffect(() => {if (updatedQuestion) {setQuestions(questions.map((question) =>question.id === updatedQuestion.id ? updatedQuestion : question));}}, [updatedQuestion]);useEffect(() => {if (deletedQuestion) {setQuestions(questions.filter((question) => question.id !== deletedQuestion.id));}}, [deletedQuestion]);return {questions,loading,hasMore,search: searchTerm,category: searchCategory,loadMore,applyFilters,searchQuestion: setSearchTerm,searchCategory: setSearchCategory,clearFilters,addQuestion: executeAddQuestion,editQuestion: executeEditQuestion,deleteQuestion: executeDeleteQuestion};}