Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5697 | | 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'
6357 stevensc 10
import useOutsideClick from '../../../hooks/useOutsideClick'
3630 stevensc 11
 
12
const FeedHeader = ({
5115 stevensc 13
  ownerName,
14
  ownerImage,
15
  ownerTimeElapse,
16
  ownerUrl,
17
  feedDeleteUrl,
5697 stevensc 18
  feedUnique,
19
  feedType,
3630 stevensc 20
}) => {
5115 stevensc 21
  const [showConfirmModal, setShowConfirmModal] = useState(false)
22
  const [displayOption, setDisplayOption] = useState(false)
6357 stevensc 23
  const deleteButton = useRef(null)
24
  const outsideClick = useOutsideClick(deleteButton)
5115 stevensc 25
  const dispatch = useDispatch()
3630 stevensc 26
 
5115 stevensc 27
  const handleShowConfirmModal = () => setShowConfirmModal(!showConfirmModal)
3630 stevensc 28
 
5115 stevensc 29
  const deleteFeedHandler = () => {
5697 stevensc 30
    axios.post(feedDeleteUrl).then((res) => {
31
      const { data } = res
32
      if (!data.success) {
33
        dispatch(addNotification({ style: 'danger', msg: data.data }))
34
        return
35
      }
36
      dispatch(addNotification({ style: 'success', msg: data.data }))
37
      handleShowConfirmModal()
38
      dispatch(deleteFeed(feedUnique))
39
    })
5115 stevensc 40
  }
3630 stevensc 41
 
5115 stevensc 42
  useEffect(() => {
6357 stevensc 43
    if (!outsideClick) return
44
    setDisplayOption(false)
45
  }, [outsideClick])
3630 stevensc 46
 
5115 stevensc 47
  return (
5697 stevensc 48
    <>
49
      <div className="post_topbar">
50
        <div className="usy-dt">
51
          <a href={ownerUrl}>
52
            <img
53
              src={ownerImage}
54
              alt=""
55
              style={{ width: '50px', height: 'auto' }}
56
            />
57
          </a>
58
          <div className="usy-name">
59
            <a href={ownerUrl}>
60
              <h3>{ownerName}</h3>
61
            </a>
62
            <span>
63
              {feedType === 'g' && <GroupsRoundedIcon />}
64
              {ownerTimeElapse}
65
            </span>
66
          </div>
67
        </div>
68
        {feedDeleteUrl && (
69
          <div className="cursor-pointer d-flex align-items-center">
70
            <img
71
              src="/images/icons/options.png"
72
              className="cursor-pointer img-icon options"
73
              onClick={() => setDisplayOption(!displayOption)}
74
            />
75
            <div className={`feed-options ${displayOption ? 'active' : ''}`}>
76
              <ul>
77
                <li>
78
                  <button
79
                    className="option-btn"
80
                    onClick={handleShowConfirmModal}
81
                    ref={deleteButton}
82
                  >
83
                    <i className="fa fa-trash-o mr-1" />
84
                    {LABELS.DELETE}
85
                  </button>
86
                </li>
87
              </ul>
88
            </div>
89
            <ConfirmModal
90
              show={showConfirmModal}
91
              onClose={() => handleShowConfirmModal(false)}
92
              onAccept={deleteFeedHandler}
93
              acceptLabel="Aceptar"
94
            />
95
          </div>
96
        )}
97
      </div>
98
    </>
5115 stevensc 99
  )
3630 stevensc 100
}
101
 
5115 stevensc 102
export default FeedHeader