4
4
* Page for edit resource booking details.
5
5
* It gets `teamId` and `resourceBookingId` from the router.
6
6
*/
7
- import React , { useState , useEffect } from "react" ;
7
+ import React , { useState , useMemo } from "react" ;
8
8
import PT from "prop-types" ;
9
9
import _ from "lodash" ;
10
10
import { toastr } from "react-redux-toastr" ;
@@ -24,37 +24,31 @@ import "./styles.module.scss";
24
24
25
25
const ResourceBookingDetails = ( { teamId, resourceBookingId } ) => {
26
26
const [ submitting , setSubmitting ] = useState ( false ) ;
27
- const [ jobId , setJobId ] = useState ( null ) ;
28
- const [ formData , setFormData ] = useState ( null ) ;
29
27
const [ team , loadingTeamError ] = useData ( getTeamById , teamId ) ;
30
28
const [ rb , loadingError ] = useData ( getReourceBookingById , resourceBookingId ) ;
31
29
32
- useEffect ( ( ) => {
33
- if ( ! ! rb ) {
34
- setJobId ( rb . jobId ) ;
35
- }
36
- } , [ rb ] ) ;
37
-
38
- useEffect ( ( ) => {
30
+ const formData = useMemo ( ( ) => {
39
31
if ( team && rb ) {
40
32
const resource = _ . find (
41
33
team . resources ,
42
- ( r ) => r . id === resourceBookingId
34
+ { id : resourceBookingId }
43
35
) ;
44
36
45
- let job ;
46
- if ( resource . jobId ) {
47
- job = _ . find ( team . jobs , { id : resource . jobId } ) ;
48
- }
49
-
50
- const jobTitle = _ . get ( job , "title" , "<Not Assigned>" ) ;
51
-
52
37
const data = {
53
- jobTitle,
54
- ...resource ,
55
38
...rb ,
39
+ // resource inside Team object has all the member details we need
40
+ // so we can get user handle from there
41
+ handle : resource . handle ,
56
42
} ;
57
- setFormData ( data ) ;
43
+
44
+ if ( resource . jobId ) {
45
+ const job = _ . find ( team . jobs , { id : resource . jobId } ) ;
46
+ data . jobTitle = _ . get ( job , "title" , `<Not Found> ${ resource . jobId } ` ) ;
47
+ } else {
48
+ data . jobTitle = "<Not Assigned>" ;
49
+ }
50
+
51
+ return data ;
58
52
}
59
53
} , [ rb , team , resourceBookingId ] ) ;
60
54
@@ -89,25 +83,25 @@ const ResourceBookingDetails = ({ teamId, resourceBookingId }) => {
89
83
return (
90
84
< Page title = "Edit Member Details" >
91
85
{ ! formData ? (
92
- < LoadingIndicator error = { loadingError } />
86
+ < LoadingIndicator error = { loadingError || loadingTeamError } />
93
87
) : (
94
- < >
95
- < PageHeader
96
- title = "Edit Member Details"
97
- backTo = { `/taas/myteams/${ teamId } /rb/${ rb . id } ` }
98
- />
99
- < div styleName = "rb-modification-details" >
100
- < TCForm
101
- configuration = { getEditResourceBookingConfig ( onSubmit ) }
102
- initialValue = { formData }
103
- submitButton = { { text : "Save" } }
104
- backButton = { { text : "Cancel" , backTo : `/taas/myteams/${ teamId } ` } }
105
- submitting = { submitting }
106
- setSubmitting = { setSubmitting }
88
+ < >
89
+ < PageHeader
90
+ title = "Edit Member Details"
91
+ backTo = { `/taas/myteams/${ teamId } /rb/${ rb . id } ` }
107
92
/>
108
- </ div >
109
- </ >
110
- ) }
93
+ < div styleName = "rb-modification-details" >
94
+ < TCForm
95
+ configuration = { getEditResourceBookingConfig ( onSubmit ) }
96
+ initialValue = { formData }
97
+ submitButton = { { text : "Save" } }
98
+ backButton = { { text : "Cancel" , backTo : `/taas/myteams/${ teamId } ` } }
99
+ submitting = { submitting }
100
+ setSubmitting = { setSubmitting }
101
+ />
102
+ </ div >
103
+ </ >
104
+ ) }
111
105
</ Page >
112
106
) ;
113
107
} ;
0 commit comments