Existem algumas coisas estranhas que acontecem do ponto de vista da UX quando todos os e-mails estão desabilitados.
Eu classificaria isso como bugs.
- Todos, incluindo pessoas que não são da equipe, recebem uma mensagem sobre o sistema não enviar e-mails. Parece não haver como silenciar essa notificação. Não consigo imaginar um motivo pelo qual os usuários seriam alertados sobre isso o tempo todo. Talvez fosse aceitável mostrar isso apenas para a equipe ou administradores. Pode ter sido uma decisão consciente em algum momento. Apenas não consegui encontrar uma discussão sobre isso.
if (
this.siteSettings.disable_emails === "yes" ||
this.siteSettings.disable_emails === "non-staff"
) {
notices.push(
Notice.create({
text: I18n.t("emails_are_disabled"), // "Todos os e-mails de saída foram desabilitados globalmente por um administrador. Nenhuma notificação por e-mail de qualquer tipo será enviada."
id: "alert-emails-disabled",
})
);
}
Acho que a condição deve ser alterada para
if (
this.get("currentUser.staff") && // ou currentUser.admin
(this.siteSettings.disable_emails === "yes" ||
this.siteSettings.disable_emails === "non-staff")
) {
…
Ou, pelo menos, ter uma configuração para decidir quem recebe essa notificação. (ex: todos/equipe/admin/ninguém)
também FIX: Show 'emails disabled' to staff users when disabled for non-staf… · discourse/discourse@acc121f · GitHub nessa correção, a ideia parece ser que os e-mails desabilitados deveriam ser mostrados apenas para a equipe, mas os testes https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/tests/acceptance/email-notice-test.js#L24 verificam que todos veem a notificação
em uma observação menor: acho todos os test("quando … um pouco confusos. Por exemplo: “Quando habilitado” realmente testa disable_emails = "yes", o que, embora eu entenda os testes para uma mudança nas configurações, na verdade testa se os e-mails estão desabilitados, e vice-versa, “Quando desabilitado” testa se os e-mails estão habilitados. Acho que eles se referem mais aos valores sendo definidos do que ao efeito final, o que provavelmente é a convenção no projeto. Nesse caso, está totalmente certo. Apenas estranho para um recém-chegado.
- Se disable_emails estiver definido como “yes” ou “non-staff”, a seção de e-mails ainda aparece na página de preferências do usuário para todos. O que é estranho, porque dentro do template existem verificações que desabilitam partes dele quando resumos ou listas de e-mail estão desabilitados.
Como você pode ver, não há verificação 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>
Na minha versão, tenho algo assim: (não sei se é assim que vocês fariam, btw) Estou aberto a sugestões ![]()
{{#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}}
onde show-emails-preferences é definido em um helper da seguinte forma:
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;
});
Me avise se alguma dessas ideias parece melhorias válidas, e posso criar um PR
Abraços