Skip to content

Commit f6ee08d

Browse files
chore(site): replace create user machine by react-query (coder#9810)
1 parent 9216725 commit f6ee08d

File tree

4 files changed

+18
-93
lines changed

4 files changed

+18
-93
lines changed

site/src/api/queries/users.ts

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ export const updatePassword = () => {
1111
};
1212
};
1313

14+
export const createUser = () => {
15+
return {
16+
mutationFn: API.createUser,
17+
};
18+
};
19+
1420
export const createFirstUser = () => {
1521
return {
1622
mutationFn: API.createFirstUser,

site/src/pages/CreateUserPage/CreateUserPage.test.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {
66
renderWithAuth,
77
waitForLoaderToBeRemoved,
88
} from "testHelpers/renderHelpers";
9-
import { Language as CreateUserLanguage } from "xServices/users/createUserXService";
109
import { CreateUserPage } from "./CreateUserPage";
1110

1211
const renderCreateUserPage = async () => {
@@ -47,7 +46,7 @@ describe("Create User Page", () => {
4746
await renderCreateUserPage();
4847
await fillForm({});
4948
const successMessage = await screen.findByText(
50-
CreateUserLanguage.createUserSuccess,
49+
"Successfully created user.",
5150
);
5251
expect(successMessage).toBeDefined();
5352
});

site/src/pages/CreateUserPage/CreateUserPage.tsx

+11-19
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import { useMachine } from "@xstate/react";
21
import { useOrganizationId } from "hooks/useOrganizationId";
32
import { FC } from "react";
43
import { Helmet } from "react-helmet-async";
54
import { useNavigate } from "react-router-dom";
6-
import { createUserMachine } from "xServices/users/createUserXService";
7-
import * as TypesGen from "api/typesGenerated";
85
import { CreateUserForm } from "./CreateUserForm";
96
import { Margins } from "components/Margins/Margins";
107
import { pageTitle } from "utils/page";
118
import { getAuthMethods } from "api/api";
12-
import { useQuery } from "@tanstack/react-query";
9+
import { useMutation, useQuery } from "@tanstack/react-query";
10+
import { createUser } from "api/queries/users";
11+
import { displaySuccess } from "components/GlobalSnackbar/utils";
1312

1413
export const Language = {
1514
unknownError: "Oops, an unknown error occurred.",
@@ -18,15 +17,7 @@ export const Language = {
1817
export const CreateUserPage: FC = () => {
1918
const myOrgId = useOrganizationId();
2019
const navigate = useNavigate();
21-
const [createUserState, createUserSend] = useMachine(createUserMachine, {
22-
actions: {
23-
redirectToUsersPage: () => {
24-
navigate("/users");
25-
},
26-
},
27-
});
28-
const { error } = createUserState.context;
29-
20+
const createUserMutation = useMutation(createUser());
3021
// TODO: We should probably place this somewhere else to reduce the number of calls.
3122
// This would be called each time this page is loaded.
3223
const { data: authMethods } = useQuery({
@@ -41,16 +32,17 @@ export const CreateUserPage: FC = () => {
4132
</Helmet>
4233

4334
<CreateUserForm
44-
error={error}
35+
error={createUserMutation.error}
4536
authMethods={authMethods}
46-
onSubmit={(user: TypesGen.CreateUserRequest) =>
47-
createUserSend({ type: "CREATE", user })
48-
}
37+
onSubmit={async (user) => {
38+
await createUserMutation.mutateAsync(user);
39+
displaySuccess("Successfully created user.");
40+
navigate("/users");
41+
}}
4942
onCancel={() => {
50-
createUserSend("CANCEL_CREATE_USER");
5143
navigate("/users");
5244
}}
53-
isLoading={createUserState.hasTag("loading")}
45+
isLoading={createUserMutation.isLoading}
5446
myOrgId={myOrgId}
5547
/>
5648
</Margins>

site/src/xServices/users/createUserXService.ts

-72
This file was deleted.

0 commit comments

Comments
 (0)