Skip to content

Commit 2a6fd61

Browse files
authored
UX: only show global email disabled message in admin and preference areas (discourse#37998)
Currently when `disable_emails` is true, we show this banner on every page: <img width="2228" height="274" alt="image" src="https://github.com/user-attachments/assets/9282cfff-dd17-4880-82bd-5375b0983df1" /> But it's now much easier to set up Discourse without email, so this message can be irritating if it's globally persisted everywhere. This change scopes it admin areas (/admin and /review) and in preferences like /my/preferences/emails and my/preferences/notifications so that if someone is confused about email not working, they'll still likely see it, but it's not a nuisance otherwise.
1 parent 18fded7 commit 2a6fd61

2 files changed

Lines changed: 28 additions & 16 deletions

File tree

frontend/discourse/app/components/global-notice.gjs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ export default class GlobalNotice extends Component {
8181
return !this.router.currentRouteName.startsWith("wizard.");
8282
}
8383

84+
get #showEmailsDisabledNotice() {
85+
const routeName = this.router.currentRouteName;
86+
return (
87+
routeName?.startsWith("admin") ||
88+
routeName?.startsWith("review") ||
89+
routeName === "preferences.emails" ||
90+
routeName === "preferences.notifications"
91+
);
92+
}
93+
8494
get notices() {
8595
let notices = [];
8696

@@ -147,8 +157,7 @@ export default class GlobalNotice extends Component {
147157
text: i18n("emails_are_disabled"),
148158
id: "alert-emails-disabled",
149159
options: {
150-
dismissable: true,
151-
persistentDismiss: false,
160+
visibility: () => this.#showEmailsDisabledNotice,
152161
},
153162
})
154163
);
@@ -158,8 +167,7 @@ export default class GlobalNotice extends Component {
158167
text: i18n("emails_are_disabled_non_staff"),
159168
id: "alert-emails-disabled",
160169
options: {
161-
dismissable: true,
162-
persistentDismiss: false,
170+
visibility: () => this.#showEmailsDisabledNotice,
163171
},
164172
})
165173
);

frontend/discourse/tests/acceptance/email-notice-test.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,37 @@ acceptance("Email Disabled Banner", function (needs) {
1919

2020
test("when enabled", async function (assert) {
2121
this.siteSettings.disable_emails = "yes";
22+
2223
await visit("/latest");
2324
assert
2425
.dom(".alert-emails-disabled")
25-
.exists("alert is displayed when email disabled");
26+
.doesNotExist("alert is not displayed on non-admin routes");
27+
28+
updateCurrentUser({ admin: true });
29+
await visit("/admin");
30+
assert
31+
.dom(".alert-emails-disabled")
32+
.exists("alert is displayed on admin routes when email disabled");
2633
assert
2734
.dom(".alert-emails-disabled .text")
2835
.hasText(i18n("emails_are_disabled"), "alert uses the correct text");
2936
});
3037

3138
test("when non-staff", async function (assert) {
3239
this.siteSettings.disable_emails = "non-staff";
33-
await visit("/");
40+
41+
await visit("/latest");
3442
assert
3543
.dom(".alert-emails-disabled")
36-
.exists("alert is displayed when email disabled for non-staff");
37-
assert
38-
.dom(".alert-emails-disabled .text")
39-
.hasText(
40-
i18n("emails_are_disabled_non_staff"),
41-
"alert uses the correct text"
42-
);
44+
.doesNotExist("alert is not displayed on non-admin routes");
4345

44-
updateCurrentUser({ moderator: true });
45-
await visit("/");
46+
updateCurrentUser({ admin: true });
47+
await visit("/admin");
4648
assert
4749
.dom(".alert-emails-disabled")
48-
.exists("alert is displayed to staff when email disabled for non-staff");
50+
.exists(
51+
"alert is displayed on admin routes when email disabled for non-staff"
52+
);
4953
assert
5054
.dom(".alert-emails-disabled .text")
5155
.hasText(

0 commit comments

Comments
 (0)