import { AdminPostOrdersOrderSwapsReq, Order, ProductVariant, ReturnReason, StockLocationDTO, } from "@medusajs/medusa" import { useAdminStockLocations } from "medusa-react" import { useAdminCreateSwap, useAdminOrder, useAdminShippingOptions, } from "medusa-react" import React, { useContext, useEffect, useMemo, useState } from "react" import { useTranslation } from "react-i18next" import Spinner from "../../../../components/atoms/spinner" import Button from "../../../../components/fundamentals/button" import CheckIcon from "../../../../components/fundamentals/icons/check-icon" import IconTooltip from "../../../../components/molecules/icon-tooltip" import Modal from "../../../../components/molecules/modal" import LayeredModal, { LayeredModalContext, } from "../../../../components/molecules/modal/layered-modal" import RMAShippingPrice from "../../../../components/molecules/rma-select-shipping" import Select from "../../../../components/molecules/select" import RMAReturnProductsTable from "../../../../components/organisms/rma-return-product-table" import RMASelectProductTable from "../../../../components/organisms/rma-select-product-table" import useNotification from "../../../../hooks/use-notification" import { useFeatureFlag } from "../../../../providers/feature-flag-provider" import { Option } from "../../../../types/shared" import { getErrorMessage } from "../../../../utils/error-messages" import { formatAmountWithSymbol } from "../../../../utils/prices" import RMASelectProductSubModal from "../rma-sub-modals/products" import { getAllReturnableItems } from "../utils/create-filtering" type SwapMenuProps = { order: Omit onDismiss: () => void } type ReturnRecord = Record< string, { images: string[] note: string quantity: number reason: { label: string value: ReturnReason } | null } > type SelectProduct = Omit const SwapMenu: React.FC = ({ order, onDismiss }) => { const { t } = useTranslation() const { refetch } = useAdminOrder(order.id) const { mutate, isLoading } = useAdminCreateSwap(order.id) const layeredModalContext = useContext(LayeredModalContext) const [toReturn, setToReturn] = useState({}) const [useCustomShippingPrice, setUseCustomShippingPrice] = useState(false) const [itemsToAdd, setItemsToAdd] = useState([]) const [shippingMethod, setShippingMethod] = useState