mirror of
https://github.com/discourse/discourse.git
synced 2025-03-21 20:40:10 +08:00
FIX: Unsilence users on chat message flag disagree. (#19198)
* FIX: Unsilence users on chat message flag disagree. We have an auto silence rule in place for chat message flags, so we need to unsilence users if the flag gets rejected. Additionally, it also fixes the `disagree_and_restore` action, which wasn't recovering a deleted message. * Update plugins/chat/spec/models/reviewable_chat_message_spec.rb Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com> Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
This commit is contained in:
parent
0cb6d8c8fc
commit
6d9e950cac
@ -9,7 +9,6 @@ class ReviewableChatMessage < Reviewable
|
||||
agree_and_silence: :agree_and_delete,
|
||||
agree_and_suspend: :agree_and_delete,
|
||||
delete_and_agree: :agree_and_delete,
|
||||
disagree_and_restore: :disagree,
|
||||
}
|
||||
end
|
||||
|
||||
@ -112,6 +111,9 @@ class ReviewableChatMessage < Reviewable
|
||||
|
||||
def disagree
|
||||
yield if block_given?
|
||||
|
||||
UserSilencer.unsilence(chat_message_creator)
|
||||
|
||||
create_result(:success, :rejected) do |result|
|
||||
result.update_flag_stats = { status: :disagreed, user_ids: flagged_by_user_ids }
|
||||
result.recalculate_score = true
|
||||
|
@ -31,22 +31,21 @@ RSpec.describe ReviewableChatMessage, type: :model do
|
||||
reviewable.perform(moderator, :agree_and_restore)
|
||||
|
||||
expect(reviewable).to be_approved
|
||||
expect(chat_message.reload.deleted_at).not_to be_present
|
||||
expect(chat_message.reload.deleted_at).to be_nil
|
||||
end
|
||||
|
||||
it "perform_disagree disagrees with the flag and does nothing" do
|
||||
reviewable.perform(moderator, :disagree)
|
||||
|
||||
expect(reviewable).to be_rejected
|
||||
expect(chat_message.reload.deleted_at).not_to be_present
|
||||
end
|
||||
|
||||
it "perform_disagree_and_restore disagrees with the flag and does nothing" do
|
||||
it "perform_disagree_and_restore disagrees with the flag and restores the message" do
|
||||
chat_message.trash!(user)
|
||||
reviewable.perform(moderator, :disagree_and_restore)
|
||||
|
||||
expect(reviewable).to be_rejected
|
||||
expect(chat_message.reload.deleted_at).to be_present
|
||||
expect(chat_message.reload.deleted_at).to be_nil
|
||||
end
|
||||
|
||||
it "perform_ignore ignores the flag and does nothing" do
|
||||
@ -55,4 +54,28 @@ RSpec.describe ReviewableChatMessage, type: :model do
|
||||
expect(reviewable).to be_ignored
|
||||
expect(chat_message.reload.deleted_at).not_to be_present
|
||||
end
|
||||
|
||||
context "when the flagged message author is silenced" do
|
||||
before do
|
||||
UserSilencer.silence(
|
||||
user,
|
||||
Discourse.system_user,
|
||||
silenced_till: 10.minutes.from_now,
|
||||
reason: I18n.t("chat.errors.auto_silence_from_flags"),
|
||||
)
|
||||
end
|
||||
|
||||
it "perform_disagree unsilences the user" do
|
||||
reviewable.perform(moderator, :disagree)
|
||||
|
||||
expect(user.reload.silenced?).to eq(false)
|
||||
end
|
||||
|
||||
it "perform_disagree_and_restore unsilences the user" do
|
||||
chat_message.trash!(user)
|
||||
reviewable.perform(moderator, :disagree_and_restore)
|
||||
|
||||
expect(user.reload.silenced?).to eq(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user