mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06: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 = {})
|
def update_status(status, enabled, user, opts = {})
|
||||||
TopicStatusUpdater.new(self, user).update!(status, enabled, opts)
|
TopicStatusUpdater.new(self, user).update!(status, enabled, opts)
|
||||||
DiscourseEvent.trigger(:topic_status_updated, self, status, enabled)
|
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
|
end
|
||||||
|
|
||||||
# Atomically creates the next post number
|
# Atomically creates the next post number
|
||||||
|
@ -1114,6 +1114,14 @@ describe Topic do
|
|||||||
context 'closed' do
|
context 'closed' do
|
||||||
let(:status) { 'closed' }
|
let(:status) { 'closed' }
|
||||||
it_should_behave_like 'a status that closes a topic'
|
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
|
end
|
||||||
|
|
||||||
context 'autoclosed' do
|
context 'autoclosed' do
|
||||||
|
Loading…
Reference in New Issue
Block a user