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."