import { useMemo, useState } from "react" import { Route, Routes, useNavigate } from "react-router-dom" import { useTranslation } from "react-i18next" import { useAdminCreateBatchJob } from "medusa-react" import Spacer from "../../components/atoms/spacer" import RouteContainer from "../../components/extensions/route-container" import WidgetContainer from "../../components/extensions/widget-container" import Button from "../../components/fundamentals/button" import ExportIcon from "../../components/fundamentals/icons/export-icon" import BodyCard from "../../components/organisms/body-card" import TableViewHeader from "../../components/organisms/custom-table-header" import ExportModal from "../../components/organisms/export-modal" import OrderTable from "../../components/templates/order-table" import useNotification from "../../hooks/use-notification" import useToggleState from "../../hooks/use-toggle-state" import { usePolling } from "../../providers/polling-provider" import { useRoutes } from "../../providers/route-provider" import { useWidgets } from "../../providers/widget-provider" import { getErrorMessage } from "../../utils/error-messages" import Details from "./details" import { transformFiltersAsExportContext } from "./utils" const VIEWS = ["orders", "drafts"] const OrderIndex = () => { const view = "orders" const { t } = useTranslation() const { resetInterval } = usePolling() const navigate = useNavigate() const createBatchJob = useAdminCreateBatchJob() const notification = useNotification() const [contextFilters, setContextFilters] = useState>() const { open: openExportModal, close: closeExportModal, state: exportModalOpen, } = useToggleState(false) const { getWidgets } = useWidgets() const actions = useMemo(() => { return [ , ] }, [view]) const handleCreateExport = () => { const reqObj = { dry_run: false, type: "order-export", context: contextFilters ? transformFiltersAsExportContext(contextFilters) : {}, } createBatchJob.mutate(reqObj, { onSuccess: () => { resetInterval() notification( t("orders-success", "Success"), t( "orders-successfully-initiated-export", "Successfully initiated export" ), "success" ) }, onError: (err) => { notification(t("orders-error", "Error"), getErrorMessage(err), "error") }, }) closeExportModal() } return ( <>
{getWidgets("order.list.before").map((w, i) => { return ( ) })}
{ if (v === "drafts") { navigate(`/a/draft-orders`) } }} activeView={view} /> } className="h-fit" customActionable={actions} >
{getWidgets("order.list.after").map((w, i) => { return ( ) })}
{exportModalOpen && ( closeExportModal()} onSubmit={handleCreateExport} loading={createBatchJob.isLoading} /> )} ) } const Orders = () => { const { getNestedRoutes } = useRoutes() const nestedRoutes = getNestedRoutes("/products") return ( } /> } /> {nestedRoutes.map((r, i) => { return ( } /> ) })} ) } export default Orders