Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3694 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 3694 Rev 3719
Línea 1... Línea 1...
1
import React, { useEffect, useState } from 'react';
1
import React, { useEffect, useState } from 'react';
2
import { useDispatch, useSelector } from 'react-redux';
2
import { useDispatch, useSelector } from 'react-redux';
3
import { IconButton } from '@mui/material';
3
import { IconButton } from '@mui/material';
4
import Edit from '@mui/icons-material/Edit';
4
import Edit from '@mui/icons-material/Edit';
5
 
5
 
6
import { updateSkills } from '@services/profile/profiles';
6
import { updateSkills } from '@services/profile/profiles';
7
import { addNotification } from '@store/notification/notification.actions';
7
import { addNotification } from '@store/notification/notification.actions';
8
 
8
 
9
import Widget from '@components/UI/Widget';
9
import Widget from '@components/UI/Widget';
10
import TagsList from '@components/UI/TagsList';
10
import TagsList from '@components/UI/TagsList';
11
import SkillsModal from './SkillsModal';
11
import SkillsModal from './SkillsModal';
12
 
12
 
13
const SkillsCard = ({ skills: defaultSkills = [], uuid = '', edit = false }) => {
13
const SkillsCard = ({ skills: defaultSkills = [], uuid = '', edit = false }) => {
14
  const [skills, setSkills] = useState([]);
14
  const [skills, setSkills] = useState([]);
15
  const [showModal, setShowModal] = useState(false);
15
  const [showModal, setShowModal] = useState(false);
16
  const labels = useSelector(({ intl }) => intl.labels);
16
  const labels = useSelector(({ intl }) => intl.labels);
17
  const dispatch = useDispatch();
17
  const dispatch = useDispatch();
18
 
18
 
19
  const toggleModal = () => setShowModal(!showModal);
19
  const toggleModal = () => setShowModal(!showModal);
20
 
20
 
21
  const handleEditSkills = ({ skills }) => {
21
  const handleEditSkills = ({ skills }) => {
22
    updateSkills(uuid, skills)
22
    updateSkills(uuid, skills)
23
      .then((skills) => {
23
      .then((skills) => {
24
        setSkills(skills);
24
        setSkills(skills);
25
        toggleModal();
25
        toggleModal();
26
      })
26
      })
27
      .catch((error) => {
27
      .catch((error) => {
28
        dispatch(addNotification({ style: 'danger', msg: error.message }));
28
        dispatch(addNotification({ style: 'danger', msg: error.message }));
29
      });
29
      });
30
  };
30
  };
31
 
31
 
32
  useEffect(() => {
32
  useEffect(() => {
33
    setSkills(defaultSkills);
33
    setSkills(defaultSkills);
34
  }, [defaultSkills]);
34
  }, [defaultSkills]);
35
 
35
 
36
  return (
36
  return (
37
    <>
37
    <>
38
      <Widget>
38
      <Widget>
39
        <Widget.Header
39
        <Widget.Header
40
          title={labels.skills}
40
          title={labels.skills}
41
          renderAction={() => {
41
          renderAction={() => {
42
            if (!edit) return;
42
            if (!edit) return;
43
            return (
43
            return (
44
              <IconButton onClick={toggleModal}>
44
              <IconButton onClick={toggleModal}>
45
                <Edit />
45
                <Edit />
46
              </IconButton>
46
              </IconButton>
47
            );
47
            );
48
          }}
48
          }}
49
        />
49
        />
50
 
50
 
51
        <Widget.Body>
51
        <Widget.Body>
52
          <TagsList tags={skills} />
52
          <TagsList tags={skills} />
53
        </Widget.Body>
53
        </Widget.Body>
54
      </Widget>
54
      </Widget>
55
 
55
 
56
      <SkillsModal
56
      <SkillsModal
57
        show={showModal}
57
        show={showModal}
58
        onClose={toggleModal}
58
        onClose={toggleModal}
59
        onConfirm={handleEditSkills}
59
        onConfirm={handleEditSkills}
60
        skills={skills}
60
        skills={skills}
61
      />
61
      />
62
    </>
62
    </>
63
  );
63
  );
64
};
64
};
65
 
65
 
66
export default SkillsCard;
66
export default SkillsCard;