import { useAdminReturnReasons } from "medusa-react" import { useState } from "react" import { useTranslation } from "react-i18next" import BackButton from "../../../components/atoms/back-button" import Spinner from "../../../components/atoms/spinner" import PlusIcon from "../../../components/fundamentals/icons/plus-icon" import BodyCard from "../../../components/organisms/body-card" import RadioGroup from "../../../components/organisms/radio-group" import TwoSplitPane from "../../../components/templates/two-split-pane" import useModal from "../../../hooks/use-toggle-state" import CreateReturnReasonModal from "./create-reason-modal" import ReturnReasonDetail from "./detail" const ReturnReasons = () => { const { state: isOpen, open, close } = useModal() const [selectedReason, setSelectedReason] = useState(null) const { t } = useTranslation() const { isLoading, return_reasons } = useAdminReturnReasons({ onSuccess: (data) => { // sorting is done in place sortByCreatedAt(data.return_reasons) const newReturnReasons = data.return_reasons // if this is the first time we fetch this list // or if this is a refetch after a deletion // then set the first element as the selected reason if (!selectedReason || isADeletion(return_reasons, newReturnReasons)) { setSelectedReason(newReturnReasons[0]) } }, }) return (
), onClick: open, }, ]} subtitle={t( "return-reasons-manage-reasons-for-returned-items", "Manage reasons for returned items" )} >
{isLoading ? (
) : ( setSelectedReason(findReasonByValue(return_reasons, value)) } value={selectedReason?.value} > {return_reasons?.map((reason) => ( ))} )}
{selectedReason && }
{isOpen && }
) } const isADeletion = (returnReasons, newReturnReasons) => returnReasons && returnReasons?.length > newReturnReasons?.length const sortByCreatedAt = >(returnReasons: T[]) => returnReasons?.sort((a, b) => (a.created_at < b.created_at ? -1 : 1)) const findReasonByValue = (reasons, value) => { return reasons.find((reason) => reason.value === value) } export default ReturnReasons