Skip to content

Commit fb5400c

Browse files
AntoLClunika
authored andcommitted
⚡️(frontend) search users with at least 5 characters
We now only search for users when the query is at least 5 characters long.
1 parent 8473fac commit fb5400c

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

src/frontend/apps/e2e/__tests__/app-impress/common.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ export const addNewMember = async (
8080
page: Page,
8181
index: number,
8282
role: 'Administrator' | 'Owner' | 'Member' | 'Editor' | 'Reader',
83-
fillText: string = 'user',
83+
fillText: string = 'user ',
8484
) => {
8585
const responsePromiseSearchUser = page.waitForResponse(
8686
(response) =>
87-
response.url().includes(`/users/?q=${fillText}`) &&
87+
response.url().includes(`/users/?q=${encodeURIComponent(fillText)}`) &&
8888
response.status() === 200,
8989
);
9090

@@ -97,7 +97,7 @@ export const addNewMember = async (
9797

9898
// Intercept response
9999
const responseSearchUser = await responsePromiseSearchUser;
100-
const users = (await responseSearchUser.json()).results as {
100+
const users = (await responseSearchUser.json()) as {
101101
email: string;
102102
}[];
103103

src/frontend/apps/e2e/__tests__/app-impress/doc-member-create.spec.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ test.beforeEach(async ({ page }) => {
88

99
test.describe('Document create member', () => {
1010
test('it selects 2 users and 1 invitation', async ({ page, browserName }) => {
11+
const inputFill = 'user ';
1112
const responsePromise = page.waitForResponse(
1213
(response) =>
13-
response.url().includes('/users/?q=user') && response.status() === 200,
14+
response.url().includes(`/users/?q=${encodeURIComponent(inputFill)}`) &&
15+
response.status() === 200,
1416
);
1517
await createDoc(page, 'select-multi-users', browserName, 1);
1618

@@ -22,9 +24,9 @@ test.describe('Document create member', () => {
2224
await expect(inputSearch).toBeVisible();
2325

2426
// Select user 1 and verify tag
25-
await inputSearch.fill('user');
27+
await inputSearch.fill(inputFill);
2628
const response = await responsePromise;
27-
const users = (await response.json()).results as {
29+
const users = (await response.json()) as {
2830
email: string;
2931
full_name?: string | null;
3032
}[];
@@ -45,7 +47,7 @@ test.describe('Document create member', () => {
4547
).toBeVisible();
4648

4749
// Select user 2 and verify tag
48-
await inputSearch.fill('user');
50+
await inputSearch.fill(inputFill);
4951
await quickSearchContent
5052
.getByTestId(`search-user-row-${users[1].email}`)
5153
.click();

src/frontend/apps/impress/src/features/docs/doc-share/api/useUsers.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const getUsers = async ({
1616
docId,
1717
}: UsersParams): Promise<UsersResponse> => {
1818
const queriesParams = [];
19-
queriesParams.push(query ? `q=${query}` : '');
19+
queriesParams.push(query ? `q=${encodeURIComponent(query)}` : '');
2020
queriesParams.push(docId ? `document_id=${docId}` : '');
2121
const queryParams = queriesParams.filter(Boolean).join('&');
2222

src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export const DocShareModal = ({ doc, onClose }: Props) => {
5858
const canViewAccesses = doc.abilities.accesses_view;
5959
const showMemberSection = inputValue === '' && selectedUsers.length === 0;
6060
const showFooter = selectedUsers.length === 0 && !inputValue;
61+
const MIN_CHARACTERS_FOR_SEARCH = 4;
6162

6263
const onSelect = (user: User) => {
6364
setSelectedUsers((prev) => [...prev, user]);
@@ -76,7 +77,7 @@ export const DocShareModal = ({ doc, onClose }: Props) => {
7677
const searchUsersQuery = useUsers(
7778
{ query: userQuery, docId: doc.id },
7879
{
79-
enabled: !!userQuery,
80+
enabled: userQuery?.length > MIN_CHARACTERS_FOR_SEARCH,
8081
queryKey: [KEY_LIST_USER, { query: userQuery }],
8182
},
8283
);

0 commit comments

Comments
 (0)