@@ -47,6 +47,7 @@ export interface FormErrors {
47
47
tags ?: string ;
48
48
nextReviewDate ?: string ;
49
49
assignedReviewers ?: string ;
50
+ content ?: string ;
50
51
}
51
52
52
53
const PolicyDetailModal : React . FC < Props > = ( {
@@ -89,6 +90,7 @@ const PolicyDetailModal: React.FC<Props> = ({
89
90
const validateForm = ( ) : boolean => {
90
91
const newErrors : FormErrors = { } ;
91
92
93
+ // Title validation
92
94
const policyTitle = checkStringValidation (
93
95
"Policy title" ,
94
96
formData . title ,
@@ -116,6 +118,7 @@ const PolicyDetailModal: React.FC<Props> = ({
116
118
newErrors . nextReviewDate = policyNextReviewDate . message ;
117
119
}
118
120
121
+ // Assigned reviewers validation
119
122
const policyAssignedReviewers = formData . assignedReviewers . filter (
120
123
( user ) => user . id !== undefined
121
124
) ;
@@ -129,7 +132,7 @@ const PolicyDetailModal: React.FC<Props> = ({
129
132
130
133
const [ formData , setFormData ] = useState < FormData > ( {
131
134
title : "" ,
132
- status : "Draft " ,
135
+ status : "Under Review " ,
133
136
tags : [ ] ,
134
137
nextReviewDate : "" ,
135
138
assignedReviewers : [ ] ,
@@ -155,7 +158,7 @@ const PolicyDetailModal: React.FC<Props> = ({
155
158
} else {
156
159
setFormData ( {
157
160
title : "" ,
158
- status : "Draft " ,
161
+ status : "Under Review " ,
159
162
tags : [ ] ,
160
163
nextReviewDate : "" ,
161
164
assignedReviewers : [ ] ,
@@ -219,9 +222,40 @@ const PolicyDetailModal: React.FC<Props> = ({
219
222
await updatePolicy ( policy ! . id , payload ) ;
220
223
}
221
224
onSaved ( ) ;
222
- } catch ( err ) {
225
+ } catch ( err : any ) {
223
226
// setIsSubmitting(false);
224
- console . error ( err ) ;
227
+ console . error ( "Full error object:" , err ) ;
228
+ console . error ( "Original error:" , err ?. originalError ) ;
229
+ console . error ( "Original error response:" , err ?. originalError ?. response ) ;
230
+
231
+ // Handle server validation errors - the CustomException is in originalError
232
+ const errorData = err ?. originalError ?. response || err ?. response ?. data || err ?. response ;
233
+ console . error ( "Error data:" , errorData ) ;
234
+
235
+ if ( errorData ?. errors ) {
236
+ console . error ( "Processing server errors:" , errorData . errors ) ;
237
+ const serverErrors : FormErrors = { } ;
238
+ errorData . errors . forEach ( ( error : any ) => {
239
+ console . error ( "Processing error:" , error ) ;
240
+ if ( error . field === 'title' ) {
241
+ serverErrors . title = error . message ;
242
+ } else if ( error . field === 'status' ) {
243
+ serverErrors . status = error . message ;
244
+ } else if ( error . field === 'tags' ) {
245
+ serverErrors . tags = error . message ;
246
+ } else if ( error . field === 'content_html' ) {
247
+ serverErrors . content = error . message ;
248
+ } else if ( error . field === 'next_review_date' ) {
249
+ serverErrors . nextReviewDate = error . message ;
250
+ } else if ( error . field === 'assigned_reviewer_ids' ) {
251
+ serverErrors . assignedReviewers = error . message ;
252
+ }
253
+ } ) ;
254
+ console . error ( "Setting server errors:" , serverErrors ) ;
255
+ setErrors ( serverErrors ) ;
256
+ } else {
257
+ console . error ( "No errors found in response" ) ;
258
+ }
225
259
}
226
260
} ;
227
261
@@ -455,6 +489,19 @@ const PolicyDetailModal: React.FC<Props> = ({
455
489
placeholder = "Start typing..."
456
490
/>
457
491
</ Plate >
492
+ { errors . content && (
493
+ < Typography
494
+ component = "span"
495
+ color = { theme . palette . status ?. error ?. text || theme . palette . error . main }
496
+ sx = { {
497
+ opacity : 0.8 ,
498
+ fontSize : 11 ,
499
+ mt : 1 ,
500
+ } }
501
+ >
502
+ { errors . content }
503
+ </ Typography >
504
+ ) }
458
505
</ Stack >
459
506
</ Stack >
460
507
0 commit comments