Reacciones a veces no se muestran cuando falta el recuento de reacciones

@JammyDodger notó que no podía ver las reacciones en esta publicación en el móvil: ToS and Privacy buttons disappear from /about when I remove my custom FAQ URL - #3 by Canapin [example1]

Jammy (móvil) - Sin reacciones:

Jammy (escritorio) - Reacciones a la izquierda, pero no a la derecha:

Todos los demás - Se puede ver que ha reaccionado, todo funciona como se espera:

Después de buscar en mi actividad de reacciones, encontré un ejemplo donde el problema me ocurre a mí: Admins may not realize certain sidebar customization are global - #8 by JammyDodger [example2]

Lo que ambas publicaciones tienen en común es que hay reacciones, pero el número de “me gusta” no parece estar disponible como el recuento en actions_summary.

Dependiendo de si reaccionaste a la publicación tú mismo o no, id: 2 falta en actions_summary, o si no has reaccionado, puedes ver que falta el recuento. Si entiendo correctamente, id: 2 se incluye si pudiste reaccionar (can_act) o si count > 0.

Echando un vistazo más de cerca al json de la publicación example2 https://meta.discourse.org/posts/1404583.json donde dos usuarios reaccionaron, falta este recuento:

Usuario que no ha reaccionado
can_act true
Usuario que ha reaccionado
sin id 2

En este caso, el count: 2 falta para ambos usuarios. Para el usuario que ya ha reaccionado, esto da como resultado que id: 2 falte por completo. Esto parece explicar por qué las reacciones no se muestran para el usuario que reaccionó, aunque existan reacciones.

A modo de comparación, aquí hay una publicación con dos reacciones donde el recuento se muestra como se espera Buttons to order items in emoji list settings is difficult to find on touch devices - #2 by zogstrip y el json de la publicación https://meta.discourse.org/posts/1907506.json

Usuario que no ha reaccionado
can_act true
Usuario que ha reaccionado
acted true

En esta publicación, el recuento está disponible y las reacciones aparecen como se espera.

No tengo idea de cuántas publicaciones aquí en Meta están afectadas por esto o si otros foros también están afectados. Y no puedo proporcionar pasos sobre por qué faltan los datos. Solo puedo informar que para algunas publicaciones, las reacciones no se muestran en los teléfonos móviles y solo se muestran parcialmente en las computadoras portátiles, y la causa de esto parece estar relacionada con la falta de datos.

5 Me gusta

Comencé a investigar, aquí hay una solución en curso (WIP)

1 me gusta

¿Pudiste averiguar cómo sucedió esto? Solo encontré ejemplos de 2023 y principios de 2024. Así que me pregunté si algo con los datos antes de que todas las reacciones se contaran como “me gusta” es diferente a después de ese cambio.
Así que probé qué sucede si uso una reacción que está excluida de contarse como “me gusta”, pero entonces “can_act” sigue siendo verdadero aunque “can_undo” para current_user_reaction sea falso.

Esto se debe a que discourse_reactions_like_sync_enabled está configurado en false. Esto se hizo intencionalmente durante la migración de mayo de 2024 para evitar alterar los datos existentes.

Cuando esta configuración está deshabilitada, el ReactionLikeSynchronizer no se ejecuta. Este sincronizador es responsable de:

  • Crear registros de PostAction (me gusta) para las reacciones
  • Actualizar posts.like_count para reflejar las reacciones

Sin que la sincronización se ejecute:

  1. Las reacciones existen en discourse_reactions_reaction_users
  2. Pero no hay registros correspondientes de PostAction
  3. Y posts.like_count permanece en 0

Tu intuición sobre el momento es acertada: las publicaciones de 2023/principios de 2024 tuvieron reacciones añadidas cuando esta sincronización no estaba activa, por lo que su like_count nunca se actualizó. La lógica del serializador anterior omitió por completo la acción de “me gusta” cuando tanto count = 0 COMO can_act = false (la ventana para deshacer expiró).

La corrección no soluciona la discrepancia subyacente de los datos, sino que simplemente asegura que la interfaz de usuario muestre las reacciones correctamente incluso cuando los datos de PostAction/like_count no están sincronizados. En los sitios donde discourse_reactions_like_sync_enabled = false, es un comportamiento esperado que las reacciones existan independientemente de los registros de PostAction.

1 me gusta

Este tema se cerró automáticamente después de 20 horas. Ya no se permiten nuevas respuestas.