Skip to content

Commit dac08ed

Browse files
committed
fix: update members
1 parent b472b55 commit dac08ed

2 files changed

Lines changed: 27 additions & 16 deletions

File tree

lib/stream-chat/channel.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,17 @@ def query(**options)
9797
state
9898
end
9999

100+
# Refreshes the channel state from the server.
101+
# Updates the channel's members attribute with fresh data.
102+
sig { returns(StreamChat::StreamResponse) }
103+
def refresh_state
104+
url = "channels/#{@channel_type}/#{@id}/query"
105+
state = @client.post(url, data: { state: true })
106+
107+
@members = state['members'] if state['members']
108+
state
109+
end
110+
100111
# Queries members of a channel.
101112
#
102113
# The queryMembers endpoint allows you to list and paginate members from a channel. The

spec/channel_batch_updater_spec.rb

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@ def wait_for_task(task_id, timeout_seconds: 120)
150150

151151
# Verify members were added
152152
loop_times(120) do
153-
ch1_state = @channel1.query
154-
ch1_member_ids = ch1_state['members'].map { |m| m['user_id'] }
153+
@channel1.refresh_state
154+
ch1_member_ids = @channel1.members.map { |m| m['user_id'] }
155155

156156
member_ids.each do |member_id|
157157
expect(ch1_member_ids).to include(member_id)
@@ -169,20 +169,20 @@ def wait_for_task(task_id, timeout_seconds: 120)
169169

170170
# Verify members were added
171171
loop_times(60) do
172-
ch1_state = @channel1.query
173-
expect(ch1_state['members'].length).to eq(2)
172+
@channel1.refresh_state
173+
expect(@channel1.members.length).to eq(2)
174174

175-
ch2_state = @channel2.query
176-
expect(ch2_state['members'].length).to eq(2)
175+
@channel2.refresh_state
176+
expect(@channel2.members.length).to eq(2)
177177
end
178178

179179
# Verify member IDs match
180-
ch1_state = @channel1.query
181-
ch1_member_ids = ch1_state['members'].map { |m| m['user_id'] }
180+
@channel1.refresh_state
181+
ch1_member_ids = @channel1.members.map { |m| m['user_id'] }
182182
expect(ch1_member_ids).to match_array(members_to_add)
183183

184-
ch2_state = @channel2.query
185-
ch2_member_ids = ch2_state['members'].map { |m| m['user_id'] }
184+
@channel2.refresh_state
185+
ch2_member_ids = @channel2.members.map { |m| m['user_id'] }
186186
expect(ch2_member_ids).to match_array(members_to_add)
187187

188188
# Now remove one member using batch updater
@@ -201,8 +201,8 @@ def wait_for_task(task_id, timeout_seconds: 120)
201201

202202
# Verify member was removed
203203
loop_times(120) do
204-
ch1_state = @channel1.query
205-
ch1_member_ids = ch1_state['members'].map { |m| m['user_id'] }
204+
@channel1.refresh_state
205+
ch1_member_ids = @channel1.members.map { |m| m['user_id'] }
206206

207207
expect(ch1_member_ids).not_to include(member_to_remove)
208208
end
@@ -218,8 +218,8 @@ def wait_for_task(task_id, timeout_seconds: 120)
218218

219219
# Wait for members to be added
220220
loop_times(60) do
221-
ch1_state = @channel1.query
222-
expect(ch1_state['members'].length).to eq(2)
221+
@channel1.refresh_state
222+
expect(@channel1.members.length).to eq(2)
223223
end
224224

225225
# Archive channels for one member
@@ -238,8 +238,8 @@ def wait_for_task(task_id, timeout_seconds: 120)
238238

239239
# Verify archived_at is set for the member
240240
loop_times(120) do
241-
ch1_state = @channel1.query
242-
member = ch1_state['members'].find { |m| m['user_id'] == member_to_archive }
241+
@channel1.refresh_state
242+
member = @channel1.members.find { |m| m['user_id'] == member_to_archive }
243243

244244
expect(member).not_to be_nil
245245
expect(member['archived_at']).not_to be_nil

0 commit comments

Comments
 (0)