mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 08:13:43 +08:00
FEATURE: auto archive group message if topic is closed. (#9046)
Co-Authored-By: Régis Hanol <regis@hanol.fr>
This commit is contained in:
parent
5774107a2d
commit
acf337d583
|
@ -502,6 +502,17 @@ class Topic < ActiveRecord::Base
|
|||
def update_status(status, enabled, user, opts = {})
|
||||
TopicStatusUpdater.new(self, user).update!(status, enabled, opts)
|
||||
DiscourseEvent.trigger(:topic_status_updated, self, status, enabled)
|
||||
|
||||
if enabled && private_message? && status.to_s["closed"]
|
||||
group_ids = user.groups.pluck(:id)
|
||||
if group_ids.present?
|
||||
allowed_group_ids = self.allowed_groups
|
||||
.where('topic_allowed_groups.group_id IN (?)', group_ids).pluck(:id)
|
||||
allowed_group_ids.each do |id|
|
||||
GroupArchivedMessage.archive!(id, self)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Atomically creates the next post number
|
||||
|
|
|
@ -1114,6 +1114,14 @@ describe Topic do
|
|||
context 'closed' do
|
||||
let(:status) { 'closed' }
|
||||
it_should_behave_like 'a status that closes a topic'
|
||||
|
||||
it 'should archive group message' do
|
||||
group = Fabricate(:group)
|
||||
group.add(@user)
|
||||
topic = Fabricate(:private_message_topic, allowed_groups: [group])
|
||||
|
||||
expect { topic.update_status(status, true, @user) }.to change(topic.group_archived_messages, :count).by(1)
|
||||
end
|
||||
end
|
||||
|
||||
context 'autoclosed' do
|
||||
|
|
Loading…
Reference in New Issue
Block a user