Rev 3041 | 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};}