discourse/plugins/chat/lib/chat_sdk/channel.rb
Joffrey JAFFEUX 41790f7739
DEV: allows stop/resume streaming on a message (#25774)
```ruby
ChatSDK::Message.start_stream(message_id: 1, guardian: guardian)
ChatSDK::Message.stream(raw: "foo", message_id: 1, guardian: guardian)
ChatSDK::Message.stream(raw: "bar", message_id: 1, guardian: guardian)
ChatSDK::Message.stop_stream(message_id: 1, guardian: guardian)
```

Generally speaking only admins or owners of the message can interact with a message.  Also note, Streaming to an existing message with a different user won't change the initial user of the message.
2024-02-26 14:16:29 +01:00

36 lines
1.2 KiB
Ruby

# frozen_string_literal: true
module ChatSDK
class Channel
include Chat::WithServiceHelper
# Retrieves messages from a specified channel.
#
# @param channel_id [Integer] The ID of the chat channel from which to fetch messages.
# @param guardian [Guardian] The guardian object representing the user's permissions.
# @return [Array<ChMessage>] An array of message objects from the specified channel.
#
# @example Fetching messages from a channel with additional parameters
# ChatSDK::Channel.messages(channel_id: 1, guardian: Guardian.new)
#
def self.messages(channel_id:, guardian:, **params)
new.messages(channel_id: channel_id, guardian: guardian, **params)
end
def messages(channel_id:, guardian:, **params)
with_service(
Chat::ListChannelMessages,
channel_id: channel_id,
guardian: guardian,
**params,
direction: "future",
) do
on_success { result.messages }
on_failure { raise "Unexpected error" }
on_failed_policy(:can_view_channel) { raise "Guardian can't view channel" }
on_failed_policy(:target_message_exists) { raise "Target message doesn't exist" }
end
end
end
end