Rev 2781 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from "react";
import { connect } from "react-redux";
import { axios } from "utils";
import { addNotification } from "@app/redux/notification/notification.actions";
import Widget from "@components/UI/Widget";
import Spinner from "@components/UI/Spinner";
import SwitchInput from "@components/UI/SwitchInput";
const SocialNetworks = ({
facebook,
google,
twitter,
addNotification, // Redux action
}) => {
const [loading, setLoading] = useState(false);
const addSocialNetwork = (network) => {
setLoading(true);
axios
.get(`/account-settings/add-${network.toLowerCase()}`)
.then((response) => {
const resData = response.data;
if (!resData.success) {
return addNotification({
style: "danger",
msg: "Ha ocurrido un error, Por favor intente más tarde",
});
}
const OauthLink = resData.data;
window.location.replace(OauthLink);
});
};
const removeSocialNetwork = (network) => {
setLoading(true);
axios
.post(`/account-settings/add-${network.toLowerCase()}`)
.then((response) => {
const { success, data } = response.data;
if (!success) {
throw new Error(data);
}
addNotification({ style: "success", msg: data });
})
.catch((err) => addNotification({ style: "danger", msg: err.message }))
.finally(() => setLoading(false));
};
const socialNetworks = [
{
name: "Facebook",
status: facebook,
},
{
name: "Google",
status: google,
},
{
name: "Twitter",
status: twitter,
},
];
return (
<Widget>
<Widget.Header title="Cambiar Configuración de las redes sociales" />
<Widget.Body>
{loading && <Spinner />}
{!!socialNetworks.length &&
socialNetworks.map(({ name, status }) => (
<div
key={name}
className="d-flex align-items-center justify-content-between"
>
<span>{name}</span>
<div className="d-flex align-items-center">
<label htmlFor="is_current">
{status ? "Desconectar" : "Conectar"}
</label>
<div className="form-group">
<SwitchInput
isChecked={status}
setValue={(connect) =>
connect
? removeSocialNetwork(name)
: addSocialNetwork(name)
}
/>
</div>
</div>
</div>
))}
</Widget.Body>
</Widget>
);
};
const mapDispatchToProps = {
addNotification: (notification) => addNotification(notification),
};
export default connect(null, mapDispatchToProps)(SocialNetworks);