Reações às vezes não são exibidas quando a contagem de reações está ausente

@JammyDodger notou que ele não conseguia ver as reações nesta postagem no celular: ToS and Privacy buttons disappear from /about when I remove my custom FAQ URL - #3 by Canapin [example1]

Jammy (celular) - Sem reações:

Jammy (desktop) - Reações à esquerda, mas não à direita:

Todos os outros - Você pode ver que ele reagiu, tudo funciona como esperado:

Depois de pesquisar em minha atividade de reação, encontrei um exemplo onde o problema ocorre para mim: Admins may not realize certain sidebar customization are global - #8 by JammyDodger [example2]

O que ambas as postagens têm em comum é que existem reações, mas o número de curtidas não parece estar disponível como a contagem em actions_summary.

Dependendo se você reagiu à postagem ou não, id: 2 está ausente no actions_summary, ou se você não reagiu, você pode ver que a contagem está ausente. Se eu entendi corretamente, id: 2 é incluído se você puder reagir (can_act) ou se count>0.

Analisando o json da postagem example2 \u003chttps://meta.discourse.org/posts/1404583.json\u003e onde dois usuários reagiram, essa contagem está faltando:

Usuário que não reagiu \u003cbr\u003e can_act verdadeiro Usuário que reagiu \u003cbr\u003e sem id 2
\u003cbr\u003e

Neste caso, a count: 2 está faltando para ambos os usuários. Para o usuário que já reagiu, isso resulta no id: 2 faltando completamente. Isso parece explicar por que as reações não são mostradas para o usuário que reagiu, embora as reações existam.

Para comparação, aqui está uma postagem com duas reações onde a contagem é mostrada como esperado Buttons to order items in emoji list settings is difficult to find on touch devices - #2 by zogstrip e o json da postagem https://meta.discourse.org/posts/1907506.json

Usuário que não reagiu \u003cbr\u003e can_act verdadeiro Usuário que reagiu \u003cbr\u003e acted verdadeiro

Nesta postagem, a contagem está disponível e as reações aparecem como esperado.

Eu não sei quantas postagens aqui no Meta são afetadas por isso ou se outros fóruns também são afetados. E eu não posso fornecer nenhuma etapa sobre por que os dados estão faltando. Eu só posso relatar que para algumas postagens, as reações não são exibidas em celulares e são exibidas apenas parcialmente em laptops, e a causa para isso parece estar relacionada aos dados ausentes.

5 curtidas

Comecei a investigar, aqui está uma correção em andamento (WIP)

1 curtida

Você conseguiu descobrir como isso aconteceu? Eu só encontrei exemplos de 2023 e do início de 2024. Então eu me perguntei se algo com os dados antes de todas as reações serem contadas como curtidas é diferente de depois dessa mudança.
Então eu tentei o que acontece se eu usar uma reação que é excluída da contagem como curtida, mas então “can_act” ainda é verdadeiro mesmo que “can_undo” para current_user_reaction seja falso.

Isso ocorre porque discourse_reactions_like_sync_enabled está definido como false. Isso foi feito intencionalmente pela migração de maio de 2024 para evitar a interrupção de dados existentes.

Quando essa configuração está desativada, o ReactionLikeSynchronizer não é executado. Este sincronizador é responsável por:

  • Criar registros de PostAction (curtida) para reações
  • Atualizar posts.like_count para refletir as reações

Sem a execução da sincronização:

  1. Reações existem em discourse_reactions_reaction_users
  2. Mas não há registros correspondentes de PostAction
  3. E posts.like_count permanece em 0

Sua intuição sobre o momento está correta - as postagens de 2023/início de 2024 tiveram reações adicionadas quando essa sincronização não estava ativa, então sua like_count nunca foi atualizada. A lógica do serializador antigo então omitiu a ação de curtir inteiramente quando tanto count = 0 QUANTO can_act = false (janela de desfazer expirou).

A correção não corrige a discrepância subjacente dos dados - ela simplesmente garante que a interface do usuário exiba as reações corretamente, mesmo quando os dados de PostAction/like_count não estão sincronizados. Em sites onde discourse_reactions_like_sync_enabled = false, a existência de reações independentemente dos registros de PostAction é o comportamento esperado.

1 curtida

Este tópico foi fechado automaticamente após 20 horas. Novas respostas não são mais permitidas.