¿Cómo interactúa `educate_until_posts` con los cambios recientes en `check_education_message`?

Continuando la discusión de “Thanks for Contributing” Popup in Posts Appearing Even After Limit Passed?:

Tengo una pregunta sobre este cambio. Siento que me falta algo o que estoy malinterpretando cómo debería funcionar al probarlo.

Mi expectativa es que el banner educativo aparezca en los primeros mensajes, con el número controlado por la configuración del sitio educate_until_posts. Por defecto, ese valor es 2.

Para las pruebas, lo cambié a 5 solo para estar más seguro. Sin embargo, mi usuario de prueba solo vio el mensaje educativo una vez.

También revisé el código:

Por lo que entiendo, el método primero descarta los mensajes privados y los usuarios que ya tienen un registro que indica que el mensaje educativo ya se ha mostrado. Esa parte tiene sentido para mí.

Luego determina si el usuario está creando un tema o una respuesta y calcula el número total de temas/mensajes del usuario.

La siguiente parte es lo que me confunde. Si el recuento total de mensajes es menor que el límite configurado, creamos el registro que evita que el mensaje educativo se muestre nuevamente y luego mostramos el mensaje.

¿Qué me estoy perdiendo aquí?

Por ejemplo, si educate_until_posts se deja en su valor predeterminado de 2, esperaría que el mensaje se muestre para los primeros dos mensajes del usuario.

El usuario comienza a crear su primer mensaje. No es un MP y aún no existe un registro de UserHistory, por lo que se muestra el mensaje; eso tiene sentido.

Pero, ¿por qué se crea el registro de UserHistory inmediatamente después? ¿No evitaría eso que el mensaje se muestre nuevamente?

Habría esperado algo más como esto:

  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 (

Pero si esto fuera realmente un problema, supongo que las pruebas relacionadas con esa configuración habrían fallado. Dado que el PR fue fusionado, aparentemente no lo hicieron.

¿Alguien puede ayudarme a entender qué estoy pasando por alto aquí?

1 me gusta