Rev 3040 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { useEffect, useState } from 'react'import { useDispatch } from 'react-redux'import { addNotification } from '@store/notification/notification.actions'export function useResource({defaultResources = [],addResource,editResource,deleteResource}) {const [resources, setResources] = useState(defaultResources)const [modalState, setModalState] = useState(null)const [currentResource, setCurrentResource] = useState(null)const dispatch = useDispatch()const showModal = (type, resource = null) => {setCurrentResource(resource)setModalState(modalState === type ? null : type)}const clearModal = () => {showModal(null)setCurrentResource(null)}const onAdd = async (uuid, resource) => {try {const newResources = await addResource(uuid, resource)setResources(newResources)clearModal()} catch (error) {dispatch(addNotification({ style: 'danger', msg: error.message }))}}const onEdit = async (resource) => {try {console.log('Editing')const newResources = await editResource(currentResource.link_edit,resource)console.log(newResources)setResources(newResources)clearModal()} catch (error) {dispatch(addNotification({ style: 'danger', msg: error.message }))}}const onDelete = async () => {try {const newResources = await deleteResource(currentResource.link_delete)setResources(newResources)clearModal()} catch (error) {dispatch(addNotification({ style: 'danger', msg: error.message }))}}useEffect(() => {setResources(defaultResources)}, [defaultResources])return {showModal,modalState,onAdd,onEdit,onDelete,clearModal,resources,currentResource}}