Rev 4366 | Rev 4368 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */import React, { useEffect, useState } from "react";import { axios } from "../../../utils";import { useForm } from "react-hook-form";import { connect } from "react-redux";import { addNotification } from "../../../redux/notification/notification.actions";// Componentsimport Spinner from "../../../shared/loading-spinner/Spinner";import SwitchInput from "./switch-input/SwitchInput";const Notifications = ({ addNotification }) => {const { register, handleSubmit, setValue, getValues } = useForm();const [loading, setLoading] = useState(false);const handleOnSubmit = (data) => {setLoading(true);const formData = new FormData();Object.entries(data).map(([key, value]) => value && formData.append(key, value === 'y' ? value : 'n'))axios.post("/account-settings/notification", formData).then(({ data: response }) => {if (!response.success) {const errorMessage = typeof response.data === "string" ? response.data : "Ha ocurrido un error, Por favor intente mas tarde"return addNotification({ style: "danger", msg: errorMessage })}return addNotification({ style: "success", msg: response.data })}).finally(() => setLoading(false))};useEffect(() => {setLoading(true);axios.get("/account-settings/notification").then(({ data: response }) => {if (response.success) {Object.entries(response.data).map(([key, value]) => setValue(key, value))}}).finally(() => setLoading(false))}, []);const NOTIFICATION_OPTIONS = [{label: 'Cuando recibo una solicitud de conexión',input_name: 'receive_connection_request'},{label: 'Cuando recibo una solicitud para unirme a un grupo',input_name: "receive_invitation_group"},{label: 'Cuando aceptan mi solicitud para unirme a un grupo',input_name: "accept_my_request_join_group"},{label: 'Cuando recibo una solicitud para unirme a una empresa',input_name: "receive_invitation_company"},{label: 'Cuando le dan me gusta a una de mis publicaciones',input_name: "like_my_feed"},{label: 'Cuando comentan una de mis publicaciones',input_name: "comment_my_feed"},{label: 'Cuando comparten una de mis publicaciones',input_name: "share_my_feed"},{label: 'Cuando recibo un mensaje',input_name: "receive_inmail"},{label: 'Cuando recibo una solicitud para unirse a mi grupo',name: "receive_request_join_my_group"}]return (<div className="acc-setting"><h3>Notificaciónes de Correo Electrónico</h3>{loading? <Spinner />:<form onSubmit={handleSubmit(handleOnSubmit)}>{NOTIFICATION_OPTIONS.map((option, index) => {return (<div className="notbat" key={index}><span>{option.label}</span><SwitchInputname={option.input_name}register={register}/></div>)})}<button type="submit" className="btn btn-primary">Guardar</button></form>}</div>);};const mapDispatchToProps = {addNotification: (notification) => addNotification(notification),};export default connect(null, mapDispatchToProps)(Notifications);