Rev 3047 | Rev 3647 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from "react";import { useDispatch, useSelector } from "react-redux";import { IconButton } from "@mui/material";import { Edit } from "@mui/icons-material";import { axios } from "@utils";import { addNotification } from "@store/notification/notification.actions";import Widget from "@components/UI/Widget";import TagsList from "@components/UI/TagsList";import LanguagesModal from "./LanguagesModal";const LanguagesCard = ({languages: defaultLanguages = [],uuid = "",edit = false,}) => {const [languages, setLanguages] = useState([]);const [showModal, setShowModal] = useState(false);const labels = useSelector(({ intl }) => intl.labels);const dispatch = useDispatch();const toggleModal = () => setShowModal(!showModal);const handleEditLanguages = ({ languages }) => {const formData = new FormData();languages.map((language) => formData.append("languages[]", language.value));axios.post(`/profile/my-profiles/language/${uuid}`, formData).then((response) => {const { success, data } = response.data;if (!success) {const errorMessage =typeof data === "string" ? data : data.languages[0];throw new Error(errorMessage);}setLanguages(languages);toggleModal();}).catch((err) => {dispatch(addNotification({ style: "danger", msg: err.message }));});};useEffect(() => {setLanguages(defaultLanguages);}, [defaultLanguages]);return (<><Widget><Widget.Headertitle={labels.languages}renderAction={() => {if (!edit) return;return (<IconButton onClick={toggleModal}><Edit /></IconButton>);}}/><Widget.Body><TagsList tags={languages} /></Widget.Body></Widget><LanguagesModalshow={showModal}onClose={toggleModal}onConfirm={handleEditLanguages}languages={languages}/></>);};export default LanguagesCard;