Skip to content

Commit e8c93d3

Browse files
Merge pull request #595 from GetStream/vishal/mentions-fix
fixing mentions autocomplete, for channel with more than 100 members
2 parents 92053d6 + 741f085 commit e8c93d3

File tree

1 file changed

+35
-35
lines changed

1 file changed

+35
-35
lines changed

src/utils/utils.ts

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -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

182166
export 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

Comments
 (0)