@@ -22,8 +22,7 @@ import Alert from '@material-ui/lab/Alert';
22
22
23
23
import { forwardRef } from 'react' ;
24
24
import MaterialTable from "material-table" ;
25
- import { _all_users } from './adminService' ;
26
- import { withTheme } from '@material-ui/core' ;
25
+ import { _all_users , _update_user } from './adminService' ;
27
26
28
27
29
28
const tableIcons = {
@@ -54,36 +53,76 @@ function Users() {
54
53
{ title : "Username" , field : "username" , editable : false } ,
55
54
{ title : "Email" , field : "email" , editable : false } ,
56
55
{ title : "Joined" , field : "created_at" , type : "datetime" , editable : false } ,
57
- { title : "Role" , field : "role" , editable : false ,
56
+ // {title: "PRs Submitted", field: "role", editable: false },
57
+ { title : "Role" , field : "role" , editable : false ,
58
58
render : ( rowData ) => < div
59
59
className = { rowData . role === 'user' ? 'user_styled' : 'admin_styled' } >
60
60
{ rowData . role === 'user' ? ' User' : 'Admin' }
61
61
</ div >
62
62
63
63
} ,
64
- // {title: "PR Submitted ", field: "role", editable: false },
64
+ { title : "Admin Access " , field : "role" , lookup : { user : "Not Granted" , admin : "Granted" } } ,
65
65
66
66
]
67
67
68
68
const [ data , setData ] = useState ( [ ] ) ;
69
69
const [ iserror , setIserror ] = useState ( false ) ;
70
+ const [ issuccess , setIssuccess ] = useState ( false ) ;
70
71
const [ errorMessages , setErrorMessages ] = useState ( [ ] ) ;
72
+ const [ successMessages , setSuccessErrorMessages ] = useState ( [ ] ) ;
71
73
72
74
73
75
74
76
useEffect ( ( ) => {
75
77
_all_users ( )
76
78
. then ( res => {
77
- console . log ( res )
79
+ // console.log(res)
78
80
var resp = res . data . data [ 0 ] . data ;
79
81
setData ( resp ) ;
80
82
} )
81
83
. catch ( error => {
82
- console . log ( error )
84
+ // console.log(error)
83
85
setErrorMessages ( [ "Cannot load users data" ] )
84
86
setIserror ( true )
85
87
} )
86
88
} , [ ] )
89
+
90
+ const handleRowUpdate = ( newData , oldData , resolve ) => {
91
+ let errorList = [ ]
92
+ // console.log('we here')
93
+ if ( errorList . length < 1 ) {
94
+ // console.log(newData._id)
95
+ _update_user ( newData . _id , newData )
96
+ // console.log('00000', newData._id)
97
+ . then ( res => {
98
+ // console.log('went')
99
+ // console.log(res)
100
+ const dataUpdate = [ ...data ]
101
+ const index = oldData . tableData . _id ;
102
+ dataUpdate [ index ] = newData ;
103
+ setData ( [ ...dataUpdate ] ) ;
104
+ resolve ( )
105
+ setSuccessErrorMessages ( [ `${ newData . username } 's role updated sucessfully` ] )
106
+ setIssuccess ( true )
107
+ setIserror ( false )
108
+ setErrorMessages ( [ ] )
109
+ window . location . reload ( false ) ;
110
+ } )
111
+ . catch ( error => {
112
+ console . log ( 'didnt went' )
113
+ console . log ( error )
114
+ setErrorMessages ( [ "Update failed!" ] )
115
+ setIserror ( true )
116
+ setIssuccess ( false )
117
+ resolve ( )
118
+ } )
119
+ } else {
120
+ // console.log('ok')
121
+ setErrorMessages ( errorList )
122
+ setIserror ( true )
123
+ resolve ( )
124
+ }
125
+ }
87
126
88
127
89
128
return (
@@ -100,6 +139,16 @@ function Users() {
100
139
</ Alert >
101
140
}
102
141
</ div >
142
+ < div >
143
+ { issuccess &&
144
+ < Alert severity = "success" >
145
+ { successMessages }
146
+ { /* {errorMessages.map((msg, i) => {
147
+ return <div key={i}>{msg}</div>
148
+ }) } */ }
149
+ </ Alert >
150
+ }
151
+ </ div >
103
152
< div className = "contribution-cards admin-cards" >
104
153
< MaterialTable
105
154
title = "Registered users"
@@ -126,6 +175,12 @@ function Users() {
126
175
fontWeight : 'bolder' ,
127
176
}
128
177
} }
178
+ editable = { {
179
+ onRowUpdate : ( newData , oldData ) =>
180
+ new Promise ( ( resolve ) => {
181
+ handleRowUpdate ( newData , oldData , resolve ) ;
182
+ } ) ,
183
+ } }
129
184
/>
130
185
131
186
</ div >
0 commit comments