1515require 'stream-chat/version'
1616require 'stream-chat/util'
1717require 'stream-chat/types'
18+ require 'stream-chat/moderation'
1819
1920module StreamChat
2021 DEFAULT_BLOCKLIST = 'profanity_en_2020_v1'
@@ -36,6 +37,9 @@ class Client
3637 sig { returns ( Faraday ::Connection ) }
3738 attr_reader :conn
3839
40+ sig { returns ( Moderation ) }
41+ attr_reader :moderation
42+
3943 # initializes a Stream Chat API Client
4044 #
4145 # @param [string] api_key your application api_key
@@ -65,6 +69,7 @@ def initialize(api_key, api_secret, timeout = nil, **options)
6569 end
6670 end
6771 @conn = T . let ( conn , Faraday ::Connection )
72+ @moderation = T . let ( Moderation . new ( self ) , Moderation )
6873 end
6974
7075 # initializes a Stream Chat API Client from STREAM_KEY and STREAM_SECRET
@@ -178,9 +183,9 @@ def review_flag_report(report_id, review_result, user_id, **details)
178183 end
179184
180185 # Returns a message.
181- sig { params ( id : String ) . returns ( StreamChat ::StreamResponse ) }
182- def get_message ( id )
183- get ( "messages/#{ id } " )
186+ sig { params ( id : String , options : T . untyped ) . returns ( StreamChat ::StreamResponse ) }
187+ def get_message ( id , ** options )
188+ get ( "messages/#{ id } " , params : options )
184189 end
185190
186191 # Searches for messages.
@@ -276,6 +281,14 @@ def deactivate_user(user_id, **options)
276281 post ( "users/#{ user_id } /deactivate" , params : options )
277282 end
278283
284+ # Deactivates a users
285+ sig { params ( user_ids : T ::Array [ String ] , options : T . untyped ) . returns ( StreamChat ::StreamResponse ) }
286+ def deactivate_users ( user_ids , **options )
287+ raise ArgumentError , 'user_ids should not be empty' if user_ids . empty?
288+
289+ post ( 'users/deactivate' , data : { user_ids : user_ids , **options } )
290+ end
291+
279292 # Reactivates a deactivated user. Use deactivate_user to deactivate a user.
280293 sig { params ( user_id : String , options : T . untyped ) . returns ( StreamChat ::StreamResponse ) }
281294 def reactivate_user ( user_id , **options )
@@ -779,6 +792,22 @@ def create_command(command)
779792 post ( 'commands' , data : command )
780793 end
781794
795+ # Queries draft messages for the current user.
796+ #
797+ # @param [String] user_id The ID of the user to query drafts for
798+ # @param [StringKeyHash] filter Optional filter conditions for the query
799+ # @param [Array] sort Optional sort parameters
800+ # @param [Hash] options Additional query options
801+ # @return [StreamChat::StreamResponse]
802+ sig { params ( user_id : String , filter : T . nilable ( StringKeyHash ) , sort : T . nilable ( T ::Array [ StringKeyHash ] ) , options : T . untyped ) . returns ( StreamChat ::StreamResponse ) }
803+ def query_drafts ( user_id , filter : nil , sort : nil , **options )
804+ data = { user_id : user_id }
805+ data [ 'filter' ] = filter if filter
806+ data [ 'sort' ] = sort if sort
807+ data . merge! ( options ) if options
808+ post ( 'drafts/query' , data : data )
809+ end
810+
782811 # Gets a comamnd.
783812 sig { params ( name : String ) . returns ( StreamChat ::StreamResponse ) }
784813 def get_command ( name )
@@ -901,6 +930,16 @@ def list_imports(options)
901930 get ( 'imports' , params : options )
902931 end
903932
933+ sig { params ( filter : StringKeyHash , sort : T . nilable ( T ::Hash [ String , Integer ] ) , options : T . untyped ) . returns ( StreamChat ::StreamResponse ) }
934+ def query_threads ( filter , sort : nil , **options )
935+ params = { } . merge ( options ) . merge ( {
936+ filter : filter ,
937+ sort : StreamChat . get_sort_fields ( sort )
938+ } )
939+
940+ post ( 'threads' , data : params )
941+ end
942+
904943 # Creates a reminder for a message.
905944 # @param message_id [String] The ID of the message to create a reminder for
906945 # @param user_id [String] The ID of the user creating the reminder
0 commit comments