mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 13:51:09 +08:00
FEATURE: introduces group channels (#24288)
Group channels will allow users to create channels with a name and invite people. It's possible to add people even after creation of the channel. Removing users is not yet possible but will be added in the near future. Technically a group channel is `direct_message_channel` with a group attribute set to true on its direct message (chatable). This model might evolve in the future but offers much flexibility for now without having to rely on a complex migration. The commit essentially consists of: - a migration to set existing direct message channels with more than 2 users to a group - a new message creator which allows to search, add members, and create groups - a new `AddUsersToChannel` service - a modified `SearchChatable` service
This commit is contained in:
@ -0,0 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AddGroupFieldToDirectMessageChannels < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
add_column :direct_message_channels, :group, :boolean, default: false, null: false
|
||||
end
|
||||
end
|
@ -0,0 +1,16 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class SetMultiusersDirectMessageChannelsAsGroup < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
execute <<-SQL
|
||||
UPDATE direct_message_channels
|
||||
SET "group" = true
|
||||
WHERE id IN (
|
||||
SELECT direct_message_channel_id
|
||||
FROM direct_message_users
|
||||
GROUP BY direct_message_channel_id
|
||||
HAVING COUNT(user_id) > 2
|
||||
);
|
||||
SQL
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user