DEV: Remove old "first notification" tutorial (#19036)

It was replaced by the new "first notification" user tip.
This commit is contained in:
Bianca Nenciu 2022-11-16 14:35:18 +02:00 committed by GitHub
parent cfd610cc7c
commit 9f3371f367
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 6 additions and 252 deletions

View File

@ -238,43 +238,6 @@ const SiteHeaderComponent = MountWidget.extend(
this.currentUser.on("status-changed", this, "queueRerender");
}
if (!this.siteSettings.enable_user_tips) {
if (
this.currentUser &&
!this.get("currentUser.read_first_notification")
) {
document.body.classList.add("unread-first-notification");
}
// Allow first notification to be dismissed on a click anywhere
if (
this.currentUser &&
!this.get("currentUser.read_first_notification") &&
!this.get("currentUser.enforcedSecondFactor")
) {
this._dismissFirstNotification = (e) => {
if (document.body.classList.contains("unread-first-notification")) {
document.body.classList.remove("unread-first-notification");
}
if (
!e.target.closest("#current-user") &&
!e.target.closest(".ring-backdrop") &&
this.currentUser &&
!this.get("currentUser.read_first_notification") &&
!this.get("currentUser.enforcedSecondFactor")
) {
this.eventDispatched(
"header:dismiss-first-notification-mask",
"header"
);
}
};
document.addEventListener("click", this._dismissFirstNotification, {
once: true,
});
}
}
const header = document.querySelector("header.d-header");
this._itsatrap = new ItsATrap(header);
const dirs = this.currentUser?.redesigned_user_menu_enabled
@ -365,8 +328,6 @@ const SiteHeaderComponent = MountWidget.extend(
this._itsatrap?.destroy();
this._itsatrap = null;
document.removeEventListener("click", this._dismissFirstNotification);
},
buildArgs() {

View File

@ -1,7 +1,6 @@
import DiscourseURL, { userPath } from "discourse/lib/url";
import DiscourseURL from "discourse/lib/url";
import I18n from "I18n";
import { addExtraUserClasses } from "discourse/helpers/user-avatar";
import { ajax } from "discourse/lib/ajax";
import { avatarImg } from "discourse/widgets/post";
import { createWidget } from "discourse/widgets/widget";
import getURL from "discourse-common/lib/get-url";
@ -88,11 +87,7 @@ createWidget("header-notifications", {
const count = unread + reviewables;
if (count > 0) {
if (this._shouldHighlightAvatar()) {
if (this.siteSettings.enable_user_tips) {
contents.push(h("span.ring"));
} else {
this._addAvatarHighlight(contents);
}
contents.push(h("span.ring"));
}
contents.push(
@ -124,11 +119,7 @@ createWidget("header-notifications", {
const unreadHighPriority = user.unread_high_priority_notifications;
if (!!unreadHighPriority) {
if (this._shouldHighlightAvatar()) {
if (this.siteSettings.enable_user_tips) {
contents.push(h("span.ring"));
} else {
this._addAvatarHighlight(contents);
}
contents.push(h("span.ring"));
}
// add the counter for the unread high priority
@ -155,52 +146,12 @@ createWidget("header-notifications", {
return (
!user.read_first_notification &&
!user.enforcedSecondFactor &&
!attrs.active &&
attrs.ringBackdrop
);
},
_addAvatarHighlight(contents) {
contents.push(h("span.ring"));
contents.push(h("span.ring-backdrop-spotlight"));
contents.push(
h(
"span.ring-backdrop",
{},
h("h1.ring-first-notification", {}, [
h(
"span",
{ className: "first-notification" },
I18n.t("user.first_notification")
),
h("span", { className: "read-later" }, [
this.attach("link", {
action: "readLater",
className: "read-later-link",
label: "user.skip_new_user_tips.read_later",
}),
]),
h("span", {}, [
I18n.t("user.skip_new_user_tips.not_first_time"),
" ",
this.attach("link", {
action: "skipNewUserTips",
className: "skip-new-user-tips",
label: "user.skip_new_user_tips.skip_link",
title: "user.skip_new_user_tips.description",
}),
]),
])
)
!attrs.active
);
},
didRenderWidget() {
if (
!this.currentUser ||
!this.siteSettings.enable_user_tips ||
!this._shouldHighlightAvatar()
) {
if (!this.currentUser || !this._shouldHighlightAvatar()) {
return;
}
@ -363,7 +314,6 @@ createWidget("header-icons", {
this.attach("user-dropdown", {
active: attrs.userVisible,
action: "toggleUserMenu",
ringBackdrop: attrs.ringBackdrop,
user: attrs.user,
})
);
@ -485,7 +435,6 @@ export default createWidget("header", {
searchVisible: false,
hamburgerVisible: false,
userVisible: false,
ringBackdrop: true,
inTopicContext: false,
};
@ -508,7 +457,6 @@ export default createWidget("header", {
hamburgerVisible: state.hamburgerVisible,
userVisible: state.userVisible,
searchVisible: state.searchVisible,
ringBackdrop: state.ringBackdrop,
flagCount: attrs.flagCount,
user: this.currentUser,
sidebarEnabled: attrs.sidebarEnabled,
@ -631,10 +579,6 @@ export default createWidget("header", {
},
toggleUserMenu() {
if (this.currentUser.get("read_first_notification")) {
this.state.ringBackdrop = false;
}
this.state.userVisible = !this.state.userVisible;
this.toggleBodyScrolling(this.state.userVisible);
@ -731,43 +675,6 @@ export default createWidget("header", {
}
},
headerDismissFirstNotificationMask() {
// Dismiss notifications
if (document.body.classList.contains("unread-first-notification")) {
document.body.classList.remove("unread-first-notification");
}
this.store
.findStale(
"notification",
{
recent: true,
silent: this.get("currentUser.enforcedSecondFactor"),
limit: 5,
},
{ cacheKey: "recent-notifications" }
)
.refresh();
// Update UI
this.state.ringBackdrop = false;
this.scheduleRerender();
},
readLater() {
this.headerDismissFirstNotificationMask();
},
skipNewUserTips() {
this.headerDismissFirstNotificationMask();
ajax(userPath(this.currentUser.username_lower), {
type: "PUT",
data: {
skip_new_user_tips: true,
},
}).then(() => {
this.currentUser.set("skip_new_user_tips", true);
});
},
headerKeyboardTrigger(msg) {
switch (msg.type) {
case "search":

View File

@ -12,8 +12,6 @@ acceptance("User Tips - first_notification", function (needs) {
needs.hooks.afterEach(() => hideAllUserTips());
test("Shows first notification user tip", async function (assert) {
this.siteSettings.enable_user_tips = true;
await visit("/t/internationalization-localization/280");
assert.equal(
query(".user-tip-title").textContent.trim(),

View File

@ -7,8 +7,7 @@ import {
triggerKeyEvent,
waitUntil,
} from "@ember/test-helpers";
import { count, exists, query } from "discourse/tests/helpers/qunit-helpers";
import pretender, { response } from "discourse/tests/helpers/create-pretender";
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
import { hbs } from "ember-cli-htmlbars";
module("Integration | Component | site-header", function (hooks) {
@ -19,43 +18,6 @@ module("Integration | Component | site-header", function (hooks) {
this.currentUser.set("read_first_notification", false);
});
test("first notification mask", async function (assert) {
await render(hbs`<SiteHeader />`);
assert.strictEqual(
count(".ring-backdrop"),
1,
"there is the first notification mask"
);
// Click anywhere
await click("header.d-header");
assert.ok(
!exists(".ring-backdrop"),
"it hides the first notification mask"
);
});
test("do not call authenticated endpoints as anonymous", async function (assert) {
this.owner.unregister("service:current-user");
await render(hbs`<SiteHeader />`);
assert.ok(
!exists(".ring-backdrop"),
"there is no first notification mask for anonymous users"
);
pretender.get("/notifications", () => {
assert.ok(false, "it should not try to refresh notifications");
return response(403, {});
});
// Click anywhere
await click("header.d-header");
});
test("displaying unread and reviewable notifications count when user's notifications and reviewables count are updated", async function (assert) {
this.currentUser.set("all_unread_notifications_count", 1);
this.currentUser.set("redesigned_user_menu_enabled", true);
@ -83,22 +45,6 @@ module("Integration | Component | site-header", function (hooks) {
assert.strictEqual(unreadBadge.textContent, "8");
});
test("user avatar is highlighted when the user receives the first notification", async function (assert) {
this.currentUser.set("all_unread_notifications_count", 1);
this.currentUser.set("redesigned_user_menu_enabled", true);
this.currentUser.set("read_first_notification", false);
await render(hbs`<SiteHeader />`);
assert.ok(exists(".ring-first-notification"));
});
test("user avatar is not highlighted when the user receives notifications beyond the first one", async function (assert) {
this.currentUser.set("redesigned_user_menu_enabled", true);
this.currentUser.set("all_unread_notifications_count", 1);
this.currentUser.set("read_first_notification", true);
await render(hbs`<SiteHeader />`);
assert.ok(!exists(".ring-first-notification"));
});
test("hamburger menu icon shows pending reviewables count", async function (assert) {
this.currentUser.set("reviewable_count", 1);
await render(hbs`<SiteHeader />`);

View File

@ -505,56 +505,6 @@ table {
}
}
.ring-backdrop-spotlight {
position: absolute;
width: 80px;
height: 80px;
top: -18px;
right: -18px;
background-image: radial-gradient(
40px at 50% 50%,
rgba(255, 255, 255, 0.15) 95%,
rgba(var(--always-black-rgb), 0.65) 100%
);
}
.ring-backdrop {
position: absolute;
width: 80px;
height: 80px;
top: -18px !important;
right: -18px !important;
box-shadow: 0 0 0 9999px rgba(var(--always-black-rgb), 0.65);
z-index: z("modal", "overlay");
}
.ring-first-notification {
position: absolute;
text-align: left;
right: 70px;
top: 60px;
width: 230px;
line-height: var(--line-height-medium);
.first-notification,
.read-later {
display: block;
margin-bottom: 36px;
}
.skip-new-user-tips,
.read-later-link {
font-size: var(--font-down-1);
text-decoration: underline;
}
&,
.skip-new-user-tips,
.read-later-link {
color: #eee;
}
}
.ring {
$gradient-start: transparent;
$gradient-end: #090;

View File

@ -1,7 +1,3 @@
.ring {
top: -7px !important;
}
.ring-first-notification {
top: 40px;
}

View File

@ -1153,13 +1153,9 @@ en:
You will be notified about activity directly relevant to you, including replies to your topics and posts, when someone <b>@mentions</b> you or quotes you, and replies to topics you are watching. Notifications will also be sent to your email when you havent logged in for a while.
<br><br>
Look for the %{icon} to decide which specific topics, categories and tags you want to be notified about. For more, see your <a href='%{preferencesUrl}'>notification preferences</a>.
first_notification: "Your first notification! Select it to begin."
dynamic_favicon: "Show counts on browser icon"
skip_new_user_tips:
description: "Skip new user onboarding tips and badges"
not_first_time: "Not your first time?"
skip_link: "Skip these tips"
read_later: "I'll read it later."
reset_seen_user_tips: "Show user tips again"
theme_default_on_all_devices: "Make this the default theme on all my devices"
color_scheme_default_on_all_devices: "Set default color scheme(s) on all my devices"