@@ -86,6 +86,30 @@ const getInitialRequests = (requests, requiredMountPoints) => {
86
86
return [ ...requiredRequests , ...extraRequests ] ;
87
87
} ;
88
88
89
+ /* Check validity of the requests array
90
+ * @param {Array } requests - partitioning requests
91
+ * @deviceData {Object} deviceData - device data
92
+ * @returns {boolean }
93
+ */
94
+ const getRequestsValid = ( requests , deviceData ) => {
95
+ const checkValidRequest = r => {
96
+ return (
97
+ r [ "mount-point" ] &&
98
+ r [ "device-spec" ] &&
99
+ ! isReformatInvalid ( deviceData , r , requests ) [ 0 ]
100
+ ) ;
101
+ } ;
102
+
103
+ /* When requests change check for duplicate mount point or device assignments and update form validity */
104
+ const isFormValid = (
105
+ ! hasDuplicateFields ( requests , "mount-point" ) &&
106
+ ! hasDuplicateFields ( requests , "device-spec" ) &&
107
+ requests . every ( checkValidRequest )
108
+ ) ;
109
+
110
+ return isFormValid ;
111
+ } ;
112
+
89
113
const isReformatInvalid = ( deviceData , request , requests ) => {
90
114
const device = request [ "device-spec" ] ;
91
115
@@ -477,7 +501,9 @@ const RequestsTable = ({
477
501
478
502
const initialRequests = getInitialRequests ( requests , requiredMountPoints ) ;
479
503
setUnappliedRequests ( initialRequests ) ;
480
- } , [ partitioningDataPath , requests , requiredMountPoints ] ) ;
504
+
505
+ setIsFormValid ( getRequestsValid ( initialRequests , deviceData ) ) ;
506
+ } , [ deviceData , setIsFormValid , partitioningDataPath , requests , requiredMountPoints ] ) ;
481
507
482
508
const handleRequestChange = useCallback ( ( { mountPoint, deviceSpec, requestIndex, reformat, remove } ) => {
483
509
const newRequests = [ ...unappliedRequests ] ;
@@ -499,22 +525,7 @@ const RequestsTable = ({
499
525
}
500
526
}
501
527
502
- const checkValidRequest = r => {
503
- return (
504
- r [ "mount-point" ] &&
505
- r [ "device-spec" ] &&
506
- ! isReformatInvalid ( deviceData , r , newRequests ) [ 0 ]
507
- ) ;
508
- } ;
509
-
510
- /* When requests change check for duplicate mount point or device assignments and update form validity */
511
- const isFormValid = (
512
- ! hasDuplicateFields ( newRequests , "mount-point" ) &&
513
- ! hasDuplicateFields ( newRequests , "device-spec" ) &&
514
- newRequests . every ( checkValidRequest )
515
- ) ;
516
-
517
- setIsFormValid ( isFormValid ) ;
528
+ setIsFormValid ( getRequestsValid ( newRequests , deviceData ) ) ;
518
529
519
530
/* Sync newRequests to the backend */
520
531
updatePartitioningRequests ( {
0 commit comments