Primeiro distintivo de Like não pode ser removido

Descrição: Um usuário solicitou que eu revogasse seu distintivo “First Like” depois que ele mesmo descurtiu uma postagem, mas o distintivo continuou sendo concedido novamente. O contexto pode ser encontrado em minha postagem anterior na categoria de suporte.

Passos reproduzíveis:

  1. Crie um novo usuário
  2. Curta uma postagem
  3. Receba o distintivo “First Like”
  4. Descurta a postagem
  5. Mude para um usuário administrador
  6. Vá para o painel de administração do usuário que curtiu a postagem
  7. Visite a opção “Editar Distintivos”
  8. Clique em “Revogar” no distintivo “First Like”
  9. Espere um pouco (não tenho certeza de quando o trabalho de preenchimento é executado para este distintivo em particular, mas um dia certamente será suficiente. Talvez tentar acionar todos os trabalhos relacionados a distintivos no Sidekiq para acelerar?)
  10. O distintivo é concedido de volta ao usuário automaticamente, pela mesma postagem que foi descurtida e na mesma data em que o “like” foi feito.

Eu identifiquei o problema nesta linha da consulta SQL para conceder o distintivo, porque, embora a linha em post_actions para a ação de “like” ainda exista após descurtir, sua coluna deleted_at está definida com um valor de data, o que a consulta não leva em consideração. Acredito que a correção para isso mudaria a cláusula WHERE da subconsulta para:

      WHERE post_action_type_id = 2 AND
        pa.deleted_at IS NULL AND
        (:backfill OR pa.post_id IN (:post_ids) )

mas não tenho um ambiente de desenvolvimento configurado ou muito tempo para testar essa correção.

Prioridade/Gravidade: Resolvi este problema para mim mesmo excluindo as linhas post_actions relevantes, e nunca recebi tal solicitação antes. Acho que isso não o torna uma prioridade muito alta?

2 curtidas

Eles curtiram uma postagem. Descurtir uma postagem não muda o fato de que eles provaram que sabem como curtir uma postagem. Talvez eles sejam elegíveis para um distintivo “First Unlike”, mas agora que eles curtiram uma postagem, eles curtiram uma postagem. Eles recebem o distintivo por ter curtido uma postagem. Você não pode desdesfazer o que foi feito.

Essa é a minha suposição.

Sua solução foi muito inteligente. Outra maneira de remover o distintivo deles seria excluir o usuário. :rofl:

2 curtidas

Isso é verdade, mas ainda acredito que é contraintuitivo que eu, como administrador, não possa revogar essa insígnia do usuário, mesmo depois que ele descurtiu a postagem. Pelo menos deveria haver algum tipo de aviso no botão “Revogar” na visualização Editar Insígnias sobre como a insígnia não pode ser revogada? Em vez do comportamento atual, que é a reemissão silenciosa da insígnia durante algum trabalho de preenchimento, fazendo o administrador se perguntar se ele realmente clicou naquele botão ou não.

2 curtidas

Concordo.

Eu acho que minha resposta teria sido algo como:

Sinto muito, Dave. Receio que não posso fazer isso.

3 curtidas

Movi isso para feature, acho que a solicitação de feature é:

Tornar possível revogar 100% um distintivo que é reavaliado
ou
Banir administradores de revogar distintivos baseados em SQL / distintivos de avaliação recorrente


Por enquanto, minha recomendação é “não faça isso”, mas a experiência do administrador certamente poderia ser melhor.

1 curtida