import { Product } from "@medusajs/medusa"
import {
useAdminDeleteProduct,
useAdminProducts,
useAdminStore,
useAdminUpdateProduct,
} from "medusa-react"
import { useMemo, useState } from "react"
import { useNavigate } from "react-router-dom"
import { useTranslation } from "react-i18next"
import PageDescription from "../../components/atoms/page-description"
import Spacer from "../../components/atoms/spacer"
import Spinner from "../../components/atoms/spinner"
import WidgetContainer from "../../components/extensions/widget-container"
import PlusIcon from "../../components/fundamentals/icons/plus-icon"
import BannerCard from "../../components/molecules/banner-card"
import BodyCard from "../../components/organisms/body-card"
import DeletePrompt from "../../components/organisms/delete-prompt"
import GiftCardBanner from "../../components/organisms/gift-card-banner"
import GiftCardTable from "../../components/templates/gift-card-table"
import useNotification from "../../hooks/use-notification"
import useToggleState from "../../hooks/use-toggle-state"
import { useWidgets } from "../../providers/widget-provider"
import { ProductStatus } from "../../types/shared"
import { getErrorMessage } from "../../utils/error-messages"
import CustomGiftcard from "./custom-giftcard"
import NewGiftCard from "./new"
const Overview = () => {
const { t } = useTranslation()
const { products, isLoading } = useAdminProducts({
is_giftcard: true,
})
const { store } = useAdminStore()
const [showCreate, setShowCreate] = useState(false)
const giftCard = products?.[0]
const navigate = useNavigate()
const notification = useNotification()
const updateGiftCard = useAdminUpdateProduct(giftCard?.id!)
const deleteGiftCard = useAdminDeleteProduct(giftCard?.id!)
const {
state: stateCustom,
close: closeCustom,
open: openCustom,
} = useToggleState()
const { state: stateNew, close: closeNew, open: openNew } = useToggleState()
const {
state: stateDelete,
close: closeDelete,
open: openDelete,
} = useToggleState()
const onUpdate = () => {
let status: ProductStatus = ProductStatus.PUBLISHED
if (giftCard?.status === "published") {
status = ProductStatus.DRAFT
}
updateGiftCard.mutate(
{ status },
{
onSuccess: () =>
notification(
t("gift-cards-success", "Success"),
t(
"gift-cards-successfully-updated-gift-card",
"Successfully updated Gift Card"
),
"success"
),
onError: (err) =>
notification(
t("gift-cards-error", "Error"),
getErrorMessage(err),
"error"
),
}
)
}
const onDelete = () => {
deleteGiftCard.mutate(undefined, {
onSuccess: () => {
navigate("/a/gift-cards")
},
})
}
const actionables = [
{
label: t("gift-cards-custom-gift-card", "Custom Gift Card"),
onClick: openCustom,
icon: