Hay un par de cosas extrañas que ocurren desde el punto de vista de la UX cuando todos los correos electrónicos están deshabilitados.
Las calificaría como errores.
- Todos, incluidas las personas que no son personal, reciben un mensaje sobre que el sistema no está enviando correos electrónicos. Parece que no hay forma de silenciar esta notificación. No puedo imaginar una razón por la que los usuarios deban ser alertados sobre esto todo el tiempo. Quizás estaría bien mostrarlo solo al personal o a los administradores. Puede que haya sido una decisión consciente en algún momento, pero simplemente no pude encontrar una discusión al respecto.
if (
this.siteSettings.disable_emails === "yes" ||
this.siteSettings.disable_emails === "non-staff"
) {
notices.push(
Notice.create({
text: I18n.t("emails_are_disabled"), // "Todos los correos electrónicos salientes han sido deshabilitados globalmente por un administrador. No se enviarán notificaciones por correo electrónico de ningún tipo."
id: "alert-emails-disabled",
})
);
}
Creo que la condición debería cambiarse a
if (
this.get("currentUser.staff") && // o currentUser.admin
(this.siteSettings.disable_emails === "yes" ||
this.siteSettings.disable_emails === "non-staff")
) {
…
O al menos tener una configuración para decidir quién recibe esta notificación (por ejemplo: todos/personal/admin/nadie).
Además, en FIX: Show 'emails disabled' to staff users when disabled for non-staf… · discourse/discourse@acc121f · GitHub, en esta corrección, parece que la idea era que el aviso de correos deshabilitados solo debería mostrarse al personal, pero las pruebas en https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/tests/acceptance/email-notice-test.js#L24 verifican que todos vean el aviso.
Como nota menor: encuentro que todos los test("cuando … son un poco confusos. Por ejemplo: “Cuando está habilitado” realmente prueba disable_emails = "yes", lo cual, aunque entiendo que se prueban cambios en la configuración, en realidad está probando que los correos estén deshabilitados, y viceversa: “Cuando está deshabilitado” prueba que los correos estén habilitados. Supongo que se refieren más a los valores establecidos que al efecto final, lo cual probablemente sea la convención en el proyecto. En ese caso, está perfectamente bien. Solo es extraño para alguien nuevo.
- Tanto si
disable_emailsestá establecido en “yes” como en “non-staff”, la sección de correos electrónicos sigue apareciendo en la página de preferencias del usuario para todos. Esto es extraño porque dentro de la plantilla hay comprobaciones que deshabilitan partes de ella cuando los resúmenes o las listas de correo están deshabilitados.
Como puedes ver, no hay ninguna comprobación en 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>
En mi versión tengo algo así: (no sé si así es como lo harían ustedes, por cierto). Estoy abierto a sugerencias ![]()
{{#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}}
Donde show-emails-preferences está definido en un helper de la siguiente manera:
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;
});
Háganme saber si alguna de estas mejoras parece valiosa, y puedo hacer una PR.
Saludos