Skip to content

Commit c950694

Browse files
authored
feat: add helper for invitation acceptance and rejection (#78)
1 parent 00d1a20 commit c950694

File tree

2 files changed

+34
-9
lines changed

2 files changed

+34
-9
lines changed

lib/stream-chat/channel.rb

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ def query_members(filter_conditions = {}, sort: nil, **options)
8484
@client.get('members', params: { payload: params.to_json })
8585
end
8686

87-
def update(channel_data, update_message = nil)
88-
payload = { data: channel_data, message: update_message }
87+
def update(channel_data, update_message = nil, **options)
88+
payload = { data: channel_data, message: update_message }.merge(options)
8989
@client.post(url, data: payload)
9090
end
9191

@@ -116,27 +116,38 @@ def unmute(user_id)
116116

117117
def add_members(user_ids, **options)
118118
payload = options.merge({ add_members: user_ids })
119-
@client.post(url, data: payload)
119+
update(nil, nil, **payload)
120+
end
121+
122+
def invite_members(user_ids, **options)
123+
payload = options.merge({ invites: user_ids })
124+
update(nil, nil, **payload)
125+
end
126+
127+
def accept_invite(user_id, **options)
128+
payload = options.merge({ user_id: user_id, accept_invite: true })
129+
update(nil, nil, **payload)
120130
end
121131

122-
def invite_members(user_ids)
123-
@client.post(url, data: { invites: user_ids })
132+
def reject_invite(user_id, **options)
133+
payload = options.merge({ user_id: user_id, reject_invite: true })
134+
update(nil, nil, **payload)
124135
end
125136

126137
def add_moderators(user_ids)
127-
@client.post(url, data: { add_moderators: user_ids })
138+
update(nil, nil, add_moderators: user_ids)
128139
end
129140

130141
def remove_members(user_ids)
131-
@client.post(url, data: { remove_members: user_ids })
142+
update(nil, nil, remove_members: user_ids)
132143
end
133144

134145
def assign_roles(members, message = nil)
135-
@client.post(url, data: { assign_roles: members, message: message })
146+
update(nil, message, assign_roles: members)
136147
end
137148

138149
def demote_moderators(user_ids)
139-
@client.post(url, data: { demote_moderators: user_ids })
150+
update(nil, nil, demote_moderators: user_ids)
140151
end
141152

142153
def mark_read(user_id, **options)

spec/channel_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,20 @@ def loop_times(times)
141141
expect(response['members'][0].fetch('invited', false)).to be true
142142
end
143143

144+
it 'can accept invitation' do
145+
@channel.remove_members([@random_user[:id]])
146+
@channel.invite_members([@random_user[:id]])
147+
148+
@channel.accept_invite(@random_user[:id])
149+
end
150+
151+
it 'can reject invitation' do
152+
@channel.remove_members([@random_user[:id]])
153+
@channel.invite_members([@random_user[:id]])
154+
155+
@channel.reject_invite(@random_user[:id])
156+
end
157+
144158
it 'can add moderators' do
145159
response = @channel.add_moderators([@random_user[:id]])
146160
expect(response['members'][0]['is_moderator']).to be true

0 commit comments

Comments
 (0)