Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5115 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3630 stevensc 1
/* eslint-disable react/prop-types */
2
import React, { useEffect, useRef, useState } from 'react'
5697 stevensc 3
import { axios } from '../../../utils'
4
import { deleteFeed } from '../../../redux/feed/feed.actions'
5115 stevensc 5
import { useDispatch } from 'react-redux'
6
import { addNotification } from '../../../redux/notification/notification.actions'
5697 stevensc 7
 
5115 stevensc 8
import ConfirmModal from '../../../shared/confirm-modal/ConfirmModal'
5697 stevensc 9
import GroupsRoundedIcon from '@mui/icons-material/GroupsRounded'
3630 stevensc 10
 
11
const FeedHeader = ({
5115 stevensc 12
  ownerName,
13
  ownerImage,
14
  ownerTimeElapse,
15
  ownerUrl,
16
  feedDeleteUrl,
5697 stevensc 17
  feedUnique,
18
  feedType,
3630 stevensc 19
}) => {
5115 stevensc 20
  const [showConfirmModal, setShowConfirmModal] = useState(false)
21
  const [displayOption, setDisplayOption] = useState(false)
22
  const deleteButton = useRef()
23
  const dispatch = useDispatch()
3630 stevensc 24
 
5115 stevensc 25
  const handleShowConfirmModal = () => setShowConfirmModal(!showConfirmModal)
3630 stevensc 26
 
5115 stevensc 27
  const deleteFeedHandler = () => {
5697 stevensc 28
    axios.post(feedDeleteUrl).then((res) => {
29
      const { data } = res
30
      if (!data.success) {
31
        dispatch(addNotification({ style: 'danger', msg: data.data }))
32
        return
33
      }
34
      dispatch(addNotification({ style: 'success', msg: data.data }))
35
      handleShowConfirmModal()
36
      dispatch(deleteFeed(feedUnique))
37
    })
5115 stevensc 38
  }
3630 stevensc 39
 
5115 stevensc 40
  useEffect(() => {
41
    const handleClickOutside = (event) => {
5697 stevensc 42
      if (
43
        deleteButton.current &&
44
        !deleteButton.current.contains(event.target)
45
      ) {
5115 stevensc 46
        setDisplayOption(false)
47
      }
48
    }
49
    document.addEventListener('mousedown', handleClickOutside)
3630 stevensc 50
 
5115 stevensc 51
    return () => {
52
      document.removeEventListener('mousedown', handleClickOutside)
53
    }
54
  }, [deleteButton])
3630 stevensc 55
 
5115 stevensc 56
  return (
5697 stevensc 57
    <>
58
      <div className="post_topbar">
59
        <div className="usy-dt">
60
          <a href={ownerUrl}>
61
            <img
62
              src={ownerImage}
63
              alt=""
64
              style={{ width: '50px', height: 'auto' }}
65
            />
66
          </a>
67
          <div className="usy-name">
68
            <a href={ownerUrl}>
69
              <h3>{ownerName}</h3>
70
            </a>
71
            <span>
72
              {feedType === 'g' && <GroupsRoundedIcon />}
73
              {ownerTimeElapse}
74
            </span>
75
          </div>
76
        </div>
77
        {feedDeleteUrl && (
78
          <div className="cursor-pointer d-flex align-items-center">
79
            <img
80
              src="/images/icons/options.png"
81
              className="cursor-pointer img-icon options"
82
              onClick={() => setDisplayOption(!displayOption)}
83
            />
84
            <div className={`feed-options ${displayOption ? 'active' : ''}`}>
85
              <ul>
86
                <li>
87
                  <button
88
                    className="option-btn"
89
                    onClick={handleShowConfirmModal}
90
                    ref={deleteButton}
91
                  >
92
                    <i className="fa fa-trash-o mr-1" />
93
                    {LABELS.DELETE}
94
                  </button>
95
                </li>
96
              </ul>
97
            </div>
98
            <ConfirmModal
99
              show={showConfirmModal}
100
              onClose={() => handleShowConfirmModal(false)}
101
              onAccept={deleteFeedHandler}
102
              acceptLabel="Aceptar"
103
            />
104
          </div>
105
        )}
106
      </div>
107
    </>
5115 stevensc 108
  )
3630 stevensc 109
}
110
 
5115 stevensc 111
export default FeedHeader