import { useQuery } from '@apollo/client' import { PageOptions, usePageRouter } from '@graphcommerce/framer-next-pages' import { ApolloCustomerErrorFullPage } from '@graphcommerce/magento-customer' import { useOrderCardItemImages, OrderDetails, OrderItems, OrderDetailPageDocument, } from '@graphcommerce/magento-customer-order' import { CountryRegionsDocument, PageMeta, StoreConfigDocument } from '@graphcommerce/magento-store' import { IconHeader, GetStaticProps, iconBox, SheetShellHeader, Title, AppShellTitle, } from '@graphcommerce/next-ui' import { Container, NoSsr } from '@material-ui/core' import React from 'react' import SheetShell, { SheetShellProps } from '../../../components/AppShell/SheetShell' import apolloClient from '../../../lib/apolloClient' type Props = Record type GetPageStaticProps = GetStaticProps function OrderDetailPage(props: Props) { const router = usePageRouter() const { orderId } = router.query const { data, loading, error } = useQuery(OrderDetailPageDocument, { fetchPolicy: 'cache-and-network', variables: { orderNumber: orderId as string }, ssr: false, }) const images = useOrderCardItemImages(data?.customer?.orders) const order = data?.customer?.orders?.items?.[0] const isLoading = orderId ? loading : true if (loading) return
if (error) return ( ) return ( <> Order #{orderId} {(!orderId || !order) && ( )} Order #{orderId} {orderId && order && ( <> )} ) } const pageOptions: PageOptions = { overlayGroup: 'account', SharedComponent: SheetShell, } OrderDetailPage.pageOptions = pageOptions export default OrderDetailPage export const getStaticProps: GetPageStaticProps = async ({ locale }) => { const client = apolloClient(locale, true) const staticClient = apolloClient(locale) const config = client.query({ query: StoreConfigDocument }) const countryRegions = staticClient.query({ query: CountryRegionsDocument, }) return { props: { ...(await countryRegions).data, apolloState: await config.then(() => client.cache.extract()), variant: 'bottom', size: 'max', backFallbackHref: '/account/orders', backFallbackTitle: 'Orders', }, } }