diff --git a/app/assets/javascripts/discourse/app/components/reviewable-item.js b/app/assets/javascripts/discourse/app/components/reviewable-item.js
index 23071cac963..d7173eb3ec8 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-item.js
+++ b/app/assets/javascripts/discourse/app/components/reviewable-item.js
@@ -29,14 +29,14 @@ export default Component.extend({
@discourseComputed(
"reviewable.type",
- "reviewable.stale",
+ "reviewable.last_performing_username",
"siteSettings.blur_tl0_flagged_posts_media",
"reviewable.target_created_by_trust_level"
)
- customClasses(type, stale, blurEnabled, trustLevel) {
+ customClasses(type, lastPerformingUsername, blurEnabled, trustLevel) {
let classes = type.dasherize();
- if (stale) {
+ if (lastPerformingUsername) {
classes = `${classes} reviewable-stale`;
}
diff --git a/app/assets/javascripts/discourse/app/routes/review-index.js b/app/assets/javascripts/discourse/app/routes/review-index.js
index 187c91c9538..a19b0f9952b 100644
--- a/app/assets/javascripts/discourse/app/routes/review-index.js
+++ b/app/assets/javascripts/discourse/app/routes/review-index.js
@@ -39,6 +39,8 @@ export default DiscourseRoute.extend({
sort_order: meta.sort_order,
additionalFilters: meta.additional_filters || {},
});
+
+ controller.reviewables.setEach("last_performing_username", null);
},
activate() {
@@ -62,7 +64,6 @@ export default DiscourseRoute.extend({
const updates = data.updates[reviewable.id];
if (updates) {
reviewable.setProperties(updates);
- reviewable.set("stale", true);
}
});
}
diff --git a/app/assets/javascripts/discourse/app/templates/components/reviewable-item.hbs b/app/assets/javascripts/discourse/app/templates/components/reviewable-item.hbs
index 9288db16d2a..df7a0723791 100644
--- a/app/assets/javascripts/discourse/app/templates/components/reviewable-item.hbs
+++ b/app/assets/javascripts/discourse/app/templates/components/reviewable-item.hbs
@@ -44,8 +44,8 @@
{{/if}}
- {{#if reviewable.stale}}
-
{{i18n "review.stale_help"}}
+ {{#if reviewable.last_performing_username}}
+
{{html-safe (i18n "review.stale_help" username=reviewable.last_performing_username)}}
{{else}}
{{#if claimEnabled}}
diff --git a/app/assets/javascripts/discourse/tests/acceptance/review-test.js b/app/assets/javascripts/discourse/tests/acceptance/review-test.js
index 522fe2c1891..23c7b64c139 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/review-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/review-test.js
@@ -197,7 +197,7 @@ acceptance("Review", function (needs) {
publishToMessageBus("/reviewable_counts", {
review_count: 1,
updates: {
- 1234: { status: 1 },
+ 1234: { last_performing_username: "foo", status: 1 },
},
});
@@ -206,5 +206,11 @@ acceptance("Review", function (needs) {
assert.ok(reviewable.className.includes("reviewable-stale"));
assert.equal(count("[data-reviewable-id=1234] .status .approved"), 1);
assert.equal(count(".stale-help"), 1);
+ assert.ok(query(".stale-help").innerText.includes("foo"));
+
+ await visit("/");
+ await visit("/review"); // reload review
+
+ assert.equal(count(".stale-help"), 0);
});
});
diff --git a/app/jobs/regular/notify_reviewable.rb b/app/jobs/regular/notify_reviewable.rb
index 3205129333a..9c3e729fe22 100644
--- a/app/jobs/regular/notify_reviewable.rb
+++ b/app/jobs/regular/notify_reviewable.rb
@@ -19,7 +19,10 @@ class Jobs::NotifyReviewable < ::Jobs::Base
if args[:updated_reviewable_ids].present?
Reviewable.where(id: args[:updated_reviewable_ids]).each do |r|
- payload = { status: r.status }
+ payload = {
+ last_performing_username: args[:performing_username],
+ status: r.status
+ }
all_updates[:admins][r.id] = payload
all_updates[:moderators][r.id] = payload if r.reviewable_by_moderator?
diff --git a/app/models/reviewable.rb b/app/models/reviewable.rb
index e8998a1d143..bff1c630648 100644
--- a/app/models/reviewable.rb
+++ b/app/models/reviewable.rb
@@ -371,7 +371,8 @@ class Reviewable < ActiveRecord::Base
Jobs.enqueue(
:notify_reviewable,
reviewable_id: self.id,
- updated_reviewable_ids: result.remove_reviewable_ids,
+ performing_username: performed_by.username,
+ updated_reviewable_ids: result.remove_reviewable_ids
)
end
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 81484815c42..96af2e71dd9 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -426,7 +426,7 @@ en:
type_bonus:
name: "type bonus"
title: "Certain reviewable types can be assigned a bonus by staff to make them a higher priority."
- stale_help: "This reviewable has been resolved by someone else."
+ stale_help: "This reviewable has been resolved by %{username}."
claim_help:
optional: "You can claim this item to prevent others from reviewing it."
required: "You must claim items before you can review them."