Skip to content

Commit cfd11f6

Browse files
committed
feat: create un-paginated version of query
1 parent aaaa89d commit cfd11f6

File tree

2 files changed

+35
-17
lines changed

2 files changed

+35
-17
lines changed

site/src/api/queries/organizations.ts

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,32 @@ export const organizationMembersKey = (id: string) => [
6262
"members",
6363
];
6464

65-
export function paginatedOrganizationMembers(
66-
organizationName: string,
65+
/**
66+
* Creates a query configuration to fetch all members of an organization.
67+
*
68+
* Unlike the paginated version, this function sets the `limit` parameter to 0,
69+
* which instructs the API to return all organization members in a single request
70+
* without pagination.
71+
*
72+
* @param id - The unique identifier of the organization
73+
* @returns A query configuration object for use with React Query
74+
*
75+
* @see paginatedOrganizationMembers - For fetching members with pagination support
76+
*/
77+
export const organizationMembers = (id: string) => {
78+
return {
79+
queryFn: () => API.getOrganizationPaginatedMembers(id, { limit: 0 }),
80+
queryKey: organizationMembersKey(id),
81+
};
82+
};
83+
84+
export const paginatedOrganizationMembers = (
85+
id: string,
6786
searchParams: URLSearchParams,
68-
): UsePaginatedQueryOptions<PaginatedMembersResponse, PaginatedMembersRequest> {
87+
): UsePaginatedQueryOptions<
88+
PaginatedMembersResponse,
89+
PaginatedMembersRequest
90+
> => {
6991
return {
7092
searchParams,
7193
queryPayload: ({ limit, offset }) => {
@@ -74,14 +96,10 @@ export function paginatedOrganizationMembers(
7496
offset: offset,
7597
};
7698
},
77-
queryKey: ({ payload }) => [
78-
...organizationMembersKey(organizationName),
79-
payload,
80-
],
81-
queryFn: ({ payload }) =>
82-
API.getOrganizationPaginatedMembers(organizationName, payload),
99+
queryKey: ({ payload }) => [...organizationMembersKey(id), payload],
100+
queryFn: ({ payload }) => API.getOrganizationPaginatedMembers(id, payload),
83101
};
84-
}
102+
};
85103

86104
export const addOrganizationMember = (queryClient: QueryClient, id: string) => {
87105
return {

site/src/components/UserAutocomplete/UserAutocomplete.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ import Autocomplete from "@mui/material/Autocomplete";
33
import CircularProgress from "@mui/material/CircularProgress";
44
import TextField from "@mui/material/TextField";
55
import { getErrorMessage } from "api/errors";
6-
import { paginatedOrganizationMembers } from "api/queries/organizations";
6+
import {
7+
organizationMembers,
8+
paginatedOrganizationMembers,
9+
} from "api/queries/organizations";
710
import { users } from "api/queries/users";
811
import type { OrganizationMemberWithUserData, User } from "api/typesGenerated";
912
import { Avatar } from "components/Avatar/Avatar";
@@ -70,13 +73,10 @@ export const MemberAutocomplete: FC<MemberAutocompleteProps> = ({
7073
}) => {
7174
const [filter, setFilter] = useState<string>();
7275

73-
const searchParams = new URLSearchParams();
74-
searchParams.append("limit", "0");
75-
76-
// Currently this queries all members, as there is no pagination.
77-
const membersQuery = usePaginatedQuery({
78-
...paginatedOrganizationMembers(organizationId, searchParams),
76+
const membersQuery = useQuery({
77+
...organizationMembers(organizationId),
7978
enabled: filter !== undefined,
79+
keepPreviousData: true,
8080
});
8181
return (
8282
<InnerAutocomplete<OrganizationMemberWithUserData>

0 commit comments

Comments
 (0)