Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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