¿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í?

5 Me gusta

Vaya, qué pequeño agujero de conejo. Creo que la confusión surge correctamente de la falta de actualización en el nombre del ajuste (educate_until_posts), porque, según tengo entendido, en PR#400074 parece que la intención es que el aviso solo se muestre una vez y nunca más, independientemente de cualquier recuento.

Así que ahora el ajuste ya no significa “mostrar el mensaje durante los primeros N publicaciones”, sino más bien:

“Mostrar el mensaje educativo solo si el recuento de publicaciones del usuario ya está por debajo de este umbral, y aun así, mostrarlo exactamente una vez.”

@Roman, ¿es correcto pensar que deberíamos actualizar el texto de este ajuste?

2 Me gusta

La principal motivación detrás de este cambio fue evitar que el mensaje educativo apareciera una y otra vez. Pero ahora que he visto este tema, creo que quizás fui un poco demasiado lejos, ya que eso hace que la configuración sea irrelevante si el mensaje solo se muestra una vez.

Volveré a revisarlo y veré si puedo encontrar un mejor punto medio. Actualizaré aquí una vez que lo haga.

4 Me gusta

Se fusionó esta corrección ayer:

Asumiendo que estás por debajo del umbral educate_until_posts, el mensaje educativo se mostrará solo una vez al comenzar a escribir y no volverá a aparecer a menos que publiques o actualices la página.

2 Me gusta