burger-online
54 строки · 1.7 Кб
1import React from 'react'
2import {useSelector} from 'react-redux'
3import CardLoader from '../../components/UI/card-loader/card-loader'
4import OrderCard from '../../components/order-card/order-card'
5import {useAppDispatch} from '../../hooks'
6import {
7profileOrderConnect as connect,
8profileOrderDisconnect as disconnect,
9} from '../../redux/profile-orders/actions'
10import {profileOrderStore} from '../../redux/profile-orders/reducer'
11import {fetchCheckUser} from '../../redux/user/actions'
12import {WS_ORDERS_URL, wsStatus} from '../../utils/constants'
13import ErrorPage from '../error-page'
14import styles from './profile-orders.module.css'
15
16const ProfileOrders = () => {
17const dispatch = useAppDispatch()
18const {orders, wsStatusOrders, connectingError} = useSelector(profileOrderStore)
19const token = localStorage.getItem('access-token')?.replace('Bearer ', '')
20
21React.useEffect(() => {
22if (token) {
23dispatch(connect(`${WS_ORDERS_URL}?token=${token}`))
24} else {
25dispatch(fetchCheckUser())
26}
27return () => {
28dispatch(disconnect())
29}
30}, [dispatch, token])
31
32if (connectingError) return <ErrorPage />
33return (
34<div className={`custom-scroll ${styles.content}`}>
35{wsStatusOrders === wsStatus.connecting ? (
36[...Array(5)].map((_, i) => (
37<div key={i}>
38<CardLoader />
39</div>
40))
41) : !orders?.length ? (
42<div>
43<h1 style={{textAlign: 'center'}} className='text_type_main-large'>
44История заказов пуста
45</h1>
46</div>
47) : (
48[...orders]?.reverse().map(order => <OrderCard key={order._id} {...order} />)
49)}
50</div>
51)
52}
53
54export default ProfileOrders
55