Untitled

 avatar
unknown
javascript
3 years ago
2.2 kB
6
Indexable
  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]);