Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
2716 stevensc 1
import { axios } from "../../../utils";
1 www 2
import React, { useEffect, useState } from "react";
3
import { useForm } from "react-hook-form";
4
import { connect } from "react-redux";
5
import styled from "styled-components";
6
import { addNotification } from "../../../redux/notification/notification.actions";
7
import Spinner from "../../../shared/loading-spinner/Spinner";
8
import SwitchInput from "./switch-input/SwitchInput";
9
 
10
const StyledSettings = styled.div`
11
  .notbat {
12
    display: flex;
13
    justify-content: space-between;
14
    align-items: center;
15
    padding: 1rem;
16
    border-bottom: 1px solid #f2f2f2;
17
    position: relative;
18
  }
19
`;
20
 
21
const StyledSpinnerContainer = styled.div`
22
  position: absolute;
23
  left: 0;
24
  top: 0;
25
  width: 100%;
26
  height: 100%;
27
  background: rgba(255, 255, 255, 0.4);
28
  display: flex;
29
  justify-content: center;
30
  align-items: center;
31
  z-index: 300;
32
`;
33
 
34
const Notifications = (props) => {
35
  // redux destructuring
36
  const { addNotification } = props;
37
  // states
38
  const [loading, setLoading] = useState(false);
39
 
40
  const { register, handleSubmit, setValue } = useForm();
41
 
42
  const handleOnSubmit = async (data) => {
43
    setLoading(true);
44
    const formData = new FormData();
45
    Object.entries(data).map(([key, value]) => {
3284 stevensc 46
      if (value) formData.append(key, value === 'y' ? value : 'n');
1 www 47
    });
48
    await axios
49
      .post("/account-settings/notification", formData)
50
      .then((response) => {
51
        const resData = response.data;
52
        if (resData.success) {
53
          addNotification({
54
            style: "success",
55
            msg: resData.data,
56
          });
57
        } else {
58
          const errorMessage =
59
            typeof resData.data === "string"
60
              ? resData.data
61
              : "Ha ocurrido un error, Por favor intente mas tarde";
62
          addNotification({
63
            style: "danger",
64
            msg: errorMessage,
65
          });
66
        }
67
      });
68
    setLoading(false);
69
  };
70
 
71
  useEffect(async () => {
72
    setLoading(true);
73
    await axios.get("/account-settings/notification").then((response) => {
74
      const resData = response.data;
75
      if (resData.success) {
76
        Object.entries(resData.data).map(([key, value]) => {
77
          setValue(key, value);
78
        });
79
      }
80
    });
81
    setLoading(false);
82
  }, []);
83
 
84
  return (
85
    <StyledSettings className="acc-setting">
1011 stevensc 86
      <h3>Notificaciones</h3>
1 www 87
      <form onSubmit={handleSubmit(handleOnSubmit)}>
88
        <div className="notbat">
2716 stevensc 89
          <div className="col-9">
90
            Cuando recibo una solicitud de conexión
91
          </div>
1 www 92
          <SwitchInput register={register} name="receive_connection_request" />
93
        </div>
94
        <div className="notbat">
2716 stevensc 95
          <div className="col-9">
96
            Cuando aceptan mi solicitud de conexión
97
          </div>
1 www 98
          <SwitchInput
99
            register={register}
100
            name="accept_my_request_connection"
101
          />
102
        </div>
103
        <div className="notbat">
2716 stevensc 104
          <div className="col-9">
105
            Cuando recibo una solicitud para unirme a un grupo
106
          </div>
1 www 107
          <SwitchInput register={register} name="receive_invitation_group" />
108
        </div>
109
        <div className="notbat">
2716 stevensc 110
          <div className="col-9">
111
            Cuando aceptan mi solicitud para unirme a un grupo
112
          </div>
1 www 113
          <SwitchInput
114
            register={register}
115
            name="accept_my_request_join_group"
116
          />
117
        </div>
118
        <div className="notbat">
2716 stevensc 119
          <div className="col-9">
120
            Cuando recibo una solicitud para unirme a una empresa
121
          </div>
1 www 122
          <SwitchInput register={register} name="receive_invitation_company" />
123
        </div>
124
        <div className="notbat">
2716 stevensc 125
          <div className="col-9">
126
            Cuando le dan me gusta a una de mis publicaciones
127
          </div>
1 www 128
          <SwitchInput register={register} name="like_my_feed" />
129
        </div>
130
        <div className="notbat">
2716 stevensc 131
          <div className="col-9">
132
            Cuando comentan una de mis publicaciones
133
          </div>
1 www 134
          <SwitchInput register={register} name="comment_my_feed" />
135
        </div>
136
        <div className="notbat">
2716 stevensc 137
          <div className="col-9">
138
            Cuando comparten una de mis publicaciones
139
          </div>
1 www 140
          <SwitchInput register={register} name="share_my_feed" />
141
        </div>
142
        <div className="notbat">
2716 stevensc 143
          <div className="col-9">
144
            Cuando recibo un mensaje
145
          </div>
1 www 146
          <SwitchInput register={register} name="receive_inmail" />
147
        </div>
148
        {/* <div className="notbat">
2716 stevensc 149
        <div className="col-9">
1 www 150
          Cuando recibo una invitación a una conferencia
2716 stevensc 151
          </div>
1 www 152
          <SwitchInput register={register} name="receive_invitation_meeting" />
153
        </div>
154
        <div className="notbat">
2716 stevensc 155
        <div className="col-9">
1 www 156
          Cuando esta próxima la conferencia
2716 stevensc 157
          </div>
1 www 158
          <SwitchInput register={register} name="receive_reminder_meeting" />
159
        </div>
160
        <div className="notbat">
2716 stevensc 161
        <div className="col-9">
1 www 162
          Cuando esten disponible los archivos de una conferencia
2716 stevensc 163
          </div>
1 www 164
          <SwitchInput
165
            register={register}
166
            name="receive_records_available_meeting"
167
          />
168
        </div> */}
169
        <div className="notbat">
2716 stevensc 170
          <div className="col-9">
171
            Cuando recibo una solicitud para unirse a mi grupo
172
          </div>
1 www 173
          <SwitchInput
174
            register={register}
175
            name="receive_request_join_my_group"
176
          />
177
        </div>
178
        <div className="save-stngs pd2">
179
          <ul>
180
            <li>
3585 stevensc 181
              <button type="submit" className="btn btn-primary">
1 www 182
                Guardar
183
              </button>
184
            </li>
185
          </ul>
186
        </div>
187
      </form>
188
      {loading && (
189
        <StyledSpinnerContainer>
190
          <Spinner />
191
        </StyledSpinnerContainer>
192
      )}
193
    </StyledSettings>
194
  );
195
};
196
 
197
// const mapStateToProps = (state) => ({
198
 
199
// })
200
 
201
const mapDispatchToProps = {
202
  addNotification: (notification) => addNotification(notification),
203
};
204
 
205
export default connect(null, mapDispatchToProps)(Notifications);