Move error type predicate to xservice

This commit is contained in:
Presley
2022-04-27 02:43:33 +00:00
parent 6a490c2ee6
commit 7d98c13175
2 changed files with 26 additions and 12 deletions

View File

@ -1,7 +1,6 @@
import { useActor } from "@xstate/react"
import React, { useContext } from "react"
import { useNavigate } from "react-router"
import { isApiError, mapApiErrorToFieldErrors } from "../../../api/errors"
import { CreateUserRequest } from "../../../api/typesGenerated"
import { CreateUserForm } from "../../../components/CreateUserForm/CreateUserForm"
import { XServiceContext } from "../../../xServices/StateContext"
@ -13,19 +12,18 @@ export const Language = {
export const CreateUserPage = () => {
const xServices = useContext(XServiceContext)
const [usersState, usersSend] = useActor(xServices.usersXService)
const { createUserError } = usersState.context
const apiError = isApiError(createUserError)
const formErrors = apiError ? mapApiErrorToFieldErrors(createUserError.response.data) : undefined
const hasUnknownError = createUserError && !apiError
const { createUserError, createUserFormErrors } = usersState.context
const navigate = useNavigate()
// There is no field for organization id in Community Edition, so handle its field error like a generic error
const genericError = (createUserError || createUserFormErrors?.organization_id) ? Language.unknownError : undefined
return (
<CreateUserForm
formErrors={formErrors}
formErrors={createUserFormErrors}
onSubmit={(user: CreateUserRequest) => usersSend({ type: "CREATE", user })}
onCancel={() => navigate("/users")}
isLoading={usersState.hasTag("loading")}
error={hasUnknownError ? Language.unknownError : undefined}
error={genericError}
/>
)
}