@@ -8,6 +8,31 @@ import * as lmsActions from 'data/services/lms/hooks/actions';
8
8
import * as routingHooks from './routing' ;
9
9
10
10
export const hooks = {
11
+ useIsTrainingSelectionValid : ( ) => {
12
+ const assessment = reduxHooks . useFormFields ( ) ;
13
+ const expected = ( lmsSelectors . useStepInfo ( ) ?. studentTraining || { } ) . expectedRubricSelections ;
14
+ if ( ! expected || ! assessment ) {
15
+ return true ;
16
+ }
17
+ return assessment . criteria . every (
18
+ ( criterion , criterionIndex ) => `${ expected [ criterionIndex ] } ` === criterion . selectedOption ,
19
+ ) ;
20
+ } ,
21
+
22
+ useInitializeAssessment : ( ) => {
23
+ const emptyRubric = lmsSelectors . useEmptyRubric ( ) ;
24
+ const setFormFields = reduxHooks . useSetFormFields ( ) ;
25
+ const setResponse = reduxHooks . useSetResponse ( ) ;
26
+ const response = lmsSelectors . useResponseData ( ) ;
27
+ React . useEffect ( ( ) => {
28
+ setResponse ( response ) ;
29
+ } , [ ] ) ; // eslint-disable-line react-hooks/exhaustive-deps
30
+
31
+ return React . useCallback ( ( ) => {
32
+ setFormFields ( emptyRubric ) ;
33
+ } , [ ] ) ; // eslint-disable-line react-hooks/exhaustive-deps
34
+ } ,
35
+
11
36
useIsCriterionFeedbackInvalid : ( ) => {
12
37
const viewStep = routingHooks . useViewStep ( ) ;
13
38
const criteriaConfig = lmsSelectors . useCriteriaConfig ( ) ;
@@ -19,13 +44,10 @@ export const hooks = {
19
44
} ;
20
45
} ,
21
46
22
- useTrainingOptionValidity : ( criterionIndex ) => {
23
- const value = reduxHooks . useCriterionOption ( criterionIndex ) ;
24
- const expected = ( lmsSelectors . useStepInfo ( ) . studentTraining || { } ) . expectedRubricSelections ;
25
- if ( ! value || ! expected || expected [ criterionIndex ] === null ) {
26
- return null ;
27
- }
28
- return `${ expected [ criterionIndex ] } ` === value ? 'valid' : 'invalid' ;
47
+ useOverallFeedbackFormFields : ( ) => {
48
+ const value = reduxHooks . useOverallFeedbackValue ( ) ;
49
+ const setFeedback = reduxHooks . useSetOverallFeedback ( ) ;
50
+ return { value, onChange : ( e ) => setFeedback ( e . target . value ) } ;
29
51
} ,
30
52
31
53
useResetAssessment : ( ) => {
@@ -38,40 +60,26 @@ export const hooks = {
38
60
} ;
39
61
} ,
40
62
41
- useOverallFeedbackFormFields : ( ) => {
42
- const value = reduxHooks . useOverallFeedbackValue ( ) ;
43
- const setFeedback = reduxHooks . useSetOverallFeedback ( ) ;
44
- return { value, onChange : ( e ) => setFeedback ( e . target . value ) } ;
45
- } ,
46
-
47
- useCheckTrainingSelection : ( ) => {
48
- const assessment = reduxHooks . useFormFields ( ) ;
63
+ useTrainingOptionValidity : ( criterionIndex ) => {
64
+ const value = reduxHooks . useCriterionOption ( criterionIndex ) ;
49
65
const expected = ( lmsSelectors . useStepInfo ( ) . studentTraining || { } ) . expectedRubricSelections ;
50
- if ( ! expected || ! assessment ) {
51
- return true ;
66
+ if ( ! value || ! expected || expected [ criterionIndex ] === null ) {
67
+ return null ;
52
68
}
53
- return assessment . criteria . every (
54
- ( criterion , criterionIndex ) => (
55
- ! expected || `${ expected [ criterionIndex ] } ` === criterion . selectedOption
56
- ) ,
57
- ) ;
58
- } ,
59
-
60
- useInitializeAssessment : ( ) => {
61
- const emptyRubric = lmsSelectors . useEmptyRubric ( ) ;
62
- const setFormFields = reduxHooks . useSetFormFields ( ) ;
63
- const setResponse = reduxHooks . useSetResponse ( ) ;
64
- const response = lmsSelectors . useResponseData ( ) ;
65
- React . useEffect ( ( ) => {
66
- setResponse ( response ) ;
67
- } , [ ] ) ; // eslint-disable-line react-hooks/exhaustive-deps
68
-
69
- return React . useCallback ( ( ) => {
70
- setFormFields ( emptyRubric ) ;
71
- } , [ ] ) ; // eslint-disable-line react-hooks/exhaustive-deps
69
+ return `${ expected [ criterionIndex ] } ` === value ? 'valid' : 'invalid' ;
72
70
} ,
73
71
} ;
72
+
74
73
Object . assign ( hooks , {
74
+ useCriterionFeedbackFormFields : ( criterionIndex ) => {
75
+ const value = reduxHooks . useCriterionFeedback ( criterionIndex ) ;
76
+ const setFeedback = reduxHooks . useSetCriterionFeedback ( criterionIndex ) ;
77
+ const isInvalid = hooks . useIsCriterionFeedbackInvalid ( ) ( {
78
+ value, criterionIndex,
79
+ } ) ;
80
+ return { value, onChange : ( e ) => setFeedback ( e . target . value ) , isInvalid } ;
81
+ } ,
82
+
75
83
useCriterionOptionFormFields : ( criterionIndex ) => {
76
84
const value = reduxHooks . useCriterionOption ( criterionIndex ) ;
77
85
const setOption = reduxHooks . useSetCriterionOption ( criterionIndex ) ;
@@ -93,15 +101,6 @@ Object.assign(hooks, {
93
101
} ;
94
102
} ,
95
103
96
- useCriterionFeedbackFormFields : ( criterionIndex ) => {
97
- const value = reduxHooks . useCriterionFeedback ( criterionIndex ) ;
98
- const setFeedback = reduxHooks . useSetCriterionFeedback ( criterionIndex ) ;
99
- const isInvalid = hooks . useIsCriterionFeedbackInvalid ( ) ( {
100
- value, criterionIndex,
101
- } ) ;
102
- return { value, onChange : ( e ) => setFeedback ( e . target . value ) , isInvalid } ;
103
- } ,
104
-
105
104
useIsAssessmentInvalid : ( ) => {
106
105
const assessment = reduxHooks . useFormFields ( ) ;
107
106
const criteriaConfig = lmsSelectors . useCriteriaConfig ( ) ;
@@ -129,7 +128,7 @@ Object.assign(hooks, {
129
128
const setHasSubmitted = reduxHooks . useSetHasSubmitted ( ) ;
130
129
131
130
const isInvalid = hooks . useIsAssessmentInvalid ( ) ;
132
- const checkTrainingSelection = hooks . useCheckTrainingSelection ( ) ;
131
+ const isTrainingSelectionValid = hooks . useIsTrainingSelectionValid ( ) ;
133
132
134
133
const viewStep = routingHooks . useViewStep ( ) ;
135
134
const formFields = reduxHooks . useFormFields ( ) ;
@@ -140,7 +139,7 @@ Object.assign(hooks, {
140
139
if ( isInvalid ) {
141
140
return setShowValidation ( true ) ;
142
141
}
143
- if ( viewStep === stepNames . studentTraining && ! checkTrainingSelection ) {
142
+ if ( viewStep === stepNames . studentTraining && ! isTrainingSelectionValid ) {
144
143
return setShowTrainingError ( true ) ;
145
144
}
146
145
return submitAssessmentMutation . mutateAsync ( {
@@ -155,7 +154,7 @@ Object.assign(hooks, {
155
154
formFields ,
156
155
isInvalid ,
157
156
setShowValidation ,
158
- checkTrainingSelection ,
157
+ isTrainingSelectionValid ,
159
158
submitAssessmentMutation ,
160
159
setAssessment ,
161
160
setShowTrainingError ,
@@ -174,6 +173,7 @@ export const {
174
173
useCriterionOptionFormFields,
175
174
useCriterionFeedbackFormFields,
176
175
useIsAssessmentInvalid,
176
+ useIsTrainingSelectionValid,
177
177
useOnSubmit,
178
178
} = hooks ;
179
179
0 commit comments