Reazioni a volte non visualizzate quando manca il conteggio delle reazioni

@JammyDodger ha notato che non riusciva a vedere le reazioni a questo post su dispositivi mobili: ToS and Privacy buttons disappear from /about when I remove my custom FAQ URL - #3 by Canapin [example1]

Jammy (mobile) - Nessuna reazione:

Jammy (desktop) - Reazioni a sinistra, ma non a destra:

Tutti gli altri - Si può vedere che ha reagito, tutto funziona come previsto:

Dopo aver cercato nella mia attività di reazione, ho trovato un esempio in cui il problema si verifica per me: Admins may not realize certain sidebar customization are global - #8 by JammyDodger [example2]

Ciò che entrambi i post hanno in comune è che ci sono reazioni, ma il numero di “mi piace” non sembra essere disponibile come conteggio in actions_summary.

A seconda che tu abbia reagito tu stesso al post o meno, id: 2 è assente in actions_summary, oppure se non hai reagito puoi vedere che manca il conteggio. Se ho capito bene, id: 2 è incluso se potevi reagire (can_act) o se count>0.

Osservando più da vicino il json del post example2 https://meta.discourse.org/posts/1404583.json dove due utenti hanno reagito, questo conteggio è mancante:

Utente che non ha reagito
can_act true
Utente che ha reagito
nessun id 2

In questo caso, il count: 2 manca per entrambi gli utenti. Per l’utente che ha già reagito, questo si traduce nella completa assenza di id: 2. Questo sembra spiegare perché le reazioni non vengono mostrate per l’utente che ha reagito, anche se le reazioni esistono.

A titolo di confronto, ecco un post con due reazioni in cui il conteggio viene mostrato come previsto Buttons to order items in emoji list settings is difficult to find on touch devices - #2 by zogstrip e il json del post https://meta.discourse.org/posts/1907506.json

Utente che non ha reagito
can_act true
Utente che ha reagito
acted true

Su questo post il conteggio è disponibile e le reazioni appaiono come previsto.

Non ho idea di quanti post qui su Meta siano interessati da questo o se anche altri forum siano interessati. E non posso fornire passaggi sul perché i dati manchino. Posso solo segnalare che per alcuni post, le reazioni non vengono visualizzate sui telefoni cellulari e sono visualizzate solo parzialmente sui laptop, e la causa sembra essere correlata ai dati mancanti.

5 Mi Piace

Ho iniziato a indagare, ecco una correzione in corso di lavorazione (WIP)

1 Mi Piace

Sei riuscito a scoprire come è successo? Ho trovato solo esempi del 2023 e dell’inizio del 2024. Quindi mi chiedevo se qualcosa con i dati prima che tutte le reazioni fossero conteggiate come “mi piace” sia diverso da dopo tale modifica.
Quindi ho provato cosa succede se uso una reazione esclusa dal conteggio come “mi piace”, ma allora “can_act” è ancora vero anche se “can_undo” per current_user_reaction è falso.

Questo accade perché discourse_reactions_like_sync_enabled è impostato su false. Ciò è stato fatto intenzionalmente dalla migrazione da maggio 2024 per evitare di interrompere i dati esistenti.

Quando questa impostazione è disabilitata, il ReactionLikeSynchronizer non viene eseguito. Questo sincronizzatore è responsabile di:

  • Creare record PostAction (like) per le reazioni
  • Aggiornare posts.like_count per riflettere le reazioni

Senza l’esecuzione della sincronizzazione:

  1. Le reazioni esistono in discourse_reactions_reaction_users
  2. Ma non ci sono record PostAction corrispondenti
  3. E posts.like_count rimane a 0

La tua intuizione sui tempi è esatta: i post del 2023/inizio 2024 hanno avuto reazioni aggiunte quando questa sincronizzazione non era attiva, quindi il loro like_count non è mai stato aggiornato. La vecchia logica del serializzatore ha quindi omesso completamente l’azione “mi piace” quando sia count = 0 CHE can_act = false (la finestra di annullamento è scaduta).

La correzione non risolve la discrepanza sottostante dei dati, ma assicura semplicemente che l’interfaccia utente visualizzi correttamente le reazioni anche quando i dati PostAction/like_count non sono sincronizzati. Sui siti in cui discourse_reactions_like_sync_enabled = false, l’esistenza di reazioni indipendenti dai record PostAction è il comportamento previsto.

1 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 20 ore. Non sono più ammesse nuove risposte.