@@ -143,41 +143,25 @@ const queryMembers = async <
143143 query : SuggestionUser < Us > [ 'name' ] ,
144144 onReady ?: ( users : SuggestionUser < Us > [ ] ) => void ,
145145) : Promise < void > => {
146- await queryMembersDebounced ( channel , query , onReady ) ;
146+ if ( typeof query === 'string' ) {
147+ const response = ( await ( ( channel as unknown ) as Channel ) . queryMembers ( {
148+ name : { $autocomplete : query } ,
149+ } ) ) as ChannelMemberAPIResponse < Us > ;
150+
151+ const users : SuggestionUser < Us > [ ] = [ ] ;
152+ response . members . forEach (
153+ ( member ) => isUserResponse ( member . user ) && users . push ( member . user ) ,
154+ ) ;
155+ if ( onReady && users ) {
156+ onReady ( users ) ;
157+ }
158+ }
147159} ;
148160
149- const queryMembersDebounced = <
150- At extends UnknownType = DefaultAttachmentType ,
151- Ch extends UnknownType = DefaultChannelType ,
152- Co extends string = DefaultCommandType ,
153- Ev extends UnknownType = DefaultEventType ,
154- Me extends UnknownType = DefaultMessageType ,
155- Re extends UnknownType = DefaultReactionType ,
156- Us extends UnknownType = DefaultUserType
157- > (
158- channel : Channel < At , Ch , Co , Ev , Me , Re , Us > ,
159- query : SuggestionUser < Us > [ 'name' ] ,
160- onReady ?: ( users : SuggestionUser < Us > [ ] ) => void ,
161- ) : DebouncedFunc < ( ) => Promise < void > > =>
162- debounce (
163- async ( ) => {
164- if ( typeof query === 'string' ) {
165- const response = ( await ( ( channel as unknown ) as Channel ) . queryMembers ( {
166- name : { $autocomplete : query } ,
167- } ) ) as ChannelMemberAPIResponse < Us > ;
168-
169- const users : SuggestionUser < Us > [ ] = [ ] ;
170- response . members . forEach (
171- ( member ) => isUserResponse ( member . user ) && users . push ( member . user ) ,
172- ) ;
173- if ( onReady && users ) {
174- onReady ( users ) ;
175- }
176- }
177- } ,
178- 200 ,
179- { leading : false , trailing : true } ,
180- ) ;
161+ export const queryMembersDebounced = debounce ( queryMembers , 200 , {
162+ leading : false ,
163+ trailing : true ,
164+ } ) ;
181165
182166export const isCommandTrigger = ( trigger : Trigger ) : trigger is '/' =>
183167 trigger === '/' ;
@@ -237,7 +221,7 @@ export type TriggerSettings<
237221 data : SuggestionUser < Us > [ ] ,
238222 q : SuggestionUser < Us > [ 'name' ] ,
239223 ) => void ,
240- ) => SuggestionUser < Us > [ ] | Promise < void > ;
224+ ) => SuggestionUser < Us > [ ] | Promise < void > | void ;
241225 output : (
242226 entity : SuggestionUser < Us > ,
243227 ) => {
@@ -261,6 +245,20 @@ export type ACITriggerSettingsParams<
261245 onMentionSelectItem : ( item : SuggestionUser < Us > ) => void ;
262246} ;
263247
248+ export type QueryMembersFunction <
249+ At extends UnknownType = DefaultAttachmentType ,
250+ Ch extends UnknownType = DefaultChannelType ,
251+ Co extends string = DefaultCommandType ,
252+ Ev extends UnknownType = DefaultEventType ,
253+ Me extends UnknownType = DefaultMessageType ,
254+ Re extends UnknownType = DefaultReactionType ,
255+ Us extends UnknownType = DefaultUserType
256+ > = (
257+ channel : Channel < At , Ch , Co , Ev , Me , Re , Us > ,
258+ query : SuggestionUser < Us > [ 'name' ] ,
259+ onReady ?: ( users : SuggestionUser < Us > [ ] ) => void ,
260+ ) => Promise < void > ;
261+
264262/**
265263 * ACI = AutoCompleteInput
266264 *
@@ -407,7 +405,9 @@ export const ACITriggerSettings = <
407405 return data ;
408406 }
409407
410- return queryMembers ( channel , query , ( data ) => {
408+ return ( queryMembersDebounced as DebouncedFunc <
409+ QueryMembersFunction < At , Ch , Co , Ev , Me , Re , Us >
410+ > ) ( channel , query , ( data ) => {
411411 if ( onReady ) {
412412 onReady ( data , query ) ;
413413 }
0 commit comments