Skip to content

Commit 6f4502c

Browse files
feat: added support for pinning, archiving and partial member update
1 parent 9216c4c commit 6f4502c

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

lib/stream-chat/channel.rb

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,68 @@ def unmute(user_id)
166166
@client.post('moderation/unmute/channel', data: { 'user_id' => user_id, 'channel_cid' => @cid })
167167
end
168168

169+
# Pins a channel for a user.
170+
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
171+
def pin(user_id)
172+
raise StreamChannelException, 'user ID must not be empty' if user_id.empty?
173+
174+
payload = {
175+
set: {
176+
pinned: true
177+
}
178+
}
179+
@client.patch("#{url}/member/#{CGI.escape(user_id)}", data: payload)
180+
end
181+
182+
# Unins a channel for a user.
183+
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
184+
def unpin(user_id)
185+
raise StreamChannelException, 'user ID must not be empty' if user_id.empty?
186+
187+
payload = {
188+
set: {
189+
pinned: false
190+
}
191+
}
192+
@client.patch("#{url}/member/#{CGI.escape(user_id)}", data: payload)
193+
end
194+
195+
# Archives a channel for a user.
196+
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
197+
def archive(user_id)
198+
raise StreamChannelException, 'user ID must not be empty' if user_id.empty?
199+
200+
payload = {
201+
set: {
202+
archived: true
203+
}
204+
}
205+
@client.patch("#{url}/member/#{CGI.escape(user_id)}", data: payload)
206+
end
207+
208+
# Archives a channel for a user.
209+
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
210+
def unarchive(user_id)
211+
raise StreamChannelException, 'user ID must not be empty' if user_id.empty?
212+
213+
payload = {
214+
set: {
215+
archived: false
216+
}
217+
}
218+
@client.patch("#{url}/member/#{CGI.escape(user_id)}", data: payload)
219+
end
220+
221+
# Updates a member partially in the channel.
222+
sig { params(user_id: String, set: T.nilable(StringKeyHash), unset: T.nilable(StringKeyHash)).returns(StreamChat::StreamResponse) }
223+
def update_member_partial(user_id, set: nil, unset: nil)
224+
raise StreamChannelException, 'user ID must not be empty' if user_id.empty?
225+
raise StreamChannelException, 'set or unset is required' if set.nil? && unset.nil?
226+
227+
payload = { set: set, unset: unset }
228+
@client.patch("#{url}/member/#{CGI.escape(user_id)}", data: payload)
229+
end
230+
169231
# Adds members to the channel.
170232
sig { params(user_ids: T::Array[String], options: T.untyped).returns(StreamChat::StreamResponse) }
171233
def add_members(user_ids, **options)

0 commit comments

Comments
 (0)