useEffect(() => {
// console.log("que paso aqui?")
if(!socket){
socket = io(process.env.REACT_APP_ENDPOINT, connectionOptions);
setsocket(socket);
}else{
const listenerMessageEvent = (data) => {
// console.log(data);
setMessageStatus(data.message);
dispatch(change_message_status_action(data.message));
}
const listener = (data) => {
// console.log('data',data);
//at this point, the users array is outdated
let numeroQueViene = null;
//esto es un mensaje desde la aplicacion de chat crm
if(typeof data.data.to != 'undefined'){
numeroQueViene = data.data.to;
}
// cuando viene un mensaje desde afuera de la aplicacion del crm
if(typeof data.new_message_from != 'undefined'){
numeroQueViene = data.new_message_from;
}
//muestra los mensajes cuando tiene la ventana seleccionada
if(current_chat && current_chat.number == numeroQueViene) {
dispatch( success_message_action(data) )
if(data.numbers_with_names){
dispatch( new_message_other_window_action(data) );
}
}else{
// console.log("entro en nuevo mensaje")
dispatch( new_message_other_window_action(data) );
//deberia mostrar una notificacion una bolita verde en la conversacion en la parte izquierda
}
setTimeout(()=>{
document.getElementById('conversation').scrollBy(0, document.getElementById('conversation').offsetHeight*10);
},100)
}
socket.on("success_message", listener)
socket.on("delivery_event",listenerMessageEvent)
// CLEAN UP THE EFFECT
return () => {
socket.off("success_message", listenerMessageEvent);
socket.off("delivery_event", listenerMessageEvent);
socket.disconnect()
};
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [current_chat,success_message,messageStatus]);