fix(): Deleted default sales channel should be prevented (#10193)
FIXES CMRC-722 **What** - It should not be allowed to delete a default sales channel - The admin does not allow to delete a sales channel use as the default for the store
This commit is contained in:
committed by
GitHub
parent
2b455b15a6
commit
559fc6587a
File diff suppressed because it is too large
Load Diff
@@ -2334,6 +2334,9 @@
|
||||
"update": "Sales channel updated successfully",
|
||||
"delete": "Sales channel deleted successfully"
|
||||
},
|
||||
"tooltip": {
|
||||
"cannotDeleteDefault": "Cannot delete default sales channel"
|
||||
},
|
||||
"products": {
|
||||
"list": {
|
||||
"noRecordsMessage": "There are no products in the sales channel."
|
||||
|
||||
@@ -13,8 +13,12 @@ import { createColumnHelper } from "@tanstack/react-table"
|
||||
import { useMemo } from "react"
|
||||
import { useTranslation } from "react-i18next"
|
||||
import { Link } from "react-router-dom"
|
||||
import { ActionMenu } from "../../../../components/common/action-menu"
|
||||
import {
|
||||
ActionGroup,
|
||||
ActionMenu,
|
||||
} from "../../../../components/common/action-menu"
|
||||
import { DataTable } from "../../../../components/table/data-table"
|
||||
import { useStore } from "../../../../hooks/api"
|
||||
import {
|
||||
useDeleteSalesChannel,
|
||||
useSalesChannels,
|
||||
@@ -29,9 +33,12 @@ const PAGE_SIZE = 20
|
||||
export const SalesChannelListTable = () => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
const { store } = useStore()
|
||||
|
||||
const { raw, searchParams } = useSalesChannelTableQuery({
|
||||
pageSize: PAGE_SIZE,
|
||||
})
|
||||
|
||||
const {
|
||||
sales_channels,
|
||||
count,
|
||||
@@ -40,13 +47,22 @@ export const SalesChannelListTable = () => {
|
||||
error,
|
||||
} = useSalesChannels(searchParams, {
|
||||
placeholderData: keepPreviousData,
|
||||
})
|
||||
}) as Omit<ReturnType<typeof useSalesChannels>, "sales_channels"> & {
|
||||
sales_channels: (HttpTypes.AdminSalesChannel & { is_default?: boolean })[]
|
||||
}
|
||||
|
||||
const columns = useColumns()
|
||||
const filters = useSalesChannelTableFilters()
|
||||
|
||||
const sales_channels_data =
|
||||
sales_channels?.map((sales_channel) => {
|
||||
sales_channel.is_default =
|
||||
store?.default_sales_channel_id === sales_channel.id
|
||||
return sales_channel
|
||||
}) ?? []
|
||||
|
||||
const { table } = useDataTable({
|
||||
data: sales_channels ?? [],
|
||||
data: sales_channels_data,
|
||||
columns,
|
||||
count,
|
||||
enablePagination: true,
|
||||
@@ -97,7 +113,7 @@ export const SalesChannelListTable = () => {
|
||||
const SalesChannelActions = ({
|
||||
salesChannel,
|
||||
}: {
|
||||
salesChannel: HttpTypes.AdminSalesChannel
|
||||
salesChannel: HttpTypes.AdminSalesChannel & { is_default?: boolean }
|
||||
}) => {
|
||||
const { t } = useTranslation()
|
||||
const prompt = usePrompt()
|
||||
@@ -129,30 +145,30 @@ const SalesChannelActions = ({
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<ActionMenu
|
||||
groups={[
|
||||
const disabledTooltip = salesChannel.is_default
|
||||
? t("salesChannels.tooltip.cannotDeleteDefault")
|
||||
: undefined
|
||||
|
||||
const groups: ActionGroup[] = [
|
||||
{
|
||||
actions: [
|
||||
{
|
||||
actions: [
|
||||
{
|
||||
icon: <PencilSquare />,
|
||||
label: t("actions.edit"),
|
||||
to: `/settings/sales-channels/${salesChannel.id}/edit`,
|
||||
},
|
||||
],
|
||||
icon: <PencilSquare />,
|
||||
label: t("actions.edit"),
|
||||
to: `/settings/sales-channels/${salesChannel.id}/edit`,
|
||||
},
|
||||
{
|
||||
actions: [
|
||||
{
|
||||
icon: <Trash />,
|
||||
label: t("actions.delete"),
|
||||
onClick: handleDelete,
|
||||
},
|
||||
],
|
||||
icon: <Trash />,
|
||||
label: t("actions.delete"),
|
||||
onClick: handleDelete,
|
||||
disabled: salesChannel.is_default,
|
||||
disabledTooltip,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
)
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
return <ActionMenu groups={groups} />
|
||||
}
|
||||
|
||||
const columnHelper = createColumnHelper<HttpTypes.AdminSalesChannel>()
|
||||
|
||||
Reference in New Issue
Block a user