1
1
import { assign , createMachine } from "xstate"
2
2
import * as API from "../../api/api"
3
- import { ApiError , FieldErrors , getErrorMessage , isApiError , mapApiErrorToFieldErrors } from "../../api/errors"
3
+ import {
4
+ ApiError ,
5
+ FieldErrors ,
6
+ getErrorMessage ,
7
+ hasApiFieldErrors ,
8
+ isApiError ,
9
+ mapApiErrorToFieldErrors ,
10
+ } from "../../api/errors"
4
11
import * as TypesGen from "../../api/typesGenerated"
5
12
import { displayError , displaySuccess } from "../../components/GlobalSnackbar/utils"
6
13
import { generateRandomString } from "../../util/random"
7
14
8
15
export const Language = {
9
16
createUserSuccess : "Successfully created user." ,
17
+ createUserError : "Error on creating the user." ,
10
18
suspendUserSuccess : "Successfully suspended the user." ,
11
- suspendUserError : "Error on suspend the user." ,
19
+ suspendUserError : "Error on suspending the user." ,
12
20
resetUserPasswordSuccess : "Successfully updated the user password." ,
13
- resetUserPasswordError : "Error on reset the user password." ,
21
+ resetUserPasswordError : "Error on resetting the user password." ,
14
22
updateUserRolesSuccess : "Successfully updated the user roles." ,
15
- updateUserRolesError : "Error on update the user roles." ,
23
+ updateUserRolesError : "Error on updating the user roles." ,
16
24
}
17
25
18
26
export interface UsersContext {
19
27
// Get users
20
28
users ?: TypesGen . User [ ]
21
29
getUsersError ?: Error | unknown
22
- createUserError ?: Error | unknown
30
+ createUserErrorMessage ?: string
23
31
createUserFormErrors ?: FieldErrors
24
32
// Suspend user
25
33
userIdToSuspend ?: TypesGen . User [ "id" ]
@@ -122,7 +130,7 @@ export const usersMachine = createMachine(
122
130
onError : [
123
131
{
124
132
target : "idle" ,
125
- cond : "isFormError " ,
133
+ cond : "hasFieldErrors " ,
126
134
actions : [ "assignCreateUserFormErrors" ] ,
127
135
} ,
128
136
{
@@ -235,7 +243,7 @@ export const usersMachine = createMachine(
235
243
} ,
236
244
} ,
237
245
guards : {
238
- isFormError : ( _ , event ) => isApiError ( event . data ) ,
246
+ hasFieldErrors : ( _ , event ) => isApiError ( event . data ) && hasApiFieldErrors ( event . data ) ,
239
247
} ,
240
248
actions : {
241
249
assignUsers : assign ( {
@@ -258,7 +266,7 @@ export const usersMachine = createMachine(
258
266
getUsersError : undefined ,
259
267
} ) ) ,
260
268
assignCreateUserError : assign ( {
261
- createUserError : ( _ , event ) => event . data ,
269
+ createUserErrorMessage : ( _ , event ) => getErrorMessage ( event . data , Language . createUserError ) ,
262
270
} ) ,
263
271
assignCreateUserFormErrors : assign ( {
264
272
// the guard ensures it is ApiError
0 commit comments