Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3820 | Rev 3955 | 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
3820 stevensc 31
                if (!data.success) {
32
                    dispatch(addNotification({ style: "danger", msg: data.data }))
3630 stevensc 33
                    return
34
                }
3818 stevensc 35
                dispatch(addNotification({ style: "success", msg: data.data }))
36
                handleShowConfirmModal()
3630 stevensc 37
                dispatch(deleteFeed(feedUnique));
38
            });
39
    };
40
 
41
    useEffect(() => {
42
        const handleClickOutside = (event) => {
43
            if (deleteButton.current && !deleteButton.current.contains(event.target)) {
44
                setDisplayOption(false)
45
            }
46
        }
47
        document.addEventListener("mousedown", handleClickOutside);
48
 
49
        return () => {
50
            document.removeEventListener("mousedown", handleClickOutside);
51
        };
52
    }, [deleteButton]);
53
 
54
    return (
55
        <>
56
            <div className="post_topbar" >
57
                <div className="usy-dt">
58
                    <a href={ownerUrl}>
59
                        <img
60
                            src={ownerImage}
61
                            alt=""
62
                            style={{ width: "50px", height: "auto", }}
63
                        />
64
                    </a>
65
                    <div className="usy-name">
66
                        <a href={ownerUrl}>
67
                            <h3>{ownerName}</h3>
68
                        </a>
69
                        <span>
70
                            {ownerTimeElapse}
71
                        </span>
72
                    </div>
73
                </div>
74
                {feedDeleteUrl &&
75
                    <div className="cursor-pointer d-flex align-items-center">
76
                        <BiDotsVerticalRounded
77
                            onClick={() => setDisplayOption(!displayOption)}
78
                            style={{ fontSize: '1.5rem' }}
79
                        />
80
                        <div className={`feed-options ${displayOption ? 'active' : ''}`}>
81
                            <ul>
82
                                <li>
83
                                    <button
84
                                        className="option-btn"
85
                                        onClick={handleShowConfirmModal}
86
                                        ref={deleteButton}
87
                                    >
88
                                        <BsTrash className="mr-1" />
89
                                        Borrar
90
                                    </button>
91
                                </li>
92
                            </ul>
93
                        </div>
94
                    </div>
95
                }
3954 stevensc 96
                <ConfirmModal
97
                    show={showConfirmModal}
98
                    onClose={() => handleShowConfirmModal(false)}
99
                    onAccept={deleteFeedHandler}
100
                    acceptLabel="Aceptar"
101
                />
3630 stevensc 102
            </div >
103
        </>
104
    )
105
}
106
 
107
export default FeedHeader