1- import { Product } from "@medusajs/medusa"
2- import { useAdminDeleteProduct , useAdminUpdateProduct } from "medusa-react"
3- import { useNavigate } from "react-router-dom"
4- import { useTranslation } from "react-i18next"
5- import useImperativeDialog from "../../../hooks/use-imperative-dialog"
6- import useNotification from "../../../hooks/use-notification"
7- import { getErrorMessage } from "../../../utils/error-messages"
1+ import {
2+ adminInventoryItemsKeys ,
3+ useAdminDeleteProduct ,
4+ useAdminUpdateProduct ,
5+ useMedusa ,
6+ } from "medusa-react"
7+
8+ import { ActionType } from "../../molecules/actionables"
89import DuplicateIcon from "../../fundamentals/icons/duplicate-icon"
910import EditIcon from "../../fundamentals/icons/edit-icon"
11+ import { Product } from "@medusajs/medusa"
1012import PublishIcon from "../../fundamentals/icons/publish-icon"
1113import TrashIcon from "../../fundamentals/icons/trash-icon"
1214import UnpublishIcon from "../../fundamentals/icons/unpublish-icon"
13- import { ActionType } from "../../molecules/actionables "
15+ import { getErrorMessage } from "../../../utils/error-messages "
1416import useCopyProduct from "./use-copy-product"
17+ import { useFeatureFlag } from "../../../providers/feature-flag-provider"
18+ import useImperativeDialog from "../../../hooks/use-imperative-dialog"
19+ import { useNavigate } from "react-router-dom"
20+ import useNotification from "../../../hooks/use-notification"
21+ import { useQueryClient } from "@tanstack/react-query"
22+ import { useTranslation } from "react-i18next"
1523
1624const useProductActions = ( product : Product ) => {
1725 const { t } = useTranslation ( )
@@ -21,6 +29,9 @@ const useProductActions = (product: Product) => {
2129 const copyProduct = useCopyProduct ( )
2230 const deleteProduct = useAdminDeleteProduct ( product ?. id )
2331 const updateProduct = useAdminUpdateProduct ( product ?. id )
32+ const queryClient = useQueryClient ( )
33+ const { isFeatureEnabled } = useFeatureFlag ( )
34+ const { client } = useMedusa ( )
2435
2536 const handleDelete = async ( ) => {
2637 const shouldDelete = await dialog ( {
@@ -32,6 +43,22 @@ const useProductActions = (product: Product) => {
3243 } )
3344
3445 if ( shouldDelete ) {
46+ if ( isFeatureEnabled ( "inventoryService" ) ) {
47+ const { variants } = await client . admin . variants . list ( {
48+ id : product . variants . map ( ( v ) => v . id ) ,
49+ expand : "inventory_items" ,
50+ } )
51+
52+ variants
53+ . filter ( ( { inventory_items } ) => ! ! inventory_items ?. length )
54+ . map ( ( { inventory_items } ) =>
55+ client . admin . inventoryItems . delete (
56+ inventory_items ! [ 0 ] . inventory_item_id
57+ )
58+ )
59+ queryClient . invalidateQueries ( adminInventoryItemsKeys . lists ( ) )
60+ }
61+
3562 deleteProduct . mutate ( )
3663 }
3764 }
0 commit comments