Ci sono alcune stranezze dal punto di vista dell’esperienza utente (UX) quando tutte le email sono disabilitate.
Le classificherei come bug.
- Tutti, inclusi gli utenti non staff, ricevono un messaggio sul fatto che il sistema non invia email. Sembra non ci sia modo di disattivare questa notifica. Non riesco a immaginare un motivo per cui gli utenti dovrebbero essere avvisati di ciò continuamente. Forse potrebbe essere accettabile mostrarlo solo allo staff o agli amministratori. Potrebbe essere stata una decisione consapevole in passato, ma non sono riuscito a trovare una discussione a riguardo.
if (
this.siteSettings.disable_emails === "yes" ||
this.siteSettings.disable_emails === "non-staff"
) {
notices.push(
Notice.create({
text: I18n.t("emails_are_disabled"), // "Tutte le email in uscita sono state disabilitate globalmente da un amministratore. Non verranno inviate notifiche email di alcun tipo."
id: "alert-emails-disabled",
})
);
}
Penso che la condizione dovrebbe essere modificata in:
if (
this.get("currentUser.staff") && // o currentUser.admin
(this.siteSettings.disable_emails === "yes" ||
this.siteSettings.disable_emails === "non-staff")
) {
…
O almeno prevedere una impostazione per decidere chi riceve questa notifica (es: tutti/staff/admin/nessuno).
Inoltre, in FIX: Show 'emails disabled' to staff users when disabled for non-staf… · discourse/discourse@acc121f · GitHub, in questa correzione, l’idea sembrava che il messaggio sulle email disabilitate dovesse essere mostrato solo allo staff, ma i test https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/tests/acceptance/email-notice-test.js#L24 verificano che tutti vedano la notifica.
Per una nota minore: trovo un po’ confusi tutti i test("when …. Ad esempio: “When enabled” verifica effettivamente disable_emails = "yes", il che, sebbene abbia senso per testare un cambiamento nelle impostazioni, in realtà testa che le email siano disabilitate, e viceversa “When disabled” testa che le email siano abilitate. Immagino si riferiscano più ai valori impostati che all’effetto finale, che probabilmente è la convenzione del progetto. In tal caso va benissimo. Solo un po’ strano per un nuovo arrivato.
- Sia che disable_emails sia impostato su “yes” che su “non-staff”, la sezione email appare comunque nella pagina delle preferenze utente per tutti. È strano perché all’interno del template ci sono controlli che disabilitano parti di essa quando i digest o le mailing list sono disabilitati.
Come potete vedere, non c’è alcun controllo https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/templates/preferences.hbs#L18
<li class="nav-emails">
{{#link-to "preferences.emails"}}
{{i18n "user.preferences_nav.emails"}}
{{/link-to}}
</li>
Nella mia versione ho qualcosa del genere: (non so se è così che lo fareste voi, comunque) sono aperto a suggerimenti ![]()
{{#if (show-emails-preferences model siteSettings.disable_emails)}}
<li class="nav-emails">
{{#link-to "preferences.emails"}}
{{i18n "user.preferences_nav.emails"}}
{{/link-to}}
</li>
{{/if}}
dove show-emails-preferences è definito in un helper come segue:
registerUnbound("show-emails-preferences", (model, disable_emails, args) => {
let result = true;
if(disable_emails === 'yes'){
result = false;
}else if(disable_emails === 'non-staff'){
result = model.staff ? true : false;
}else{
result = true;
}
return result;
});
Fatemelo sapere se queste sembrano migliorie utili, e posso preparare una PR.
Saluti