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

@ -102,6 +102,17 @@ module ChatSpecHelpers
service_failed!(result) if result.failure?
result
end
def add_users_to_channel(users, channel, user: Discourse.system_user)
result =
::Chat::AddUsersToChannel.call(
guardian: user.guardian,
channel_id: channel.id,
usernames: Array(users).map(&:username),
)
service_failed!(result) if result.failure?
result
end
end
RSpec.configure do |config|