Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions lib/stream-chat/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1065,6 +1065,15 @@ def query_reminders(user_id, filter_conditions = {}, sort: nil, **options)
post('reminders/query', data: params)
end

# Send the mark delivered event for this user, only works if the `delivery_receipts` setting is enabled
#
# @param [StringKeyHash, nil] data The delivery confirmation data
# @return [StreamChat::StreamResponse] API response
sig { params(data: T.nilable(StringKeyHash), user_id: T.nilable(String)).returns(StreamChat::StreamResponse) }
def mark_delivered(data = nil, user_id: nil)
post('channels/delivered', data: data || {}, params: { user_id: user_id })
end

private

sig { returns(T::Hash[String, String]) }
Expand Down
9 changes: 9 additions & 0 deletions spec/channel_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,9 @@ def loop_times(times)
end

it 'can send message with restricted visibility' do
# Add users as members before testing restricted visibility
@channel.add_members([@random_users[0][:id], @random_users[1][:id]])

# Send a message that's only visible to specific users
msg = @channel.send_message(
{
Expand All @@ -372,6 +375,9 @@ def loop_times(times)
end

it 'can update message with restricted visibility' do
# Add users as members before testing restricted visibility
@channel.add_members([@random_users[0][:id], @random_users[1][:id]])

# First send a regular message
msg = @channel.send_message(
{
Expand Down Expand Up @@ -399,6 +405,9 @@ def loop_times(times)
end

it 'can update message partially with restricted visibility' do
# Add users as members before testing restricted visibility
@channel.add_members([@random_users[0][:id], @random_users[1][:id]])

# First send a regular message
msg = @channel.send_message(
{
Expand Down
24 changes: 24 additions & 0 deletions spec/client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1435,4 +1435,28 @@ def loop_times(times)
expect(response['active_live_locations'].length).to be >= 1
end
end

describe '#mark_delivered' do
it 'should mark messages as delivered' do
# Create some test messages first
message = @channel.send_message({ text: 'Test message 1' }, @frodo)

# Create delivery confirmation data
delivery_data = {
latest_delivered_messages: [
{
cid: @channel.cid,
id: message['message']['id']
}
],
user_id: @gandalf
}

# Call the method
response = @client.mark_delivered(delivery_data, user_id: @gandalf)

# The response should be successful (status 201)
expect(response.status_code).to eq(201)
end
end
end