Como `educate_until_posts` interage com as recentes mudanças em `check_education_message`?

Continuando a discussão de “Thanks for Contributing” Popup in Posts Appearing Even After Limit Passed?:

Tenho uma dúvida sobre essa alteração. Sinto que estou perdendo algo ou entendendo mal como isso deveria funcionar ao testar.

Minha expectativa é que o banner educacional apareça nas primeiras postagens, com a quantidade controlada pela configuração do site educate_until_posts. Por padrão, esse valor é 2.

Para os testes, mudei para 5 apenas para ter certeza extra. No entanto, meu usuário de teste viu a mensagem educacional apenas uma vez.

Também examinei o código:

Pelo que entendi, o método primeiro descarta mensagens privadas e usuários que já possuem um registro indicando que a mensagem educacional foi exibida. Essa parte faz sentido para mim.

Em seguida, ele determina se o usuário está criando um tópico ou uma resposta e calcula o número total de postagens/tópicos do usuário.

A próxima parte é o que me confunde. Se a contagem total de postagens for menor que o limite configurado, criamos o registro que impede que a mensagem educacional seja exibida novamente — e então exibimos a mensagem.

O que estou perdendo aqui?

Por exemplo, se educate_until_posts for mantido no valor padrão de 2, eu esperaria que a mensagem fosse exibida nas duas primeiras postagens do usuário.

O usuário começa a criar sua primeira postagem. Não é uma MP e ainda não há um registro UserHistory existente, então a mensagem é exibida — isso faz sentido.

Mas por que o registro UserHistory é criado imediatamente após? Isso não impediria que a mensagem fosse exibida novamente?

Eu esperaria algo mais parecido com isso:

  count = @user.topic_count + @user.post_count


  if count >= SiteSetting.educate_until_posts
    UserHistory.create!(
      action: UserHistory.actions[:notified_about_composer_education],
      target_user_id: @user.id,
    )
  elsif count < SiteSetting.educate_until_posts
      return (

Mas se isso fosse realmente um problema, imagino que os testes relacionados a essa configuração teriam falhado. Como o PR foi mesclado, aparentemente não foi o caso.

Alguém pode me ajudar a entender o que estou ignorando aqui?

5 curtidas

Uau, que pequena armadilha. Acredito que a confusão decorra corretamente da falta de atualização no nome da configuração (educate_until_posts), pois, pelo que sei, no PR#400074 parece ser a intenção de que o aviso seja exibido apenas uma vez e nunca mais, independentemente de qualquer contagem.

Portanto, agora a configuração não significa mais “exibir a mensagem pelas primeiras N publicações”, mas sim:

“Exibir a mensagem de orientação apenas se a contagem de publicações do usuário já estiver abaixo desse limite e, mesmo assim, mostrá-la exatamente uma vez.”

@Roman, estou correto ao pensar que devemos atualizar o texto dessa configuração?

2 curtidas

A principal motivação por trás dessa mudança foi evitar que a mensagem educativa aparecesse repetidamente. Mas, ao ver este tópico, percebo que talvez tenha exagerado, já que isso acaba tornando a configuração irrelevante, se a mensagem só aparecer uma vez.

Vou dar outra olhada e ver se consigo encontrar um meio-termo melhor. Assim que fizer isso, atualizarei aqui.

4 curtidas

Fundi esta correção ontem:

Se você estiver abaixo do limite de educate_until_posts, a mensagem educativa aparecerá apenas uma vez ao começar a digitar e não voltará a aparecer, a menos que você publique ou atualize a página.

2 curtidas