Skip to content

Commit 54a9067

Browse files
committed
fix: use new endpoint in Autocomplete component
1 parent 98b48d6 commit 54a9067

File tree

7 files changed

+35
-29
lines changed

7 files changed

+35
-29
lines changed

codersdk/organizations.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,13 @@ type OrganizationMemberWithUserData struct {
8282
}
8383

8484
type PaginatedMembersRequest struct {
85-
OrganizationID uuid.UUID `table:"organization id" json:"organization_id" format:"uuid"`
86-
Limit int `json:"limit,omitempty"`
87-
Offset int `json:"offset,omitempty"`
85+
Limit int `json:"limit,omitempty"`
86+
Offset int `json:"offset,omitempty"`
8887
}
8988

9089
type PaginatedMembersResponse struct {
91-
Members []OrganizationMemberWithUserData
92-
Count int `json:"count"`
90+
Members []OrganizationMemberWithUserData `json:"members"`
91+
Count int `json:"count"`
9392
}
9493

9594
type CreateOrganizationRequest struct {

site/src/api/api.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -589,13 +589,14 @@ class ApiMethods {
589589
*/
590590
getOrganizationPaginatedMembers = async (
591591
organization: string,
592-
options?: TypesGen.Pagination
592+
options?: TypesGen.Pagination,
593593
) => {
594594
const url = getURLWithSearchParams(
595595
`/api/v2/organizations/${organization}/paginated-members`,
596-
options
596+
options,
597597
);
598-
const response = await this.axios.get<TypesGen.PaginatedMembersResponse>(url);
598+
const response =
599+
await this.axios.get<TypesGen.PaginatedMembersResponse>(url);
599600

600601
return response.data;
601602
};

site/src/api/queries/organizations.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { API } from "api/api";
22
import type {
33
CreateOrganizationRequest,
44
GroupSyncSettings,
5+
PaginatedMembersRequest,
56
PaginatedMembersResponse,
67
RoleSyncSettings,
78
UpdateOrganizationRequest,
@@ -63,21 +64,22 @@ export const organizationMembersKey = (id: string) => [
6364

6465
export function paginatedOrganizationMembers(
6566
organizationName: string,
66-
searchParams: URLSearchParams
67-
): UsePaginatedQueryOptions<PaginatedMembersResponse, { limit: number; offset: number }> {
67+
searchParams: URLSearchParams,
68+
): UsePaginatedQueryOptions<PaginatedMembersResponse, PaginatedMembersRequest> {
6869
return {
6970
searchParams,
70-
queryPayload: (params) => {
71+
queryPayload: ({ limit, offset }) => {
7172
return {
72-
limit: params.limit,
73-
offset: params.offset,
73+
limit: limit,
74+
offset: offset,
7475
};
7576
},
7677
queryKey: ({ payload }) => [
7778
...organizationMembersKey(organizationName),
7879
payload,
7980
],
80-
queryFn: ({ payload }) => API.getOrganizationPaginatedMembers(organizationName, payload),
81+
queryFn: ({ payload }) =>
82+
API.getOrganizationPaginatedMembers(organizationName, payload),
8183
};
8284
}
8385

site/src/api/typesGenerated.ts

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site/src/components/UserAutocomplete/UserAutocomplete.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ 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 { organizationMembers } from "api/queries/organizations";
6+
import { paginatedOrganizationMembers } from "api/queries/organizations";
77
import { users } from "api/queries/users";
88
import type { OrganizationMemberWithUserData, User } from "api/typesGenerated";
99
import { Avatar } from "components/Avatar/Avatar";
1010
import { AvatarData } from "components/Avatar/AvatarData";
1111
import { useDebouncedFunction } from "hooks/debounce";
12+
import { usePaginatedQuery } from "hooks/usePaginatedQuery";
1213
import {
1314
type ChangeEvent,
1415
type ComponentProps,
@@ -69,18 +70,20 @@ export const MemberAutocomplete: FC<MemberAutocompleteProps> = ({
6970
}) => {
7071
const [filter, setFilter] = useState<string>();
7172

73+
const searchParams = new URLSearchParams();
74+
searchParams.append("limit", "0");
75+
7276
// Currently this queries all members, as there is no pagination.
73-
const membersQuery = useQuery({
74-
...organizationMembers(organizationId),
77+
const membersQuery = usePaginatedQuery({
78+
...paginatedOrganizationMembers(organizationId, searchParams),
7579
enabled: filter !== undefined,
76-
keepPreviousData: true,
7780
});
7881
return (
7982
<InnerAutocomplete<OrganizationMemberWithUserData>
8083
error={membersQuery.error}
8184
isFetching={membersQuery.isFetching}
8285
setFilter={setFilter}
83-
users={membersQuery.data}
86+
users={membersQuery.data?.members}
8487
{...props}
8588
/>
8689
);

site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,15 @@ const OrganizationMembersPage: FC = () => {
3939
);
4040

4141
const membersQuery = usePaginatedQuery(
42-
paginatedOrganizationMembers(organizationName, searchParamsResult[0])
42+
paginatedOrganizationMembers(organizationName, searchParamsResult[0]),
4343
);
4444

45-
const members = membersQuery.data?.Members.map((member: OrganizationMemberWithUserData) => {
46-
const groups = groupsByUserIdQuery.data?.get(member.user_id) ?? [];
47-
return { ...member, groups };
48-
});
45+
const members = membersQuery.data?.members.map(
46+
(member: OrganizationMemberWithUserData) => {
47+
const groups = groupsByUserIdQuery.data?.get(member.user_id) ?? [];
48+
return { ...member, groups };
49+
},
50+
);
4951

5052
const addMemberMutation = useMutation(
5153
addOrganizationMember(queryClient, organizationName),
@@ -81,8 +83,8 @@ const OrganizationMembersPage: FC = () => {
8183
);
8284
}
8385

84-
const isLoading =
85-
membersQuery.isLoading ||
86+
const isLoading =
87+
membersQuery.isLoading ||
8688
organizationRolesQuery.isLoading ||
8789
groupsByUserIdQuery.isLoading;
8890

site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { ErrorAlert } from "components/Alert/ErrorAlert";
1111
import { Avatar } from "components/Avatar/Avatar";
1212
import { AvatarData } from "components/Avatar/AvatarData";
1313
import { displayError, displaySuccess } from "components/GlobalSnackbar/utils";
14+
import { Loader } from "components/Loader/Loader";
1415
import {
1516
MoreMenu,
1617
MoreMenuContent,
@@ -20,7 +21,6 @@ import {
2021
} from "components/MoreMenu/MoreMenu";
2122
import { PaginationContainer } from "components/PaginationWidget/PaginationContainer";
2223
import { SettingsHeader } from "components/SettingsHeader/SettingsHeader";
23-
import { Loader } from "components/Loader/Loader";
2424
import { Stack } from "components/Stack/Stack";
2525
import {
2626
Table,

0 commit comments

Comments
 (0)