Estoy integrando Discourse en otra aplicación e intento determinar a través de la API si alguien tiene alguna actividad de chat nueva pendiente. Si hay mensajes nuevos, solo quiero mostrar una insignia roja.
Más específicamente, estoy intentando aprovechar las preferencias que el cliente haya establecido en su “chat_header_indicator_preference” y, en este momento, la tengo configurada en “all_new”, lo que creo que debería mostrar cualquier mensaje nuevo en los canales a los que pertenezco, así como menciones/mensajes directos no leídos.
Esperaba que al ir a /session/current.json pudiera ver algo allí que pudiera usar para esto, pero no he visto nada útil.
¿Existe algún punto final de API que pueda usar para entender si hay mensajes nuevos basados en el “chat_header_indicator_preference” de un usuario?
gracias @j.jaffeux. Estoy revisando /chat/api/me/channels y veo que bajo seguimiento puedo revisar todos los canales y ver si el unread_count de alguno de los canales es > 0, lo cual es útil.
Pero esto no parece tener nada que ver con la chat_header_indicator_preference de un usuario y tampoco me dice si ha habido algún DM o mención para el usuario.
En teoría, puedo intentar recrear la lógica de chat_header_indicator_preference revisando primero si el usuario la tiene configurada en “all_new” y, si es así, verificando si algún unread_count de sus canales es > 0 y si todos esos son 0, entonces verificando los DMs/menciones no leídos.
Pero espero que haya una mejor manera de hacerlo… (y tampoco estoy seguro de cómo obtener esa segunda parte para los DMs/menciones no leídos).
Un usuario solo esperaría ver una insignia roja por actividad nueva basándose en esta preferencia. Si alguien tiene configurado “Todos los mensajes nuevos”, esperaría que esto signifique que aparecería una insignia si hay alguna actividad nueva en cualquiera de los canales en los que se encuentra o si ha tenido una mención o un mensaje directo.
Me mostraste cómo recorrer todos los canales y ver si hay mensajes no leídos, pero 1) eso no tiene nada que ver con esta preferencia
2) eso no me ayudaría a entender si tienen mensajes directos o menciones.
Idealmente, esperaba encontrar un endpoint que me ayudara a mostrar una insignia basándome en el chat_header_indicator_preference del cliente.
Si eso no es posible, entonces parece que primero tendría que verificar si tienen mensajes no leídos en la “sección de seguimiento” de chat/api/me/channels, y luego verificar una segunda ubicación para ver si tenían mensajes directos/menciones.
No sé dónde estaría esa segunda ubicación, pero esperaba que alguien más pudiera indicarme la dirección correcta.
En el seguimiento, ¿hay alguna forma de saber qué canales son DM y cuáles son públicos?
Si un usuario tiene chat_header_indicator_preference configurado en “Mensajes directos y menciones”, no querría mostrar una insignia para los nuevos mensajes normales en un canal.