1- import React , { Component } from 'react'
1+ import React , { useEffect , useState } from 'react'
22import { Navigate } from 'react-router-dom'
33import { Container } from 'semantic-ui-react'
4- import AuthContext from '../context/AuthContext'
5- import { orderApi } from '../misc/OrderApi'
4+ import { useAuth } from '../context/AuthContext'
65import AdminTab from './AdminTab'
6+ import { orderApi } from '../misc/OrderApi'
77import { handleLogError } from '../misc/Helpers'
88
9- class AdminPage extends Component {
10- static contextType = AuthContext
11-
12- state = {
13- users : [ ] ,
14- orders : [ ] ,
15- orderDescription : '' ,
16- orderTextSearch : '' ,
17- userUsernameSearch : '' ,
18- isAdmin : true ,
19- isUsersLoading : false ,
20- isOrdersLoading : false ,
21- }
22-
23- componentDidMount ( ) {
24- const Auth = this . context
25- const user = Auth . getUser ( )
26- const isAdmin = user . data . rol [ 0 ] === 'ADMIN'
27- this . setState ( { isAdmin } )
28-
29- this . handleGetUsers ( )
30- this . handleGetOrders ( )
31- }
32-
33- handleInputChange = ( e , { name, value } ) => {
34- this . setState ( { [ name ] : value } )
9+ function AdminPage ( ) {
10+ const Auth = useAuth ( )
11+ const user = Auth . getUser ( )
12+
13+ const [ users , setUsers ] = useState ( [ ] )
14+ const [ orders , setOrders ] = useState ( [ ] )
15+ const [ orderDescription , setOrderDescription ] = useState ( '' )
16+ const [ orderTextSearch , setOrderTextSearch ] = useState ( '' )
17+ const [ userUsernameSearch , setUserUsernameSearch ] = useState ( '' )
18+ const [ isAdmin , setIsAdmin ] = useState ( true )
19+ const [ isUsersLoading , setIsUsersLoading ] = useState ( false )
20+ const [ isOrdersLoading , setIsOrdersLoading ] = useState ( false )
21+
22+ useEffect ( ( ) => {
23+ setIsAdmin ( user . data . rol [ 0 ] === 'ADMIN' )
24+ handleGetUsers ( )
25+ handleGetOrders ( )
26+ } , [ ] )
27+
28+ const handleInputChange = ( e , { name, value } ) => {
29+ if ( name === 'userUsernameSearch' ) {
30+ setUserUsernameSearch ( value )
31+ } else if ( name === 'orderDescription' ) {
32+ setOrderDescription ( value )
33+ } else if ( name === 'orderTextSearch' ) {
34+ setOrderTextSearch ( value )
35+ }
3536 }
3637
37- handleGetUsers = async ( ) => {
38- const user = this . context . getUser ( )
39-
40- this . setState ( { isUsersLoading : true } )
38+ const handleGetUsers = async ( ) => {
39+ setIsUsersLoading ( true )
4140 try {
4241 const response = await orderApi . getUsers ( user )
43- this . setState ( { users : response . data } )
42+ setUsers ( response . data )
4443 } catch ( error ) {
4544 handleLogError ( error )
4645 } finally {
47- this . setState ( { isUsersLoading : false } )
46+ setIsUsersLoading ( false )
4847 }
4948 }
5049
51- handleDeleteUser = async ( username ) => {
52- const user = this . context . getUser ( )
53-
50+ const handleDeleteUser = async ( username ) => {
5451 try {
5552 await orderApi . deleteUser ( user , username )
56- await this . handleGetUsers ( )
53+ handleGetUsers ( )
5754 } catch ( error ) {
5855 handleLogError ( error )
5956 }
6057 }
6158
62- handleSearchUser = async ( ) => {
63- const user = this . context . getUser ( )
64-
65- const username = this . state . userUsernameSearch
59+ const handleSearchUser = async ( ) => {
60+ const username = userUsernameSearch
6661 try {
6762 const response = await orderApi . getUsers ( user , username )
6863 const data = response . data
6964 const users = data instanceof Array ? data : [ data ]
70- this . setState ( { users } )
65+ setUsers ( users )
7166 } catch ( error ) {
7267 handleLogError ( error )
73- this . setState ( { users : [ ] } )
68+ setUsers ( [ ] )
7469 }
7570 }
7671
77- handleGetOrders = async ( ) => {
78- const user = this . context . getUser ( )
79-
80- this . setState ( { isOrdersLoading : true } )
72+ const handleGetOrders = async ( ) => {
73+ setIsOrdersLoading ( true )
8174 try {
8275 const response = await orderApi . getOrders ( user )
83- this . setState ( { orders : response . data } )
76+ setOrders ( response . data )
8477 } catch ( error ) {
8578 handleLogError ( error )
8679 } finally {
87- this . setState ( { isOrdersLoading : false } )
80+ setIsOrdersLoading ( false )
8881 }
8982 }
9083
91- handleDeleteOrder = async ( isbn ) => {
92- const user = this . context . getUser ( )
93-
84+ const handleDeleteOrder = async ( isbn ) => {
9485 try {
9586 await orderApi . deleteOrder ( user , isbn )
96- await this . handleGetOrders ( )
87+ handleGetOrders ( )
9788 } catch ( error ) {
9889 handleLogError ( error )
9990 }
10091 }
10192
102- handleCreateOrder = async ( ) => {
103- const user = this . context . getUser ( )
104-
105- let { orderDescription } = this . state
106- orderDescription = orderDescription . trim ( )
107- if ( ! orderDescription ) {
93+ const handleCreateOrder = async ( ) => {
94+ let description = orderDescription . trim ( )
95+ if ( ! description ) {
10896 return
10997 }
11098
111- const order = { description : orderDescription }
99+ const order = { description }
112100 try {
113101 await orderApi . createOrder ( user , order )
114- await this . handleGetOrders ( )
115- this . setState ( { orderDescription : '' } )
102+ handleGetOrders ( )
103+ setOrderDescription ( '' )
116104 } catch ( error ) {
117105 handleLogError ( error )
118106 }
119107 }
120108
121- handleSearchOrder = async ( ) => {
122- const user = this . context . getUser ( )
123-
124- const text = this . state . orderTextSearch
109+ const handleSearchOrder = async ( ) => {
110+ const text = orderTextSearch
125111 try {
126112 const response = await orderApi . getOrders ( user , text )
127- const orders = response . data
128- this . setState ( { orders } )
113+ setOrders ( response . data )
129114 } catch ( error ) {
130115 handleLogError ( error )
131- this . setState ( { orders : [ ] } )
116+ setOrders ( [ ] )
132117 }
133118 }
134119
135- render ( ) {
136- if ( ! this . state . isAdmin ) {
137- return < Navigate to = '/' />
138- }
139-
140- const { isUsersLoading, users, userUsernameSearch, isOrdersLoading, orders, orderDescription, orderTextSearch } = this . state
141- return (
142- < Container >
143- < AdminTab
144- isUsersLoading = { isUsersLoading }
145- users = { users }
146- userUsernameSearch = { userUsernameSearch }
147- handleDeleteUser = { this . handleDeleteUser }
148- handleSearchUser = { this . handleSearchUser }
149- isOrdersLoading = { isOrdersLoading }
150- orders = { orders }
151- orderDescription = { orderDescription }
152- orderTextSearch = { orderTextSearch }
153- handleCreateOrder = { this . handleCreateOrder }
154- handleDeleteOrder = { this . handleDeleteOrder }
155- handleSearchOrder = { this . handleSearchOrder }
156- handleInputChange = { this . handleInputChange }
157- />
158- </ Container >
159- )
120+ if ( ! isAdmin ) {
121+ return < Navigate to = '/' />
160122 }
123+
124+ return (
125+ < Container >
126+ < AdminTab
127+ isUsersLoading = { isUsersLoading }
128+ users = { users }
129+ userUsernameSearch = { userUsernameSearch }
130+ handleDeleteUser = { handleDeleteUser }
131+ handleSearchUser = { handleSearchUser }
132+ isOrdersLoading = { isOrdersLoading }
133+ orders = { orders }
134+ orderDescription = { orderDescription }
135+ orderTextSearch = { orderTextSearch }
136+ handleCreateOrder = { handleCreateOrder }
137+ handleDeleteOrder = { handleDeleteOrder }
138+ handleSearchOrder = { handleSearchOrder }
139+ handleInputChange = { handleInputChange }
140+ />
141+ </ Container >
142+ )
161143}
162144
163145export default AdminPage
0 commit comments