Come interagisce `educate_until_posts` con le recenti modifiche a `check_education_message`?

Continuando la discussione da “Thanks for Contributing” Popup in Posts Appearing Even After Limit Passed?:

Ho una domanda su questa modifica. Sento di star trascurando qualcosa o di aver frainteso come dovrebbe funzionare durante i test.

Mi aspetto che il banner educativo appaia nei primi post, con il numero controllato dall’impostazione del sito educate_until_posts. Di default, questo valore è 2.

Per i test, l’ho modificato a 5 solo per essere più sicuro. Tuttavia, il mio utente di test ha visto il messaggio educativo solo una volta.

Ho anche esaminato il codice:

Come ho capito, il metodo esclude prima i messaggi privati e gli utenti che hanno già un record che indica che il messaggio educativo è stato mostrato. Questa parte ha senso per me.

Poi determina se l’utente sta creando un argomento o una risposta e calcola il numero totale di post/argomenti dell’utente.

La parte successiva è quella che mi confonde. Se il conteggio totale dei post è inferiore al limite configurato, creiamo il record che impedisce la visualizzazione del messaggio educativo - e poi mostriamo il messaggio.

Cosa mi sto perdendo qui?

Ad esempio, se educate_until_posts viene lasciato al suo valore predefinito di 2, mi aspetto che il messaggio venga mostrato per i primi due post dell’utente.

L’utente inizia a creare il suo primo post. Non è un messaggio privato e non esiste ancora un record UserHistory, quindi il messaggio viene mostrato - ha senso.

Ma perché il record UserHistory viene creato immediatamente dopo? Questo non impedirebbe al messaggio di essere mostrato di nuovo?

Mi sarei aspettato qualcosa di più simile a questo:

  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 (

Ma se questo fosse stato davvero un problema, immagino che i test relativi a quell’impostazione sarebbero falliti. Dato che la PR è stata unita, apparentemente non lo sono stati.

Qualcuno può aiutarmi a capire cosa sto trascurando?

5 Mi Piace

Wow, che tana del coniglio. Penso che la confusione derivi correttamente dalla mancata aggiornamento del nome dell’impostazione (educate_until_posts), perché, per quanto ne so, in PR#400074 sembra essere intenzionato che l’avviso venga mostrato solo una volta e mai più, indipendentemente da qualsiasi conteggio.

Quindi ora l’impostazione non significa più “mostra il messaggio per i primi N post”, ma piuttosto

“Mostra il messaggio educativo solo se il numero di post dell’utente è già inferiore a questa soglia e, anche in tal caso, mostralo esattamente una volta.”

@Roman, ho ragione nel pensare che dovremmo aggiornare il testo di questa impostazione?

2 Mi Piace

La motivazione principale dietro questo cambiamento era impedire che il messaggio educativo venisse visualizzato continuamente. Ma ora che ho visto questo argomento, penso di essere andato un po’ troppo oltre, dato che in un certo senso rende l’impostazione irrilevante se il messaggio viene mostrato solo una volta.

Rivedrò la questione per cercare di trovare un compromesso migliore. Aggiornerò qui non appena avrò fatto.

4 Mi Piace

Ho unito questa correzione ieri:

Se sei al di sotto della soglia educate_until_posts, il messaggio educativo verrà visualizzato una sola volta all’inizio della digitazione e non apparirà di nuovo a meno che tu non invii un messaggio o aggiorni la pagina.

2 Mi Piace