import React, { useState, useEffect, useCallback, useMemo, useRef } from 'react' import { Table, Thead, Th, Tbody, Tr, Td, Heading, Text, Stack, Skeleton, Box, Tag, VisuallyHidden } from '@chakra-ui/react' import { Link } from 'react-router-dom' import moment from 'moment' import { Order } from 'Order'; import { useOrders } from 'hooks'; import { OrderDatePicker, OrderSearchBar, OrderStatusMenu, tagColorMap } from './index' const OrderRow = ({ order: { id, orderTrackingCode, orderStatus, orderCreatedAt, orderUpdatedAt, customerEmailAddress, orderItems } }: { order: Order }) => { return ( {id} {orderStatus} {orderItems.length} item{orderItems.length > 1 && "s"} {customerEmailAddress} {moment(orderUpdatedAt).calendar()} {moment(orderCreatedAt).calendar()} {orderTrackingCode} ) } const OrdersPage = () => { const { status, orders, error, ResStatus, pagFilters, setPagFilters, dateFilters, setDateFilters, searchFilters, setSearchFilters, statusFilters, setStatusFilters } = useOrders() const tableHeaders = ['Order #', 'Status', 'Item Count', 'Customer email', 'Updated at', 'Created at', 'Tracking #'] const isLoading = useMemo(() => status === ResStatus.FETCHING, [status]) const $loader = useRef(); // const handleObserver = (entities: any) => { // const target = entities[0]; // if (target.isIntersecting && !isLoading) { // setPagFilters((prev: any) => ({...prev, page: prev.page + 1})) // } // } // useEffect(() => { // var options = { // root: null, // rootMargin: "20px", // threshold: 1.0 // }; // // initialize IntersectionObserver // // and attaching to Load More div // const observer = new IntersectionObserver(handleObserver, options); // if ($loader.current) { // observer.observe($loader.current) // } // }, []); return (
Orders
{tableHeaders.map((headerText, idx) => ( ))} {orders.map(order => )}
{headerText}
) } export default OrdersPage