Les réactions ne s'affichent parfois pas lorsque le compte de réaction est manquant

@JammyDodger a remarqué qu’il ne pouvait pas voir les réactions sur cette publication sur mobile : ToS and Privacy buttons disappear from /about when I remove my custom FAQ URL - #3 by Canapin [example1]

Jammy (mobile) - Aucune réaction :

Jammy (bureau) - Réactions à gauche, mais pas à droite :

Tout le monde - Vous pouvez voir qu’il a réagi, tout fonctionne comme prévu :

Après avoir parcouru mon activité de réaction, j’ai trouvé un exemple où le problème se produit pour moi : Admins may not realize certain sidebar customization are global - #8 by JammyDodger [example2]

Ce que les deux publications ont en commun, c’est qu’il y a des réactions, mais que le nombre de “j’aime” ne semble pas être disponible comme le compte dans actions_summary.

Selon que vous ayez réagi vous-même à la publication ou non, id: 2 est soit manquant dans actions_summary, soit si vous n’avez pas réagi, vous pouvez voir que le compte est manquant. Si je comprends bien, id: 2 est inclus si vous pouviez réagir (can_act) ou si count>0.

En regardant de plus près le json de la publication example2 https://meta.discourse.org/posts/1404583.json où deux utilisateurs ont réagi, ce compte est manquant :

Utilisateur qui n’a pas réagi
can_act true
Utilisateur qui a réagi
pas de id 2

Dans ce cas, le count: 2 est manquant pour les deux utilisateurs. Pour l’utilisateur qui a déjà réagi, cela entraîne l’absence complète de id: 2. Cela semble expliquer pourquoi les réactions ne sont pas affichées pour l’utilisateur qui a réagi, même si des réactions existent.

À titre de comparaison, voici une publication avec deux réactions où le compte est affiché comme prévu Buttons to order items in emoji list settings is difficult to find on touch devices - #2 by zogstrip et le json de la publication https://meta.discourse.org/posts/1907506.json

Utilisateur qui n’a pas réagi
can_act true
Utilisateur qui a réagi
acted true

Sur cette publication, le compte est disponible et les réactions apparaissent comme prévu.

Je n’ai aucune idée du nombre de publications ici sur Meta qui sont affectées par cela ou si d’autres forums sont également affectés. Et je ne peux pas fournir d’étapes expliquant pourquoi les données sont manquantes. Je peux seulement signaler que pour certaines publications, les réactions ne sont pas affichées sur les téléphones mobiles et ne sont que partiellement affichées sur les ordinateurs portables, et que la cause semble être liée aux données manquantes.

5 « J'aime »

J’ai commencé à enquêter, voici une correction en cours de développement (WIP)

1 « J'aime »

Avez-vous pu découvrir comment cela s’est produit ? Je n’ai trouvé que des exemples de 2023 et du début de 2024. Je me demandais donc si quelque chose avec les données avant que toutes les réactions ne soient comptées comme des “j’aime” est différent d’après ce changement.
J’ai donc essayé ce qui se passe si j’utilise une réaction qui est exclue du décompte comme un “j’aime”, mais alors “can_act” est toujours vrai même si “can_undo” pour current_user_reaction est faux.

C’est parce que discourse_reactions_like_sync_enabled est défini sur false. Cela a été fait intentionnellement lors de la migration de mai 2024 pour éviter de perturber les données existantes.

Lorsque ce paramètre est désactivé, le ReactionLikeSynchronizer ne s’exécute pas. Ce synchroniseur est responsable de :

  • La création des enregistrements PostAction (like) pour les réactions
  • La mise à jour de posts.like_count pour refléter les réactions

Sans l’exécution de la synchronisation :

  1. Les réactions existent dans discourse_reactions_reaction_users
  2. Mais il n’y a pas d’enregistrements PostAction correspondants
  3. Et posts.like_count reste à 0

Votre intuition concernant le calendrier est tout à fait correcte - les publications de 2023/début 2024 ont vu des réactions ajoutées lorsque cette synchronisation n’était pas active, donc leur like_count n’a jamais été mis à jour. La logique de l’ancien sérialiseur a ensuite omis complètement l’action de like lorsque count = 0 ET can_act = false (fenêtre d’annulation expirée).

La correction ne corrige pas la divergence de données sous-jacente - elle garantit simplement que l’interface utilisateur affiche correctement les réactions même lorsque les données PostAction/like_count ne sont pas synchronisées. Sur les sites où discourse_reactions_like_sync_enabled = false, l’existence de réactions indépendantes des enregistrements PostAction est le comportement attendu.

1 « J'aime »

Ce sujet a été automatiquement fermé après 20 heures. Les nouvelles réponses ne sont plus autorisées.