diff --git a/app/assets/javascripts/discourse/app/routes/discourse.js b/app/assets/javascripts/discourse/app/routes/discourse.js
index eb2b4f3c43a..9890e5c2ca9 100644
--- a/app/assets/javascripts/discourse/app/routes/discourse.js
+++ b/app/assets/javascripts/discourse/app/routes/discourse.js
@@ -74,6 +74,7 @@ const DiscourseRoute = Route.extend({
}
},
+ // deprecated, use isCurrentUser() instead
isAnotherUsersPage(user) {
if (!this.currentUser) {
return true;
@@ -82,6 +83,14 @@ const DiscourseRoute = Route.extend({
return user.username !== this.currentUser.username;
},
+ isCurrentUser(user) {
+ if (!this.currentUser) {
+ return false; // the current user is anonymous
+ }
+
+ return user.id === this.currentUser.id;
+ },
+
isPoppedState(transition) {
return !transition._discourse_intercepted && !!transition.intent.url;
},
diff --git a/app/assets/javascripts/discourse/app/routes/user-activity-drafts.js b/app/assets/javascripts/discourse/app/routes/user-activity-drafts.js
index 0eaf79c8b07..67b73d36348 100644
--- a/app/assets/javascripts/discourse/app/routes/user-activity-drafts.js
+++ b/app/assets/javascripts/discourse/app/routes/user-activity-drafts.js
@@ -11,7 +11,7 @@ export default DiscourseRoute.extend({
return draftsStream.findItems(this.site).then(() => {
return {
stream: draftsStream,
- isAnotherUsersPage: this.isAnotherUsersPage(user),
+ isAnotherUsersPage: !this.isCurrentUser(user),
emptyState: this.emptyState(),
};
});
diff --git a/app/assets/javascripts/discourse/app/routes/user-activity-stream.js b/app/assets/javascripts/discourse/app/routes/user-activity-stream.js
index 69fabb31739..f0e1287d378 100644
--- a/app/assets/javascripts/discourse/app/routes/user-activity-stream.js
+++ b/app/assets/javascripts/discourse/app/routes/user-activity-stream.js
@@ -16,7 +16,7 @@ export default DiscourseRoute.extend(ViewingActionType, {
return {
stream,
- isAnotherUsersPage: this.isAnotherUsersPage(user),
+ isAnotherUsersPage: !this.isCurrentUser(user),
emptyState: this.emptyState(),
emptyStateOthers: this.emptyStateOthers,
};
diff --git a/app/assets/javascripts/discourse/app/routes/user-activity-topics.js b/app/assets/javascripts/discourse/app/routes/user-activity-topics.js
index 9e48ca30d51..bb8ee51b784 100644
--- a/app/assets/javascripts/discourse/app/routes/user-activity-topics.js
+++ b/app/assets/javascripts/discourse/app/routes/user-activity-topics.js
@@ -23,8 +23,15 @@ export default UserTopicListRoute.extend({
},
emptyState() {
+ const user = this.modelFor("user");
+ const title = this.isCurrentUser(user)
+ ? I18n.t("user_activity.no_topics_title")
+ : I18n.t("user_activity.no_topics_title_others", {
+ username: user.username,
+ });
+
return {
- title: I18n.t("user_activity.no_topics_title"),
+ title,
body: "",
};
},
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-activity-topic-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-activity-topic-test.js
index e669d1e20b0..673db76cbb5 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-activity-topic-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-activity-topic-test.js
@@ -1,14 +1,18 @@
-import { acceptance, exists, queryAll } from "../helpers/qunit-helpers";
+import { acceptance, exists, query, queryAll } from "../helpers/qunit-helpers";
import { test } from "qunit";
import { click, visit } from "@ember/test-helpers";
import userFixtures from "../fixtures/user-fixtures";
+import I18n from "I18n";
acceptance("User Activity / Topics - bulk actions", function (needs) {
+ const currentUser = "eviltrout";
needs.user();
needs.pretender((server, helper) => {
- server.get("/topics/created-by/:username.json", () => {
- return helper.response(userFixtures["/topics/created-by/eviltrout.json"]);
+ server.get(`/topics/created-by/${currentUser}.json`, () => {
+ return helper.response(
+ userFixtures[`/topics/created-by/${currentUser}.json`]
+ );
});
server.put("/topics/bulk", () => {
@@ -17,7 +21,7 @@ acceptance("User Activity / Topics - bulk actions", function (needs) {
});
test("bulk topic closing works", async function (assert) {
- await visit("/u/charlie/activity/topics");
+ await visit(`/u/${currentUser}/activity/topics`);
await click("button.bulk-select");
await click(queryAll("input.bulk-select")[0]);
@@ -34,6 +38,8 @@ acceptance("User Activity / Topics - bulk actions", function (needs) {
});
acceptance("User Activity / Topics - empty state", function (needs) {
+ const currentUser = "eviltrout";
+ const anotherUser = "charlie";
needs.user();
needs.pretender((server, helper) => {
@@ -43,13 +49,28 @@ acceptance("User Activity / Topics - empty state", function (needs) {
},
};
- server.get("/topics/created-by/:username.json", () => {
+ server.get(`/topics/created-by/${currentUser}.json`, () => {
+ return helper.response(emptyResponse);
+ });
+
+ server.get(`/topics/created-by/${anotherUser}.json`, () => {
return helper.response(emptyResponse);
});
});
- test("It renders the empty state panel", async function (assert) {
- await visit("/u/charlie/activity/topics");
- assert.ok(exists("div.empty-state"));
+ test("When looking at the own activity page", async function (assert) {
+ await visit(`/u/${currentUser}/activity/topics`);
+ assert.equal(
+ query("div.empty-state span.empty-state-title").innerText,
+ I18n.t("user_activity.no_topics_title")
+ );
+ });
+
+ test("When looking at another user's activity page", async function (assert) {
+ await visit(`/u/${anotherUser}/activity/topics`);
+ assert.equal(
+ query("div.empty-state span.empty-state-title").innerText,
+ I18n.t("user_activity.no_topics_title_others", { username: anotherUser })
+ );
});
});
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index e42e076c010..a18aad5903d 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -3982,6 +3982,7 @@ en:
no_likes_body: "A great way to jump in and start contributing is to start reading conversations that have already taken place, and select the %{heartIcon} on posts that you like!"
no_likes_others: "No liked posts."
no_topics_title: "You have not started any topics yet"
+ no_topics_title_others: "%{username} has not started any topics yet"
no_read_topics_title: "You haven’t read any topics yet"
no_read_topics_body: "Once you start reading discussions, you’ll see a list here. To start reading, look for topics that interest you in Top or Categories or search by keyword %{searchIcon}"