@@ -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