11const App = ( ) => {
22
3+ const [ waiting , setWaiting ] = React . useState ( true )
4+
35 const [ roles , setRoles ] = React . useState ( [ ] )
6+ const [ user , setUser ] = React . useState ( )
47
58 const findAllRoles = React . useCallback ( async ( ) => {
69 const { data : roles } = await axios
7- . get ( 'app/roles' ) ;
10+ . get ( 'app/json/ roles' ) ;
811
912 setRoles ( roles ) ;
1013 } , [ ] ) ;
1114
15+ const findUser = React . useCallback ( async ( ) => {
16+ const id = Number ( window . location . pathname . split ( '/' ) . pop ( ) )
17+
18+ if ( Number . isSafeInteger ( Number ( id ) ) ) {
19+ const { data : user } = await axios
20+ . get ( `app/json/user/${ id } ` ) ;
21+
22+ setUser ( user ) ;
23+ return ;
24+ }
25+
26+ setUser ( {
27+ id : null ,
28+ name : "" ,
29+ email : "" ,
30+ roles : [ ]
31+ } )
32+ } , [ ] ) ;
33+
34+ const fetch = React . useCallback ( async ( ) => {
35+ await Promise . all ( [ findUser ( ) , findAllRoles ( ) ] ) ;
36+ setWaiting ( false ) ;
37+ } , [ ] ) ;
38+
1239
1340 React . useEffect ( ( ) => {
14- findAllRoles ( ) ;
41+ fetch ( ) ;
1542 } , [ ] )
1643
17-
18- return (
44+ return ! waiting && (
1945 < div className = "col-md-4 shadow-sm p-3 mb-5 bg-body rounded" >
46+ < pre >
47+ { JSON . stringify ( user , undefined , 4 ) }
48+ </ pre >
2049 < div className = "row" >
2150 < div className = "col-md-12" >
2251 < div className = "form-group" >
@@ -32,7 +61,12 @@ const App = () => {
3261 required
3362 name = "name"
3463 type = "text"
64+ value = { user . name }
3565 className = "form-control form-control-sm"
66+ onChange = { ( { target : { value } } ) => setUser ( {
67+ ...user ,
68+ name : value
69+ } ) }
3670 />
3771 </ div >
3872 </ div >
@@ -47,10 +81,15 @@ const App = () => {
4781 </ small >
4882 </ label >
4983 < input
84+ required
5085 name = "email"
5186 type = "email"
87+ value = { user . email }
5288 className = "form-control form-control-sm"
53- required
89+ onChange = { ( { target : { value } } ) => setUser ( {
90+ ...user ,
91+ email : value
92+ } ) }
5493 />
5594
5695 < div className = "invalid-feedback" >
@@ -73,8 +112,8 @@ const App = () => {
73112 className = "form-select form-select-sm"
74113 >
75114 < option value = "" > Selecione</ option >
76- { roles . map ( ( { id, name } ) => (
77- < option value = { id } > { name } </ option >
115+ { roles . map ( ( { id, name, initials } ) => (
116+ < option selected = { user . roles [ 0 ] == initials } value = { id } > { name } </ option >
78117 ) ) }
79118 </ select >
80119
0 commit comments