Skip to content

Commit 7466c8b

Browse files
committed
Remove edit group service
1 parent 6b93fcc commit 7466c8b

File tree

3 files changed

+52
-124
lines changed

3 files changed

+52
-124
lines changed

site/src/api/queries/groups.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { QueryClient } from "@tanstack/react-query";
22
import * as API from "api/api";
3-
import { CreateGroupRequest } from "api/typesGenerated";
3+
import {
4+
CreateGroupRequest,
5+
Group,
6+
PatchGroupRequest,
7+
} from "api/typesGenerated";
48

59
export const groups = (organizationId: string) => {
610
return {
@@ -9,6 +13,13 @@ export const groups = (organizationId: string) => {
913
};
1014
};
1115

16+
export const group = (groupId: string) => {
17+
return {
18+
queryKey: ["group", groupId],
19+
queryFn: () => API.getGroup(groupId),
20+
};
21+
};
22+
1223
export const createGroup = (queryClient: QueryClient) => {
1324
return {
1425
mutationFn: ({
@@ -21,3 +32,19 @@ export const createGroup = (queryClient: QueryClient) => {
2132
},
2233
};
2334
};
35+
36+
export const patchGroup = (queryClient: QueryClient) => {
37+
return {
38+
mutationFn: ({
39+
groupId,
40+
...request
41+
}: PatchGroupRequest & { groupId: string }) =>
42+
API.patchGroup(groupId, request),
43+
onSuccess: async (updatedGroup: Group) => {
44+
await Promise.all([
45+
queryClient.invalidateQueries(["groups"]),
46+
queryClient.invalidateQueries(["group", updatedGroup.id]),
47+
]);
48+
},
49+
};
50+
};

site/src/pages/GroupsPage/SettingsGroupPage.tsx

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,24 @@
1-
import { useMachine } from "@xstate/react";
21
import { FC } from "react";
32
import { Helmet } from "react-helmet-async";
43
import { useNavigate, useParams } from "react-router-dom";
54
import { pageTitle } from "utils/page";
6-
import { editGroupMachine } from "xServices/groups/editGroupXService";
75
import SettingsGroupPageView from "./SettingsGroupPageView";
6+
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
7+
import { group, patchGroup } from "api/queries/groups";
8+
import { displayError } from "components/GlobalSnackbar/utils";
9+
import { getErrorMessage } from "api/errors";
810

911
export const SettingsGroupPage: FC = () => {
10-
const { groupId } = useParams();
11-
if (!groupId) {
12-
throw new Error("Group ID not defined.");
13-
}
14-
12+
const { groupId } = useParams() as { groupId: string };
13+
const queryClient = useQueryClient();
14+
const groupQuery = useQuery(group(groupId));
15+
const patchGroupMutation = useMutation(patchGroup(queryClient));
1516
const navigate = useNavigate();
1617

1718
const navigateToGroup = () => {
1819
navigate(`/groups/${groupId}`);
1920
};
2021

21-
const [editState, sendEditEvent] = useMachine(editGroupMachine, {
22-
context: {
23-
groupId,
24-
},
25-
actions: {
26-
onUpdate: navigateToGroup,
27-
},
28-
});
29-
const { error, group } = editState.context;
30-
3122
return (
3223
<>
3324
<Helmet>
@@ -36,13 +27,23 @@ export const SettingsGroupPage: FC = () => {
3627

3728
<SettingsGroupPageView
3829
onCancel={navigateToGroup}
39-
onSubmit={(data) => {
40-
sendEditEvent({ type: "UPDATE", data });
30+
onSubmit={async (data) => {
31+
try {
32+
await patchGroupMutation.mutateAsync({
33+
groupId,
34+
...data,
35+
add_users: [],
36+
remove_users: [],
37+
});
38+
navigateToGroup();
39+
} catch (error) {
40+
displayError(getErrorMessage(error, "Failed to update group"));
41+
}
4142
}}
42-
group={group}
43-
formErrors={error}
44-
isLoading={editState.matches("loading")}
45-
isUpdating={editState.matches("updating")}
43+
group={groupQuery.data}
44+
formErrors={groupQuery.error}
45+
isLoading={groupQuery.isLoading}
46+
isUpdating={patchGroupMutation.isLoading}
4647
/>
4748
</>
4849
);

site/src/xServices/groups/editGroupXService.ts

Lines changed: 0 additions & 100 deletions
This file was deleted.

0 commit comments

Comments
 (0)