Reaktionen werden manchmal nicht angezeigt, wenn die Reaktionsanzahl fehlt

@JammyDodger ist aufgefallen, dass er die Reaktionen auf diesen Beitrag auf Mobilgeräten nicht sehen konnte: ToS and Privacy buttons disappear from /about when I remove my custom FAQ URL - #3 by Canapin [example1]

Jammy (Mobil) - Keine Reaktionen:

Jammy (Desktop) - Reaktionen links, aber nicht rechts:

Alle anderen - Sie können sehen, dass er reagiert hat, alles funktioniert wie erwartet:

Nachdem ich meine Reaktionsaktivität durchsucht hatte, fand ich ein Beispiel, bei dem das Problem bei mir auftritt: Admins may not realize certain sidebar customization are global - #8 by JammyDodger [example2]

Was beide Beiträge gemeinsam haben, ist, dass es Reaktionen gibt, aber die Anzahl der Likes anscheinend nicht als Zählung in der actions_summary verfügbar ist.

Abhängig davon, ob Sie selbst auf den Beitrag reagiert haben oder nicht, fehlt id: 2 entweder in der actions_summary, oder wenn Sie nicht reagiert haben, können Sie sehen, dass die Anzahl fehlt. Wenn ich richtig verstehe, wird id: 2 einbezogen, wenn Sie entweder reagieren konnten (can_act) oder count>0 ist.

Wenn man sich die JSON-Daten des Beispiels2 (https://meta.discourse.org/posts/1404583.json) genauer ansieht, in dem zwei Benutzer reagiert haben, fehlt diese Zählung:

Benutzer, der nicht reagiert hat
can_act true
Benutzer, der reagiert hat
kein id 2

In diesem Fall fehlt der count: 2 für beide Benutzer. Für den Benutzer, der bereits reagiert hat, führt dies dazu, dass id: 2 komplett fehlt. Dies scheint zu erklären, warum Reaktionen für den Benutzer, der reagiert hat, nicht angezeigt werden, obwohl Reaktionen vorhanden sind.

Zum Vergleich, hier ist ein Beitrag mit zwei Reaktionen, bei dem die Zählung wie erwartet angezeigt wird Buttons to order items in emoji list settings is difficult to find on touch devices - #2 by zogstrip und die JSON-Daten des Beitrags https://meta.discourse.org/posts/1907506.json

Benutzer, der nicht reagiert hat
can_act true
Benutzer, der reagiert hat
acted true

Bei diesem Beitrag ist die Zählung verfügbar und die Reaktionen werden wie erwartet angezeigt.

Ich habe keine Ahnung, wie viele Beiträge hier auf Meta davon betroffen sind oder ob auch andere Foren betroffen sind. Und ich kann keine Schritte angeben, warum die Daten fehlen. Ich kann nur berichten, dass bei einigen Beiträgen die Reaktionen auf Mobiltelefonen nicht angezeigt werden und auf Laptops nur teilweise angezeigt werden, und die Ursache dafür scheint mit den fehlenden Daten zusammenzuhängen.

5 „Gefällt mir“

Untersuchung eingeleitet, hier ist eine Zwischenlösung (WIP-Fix)

1 „Gefällt mir“

Konnten Sie herausfinden, wie dies geschah? Ich habe nur Beispiele aus dem Jahr 2023 und Anfang 2024 gefunden. Daher habe ich mich gefragt, ob etwas mit den Daten vor der Zählung aller Reaktionen als „Gefällt mir“ anders ist als nach dieser Änderung.
Also habe ich versucht, was passiert, wenn ich eine Reaktion verwende, die von der Zählung als „Gefällt mir“ ausgeschlossen ist, aber dann ist „can_act“ immer noch true, auch wenn „can_undo“ für current_user_reaction false ist.

Das liegt daran, dass discourse_reactions_like_sync_enabled auf false gesetzt ist. Dies geschah absichtlich durch die Migration von Mai 2024, um bestehende Daten nicht zu stören.

Wenn diese Einstellung deaktiviert ist, läuft der ReactionLikeSynchronizer nicht. Dieser Synchronisierer ist verantwortlich für:

  • Das Erstellen von PostAction (Like)-Einträgen für Reaktionen
  • Das Aktualisieren von posts.like_count, um Reaktionen widerzuspiegeln

Ohne laufende Synchronisierung:

  1. Reaktionen existieren in discourse_reactions_reaction_users
  2. Aber es gibt keine entsprechenden PostAction-Einträge
  3. Und posts.like_count bleibt bei 0

Ihre Vermutung bezüglich des Zeitpunkts ist genau richtig – die Beiträge aus 2023/Anfang 2024 erhielten Reaktionen, als diese Synchronisierung nicht aktiv war, sodass ihr like_count nie aktualisiert wurde. Die alte Serializer-Logik hat dann die Like-Aktion komplett weggelassen, wenn sowohl count = 0 ALS AUCH can_act = false (Rücknahmefrist abgelaufen) war.

Die Korrektur behebt die zugrunde liegende Dateninkonsistenz nicht – sie stellt lediglich sicher, dass die Benutzeroberfläche Reaktionen korrekt anzeigt, auch wenn die PostAction/like_count-Daten nicht synchronisiert sind. Auf Seiten, auf denen discourse_reactions_like_sync_enabled = false ist, ist das unabhängige Vorhandensein von Reaktionen zu PostAction-Einträgen das erwartete Verhalten.

1 „Gefällt mir“

Dieses Thema wurde nach 20 Stunden automatisch geschlossen. Neue Antworten sind nicht mehr zulässig.