Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3156 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3432 stevensc 1
import React from "react";
2
import { useNavigate } from "react-router-dom";
3
import { Avatar, Button, Typography } from "@mui/material";
4
import { useDispatch } from "react-redux";
5
import parse from "html-react-parser";
3104 stevensc 6
 
3432 stevensc 7
import { axios } from "@app/utils";
8
import { addNotification } from "@app/redux/notification/notification.actions";
3104 stevensc 9
 
3432 stevensc 10
import Widget from "@components/UI/Widget";
3104 stevensc 11
 
12
export default function CompanyWidget({
13
  company: {
14
    cover,
15
    name,
16
    image,
17
    overview,
18
    link_contact,
19
    link_unfollow,
20
    link_follow,
21
    link_request,
22
    link_accept,
23
    link_cancel,
24
    link_reject,
3432 stevensc 25
    link_leave,
3104 stevensc 26
  },
3432 stevensc 27
  refetch = () => {},
3104 stevensc 28
}) {
3432 stevensc 29
  const dispatch = useDispatch();
30
  const navigate = useNavigate();
3104 stevensc 31
 
32
  const handleButtonAction = async (link) => {
3432 stevensc 33
    const response = await axios.post(link);
34
    const { success, data } = response.data;
35
    if (success) {
36
      dispatch(addNotification({ style: "success", msg: data }));
37
      refetch();
3104 stevensc 38
    } else {
39
      dispatch(
3432 stevensc 40
        addNotification({ style: "danger", msg: "ha ocurrido un error" })
41
      );
3104 stevensc 42
    }
3432 stevensc 43
  };
3104 stevensc 44
 
45
  return (
46
    <Widget>
47
      <Widget.Media height={150} src={cover} />
48
 
49
      <Widget.Body>
50
        <Avatar
51
          src={image}
52
          alt={name}
3432 stevensc 53
          sx={{ mt: "-40px", width: "80px", height: "80px" }}
3104 stevensc 54
        />
3432 stevensc 55
        <Typography variant="h2">{name}</Typography>
56
        <Typography variant="body1">{parse(overview ?? "")}</Typography>
3104 stevensc 57
      </Widget.Body>
58
 
59
      <Widget.Actions>
60
        {link_contact && (
3432 stevensc 61
          <Button color="primary" onClick={() => navigate(link_contact)}>
3104 stevensc 62
            Mensaje
63
          </Button>
64
        )}
65
        {link_unfollow && (
66
          <Button
3432 stevensc 67
            color="secondary"
3104 stevensc 68
            onClick={() => handleButtonAction(link_unfollow)}
69
          >
70
            Dejar de seguir
71
          </Button>
72
        )}
73
        {link_follow && (
74
          <Button
3432 stevensc 75
            color="primary"
3104 stevensc 76
            onClick={() => handleButtonAction(link_follow)}
77
          >
78
            Seguir
79
          </Button>
80
        )}
81
        {link_request && link_unfollow && (
82
          <Button
3432 stevensc 83
            color="secondary"
3104 stevensc 84
            onClick={() => handleButtonAction(link_request)}
85
          >
86
            ¿Trabaja en esta empresa?
87
          </Button>
88
        )}
89
        {link_accept && (
90
          <Button
3432 stevensc 91
            color="primary"
3104 stevensc 92
            onClick={() => handleButtonAction(link_accept)}
93
          >
94
            Aceptar
95
          </Button>
96
        )}
97
        {link_cancel && (
3432 stevensc 98
          <Button color="info" onClick={() => handleButtonAction(link_cancel)}>
3104 stevensc 99
            Cancelar
100
          </Button>
101
        )}
102
        {link_reject && (
3432 stevensc 103
          <Button color="info" onClick={() => handleButtonAction(link_reject)}>
3104 stevensc 104
            Rechazar
105
          </Button>
106
        )}
107
        {link_leave && (
108
          <Button
3432 stevensc 109
            color="secondary"
3104 stevensc 110
            onClick={() => handleButtonAction(link_leave)}
111
          >
112
            Abandonar esta empresa
113
          </Button>
114
        )}
115
      </Widget.Actions>
116
    </Widget>
3432 stevensc 117
  );
3104 stevensc 118
}