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:
Joffrey JAFFEUX
2023-11-10 11:29:28 +01:00
committed by GitHub
parent a8d6dc4d3a
commit ab832cc865
121 changed files with 2969 additions and 2332 deletions

View File

@ -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

View File

@ -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