Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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