Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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