diff --git a/packages/core/upload/admin/src/ai/components/AIAssetCard.tsx b/packages/core/upload/admin/src/ai/components/AIAssetCard.tsx index 439db31c46f2..a79b365f56d0 100644 --- a/packages/core/upload/admin/src/ai/components/AIAssetCard.tsx +++ b/packages/core/upload/admin/src/ai/components/AIAssetCard.tsx @@ -75,7 +75,7 @@ const AssetCardActions = ({ asset }: { asset: File }) => { const dispatch = useAIUploadModalContext('AssetCardActions', (s) => s.dispatch); const state = useAIUploadModalContext('AssetCardActions', (s) => s.state); const onClose = useAIUploadModalContext('AssetCardActions', (s) => s.onClose); - const { canUpdate, canCopyLink, canDownload } = useMediaLibraryPermissions(); + const { canUpdate, canDelete, canCopyLink, canDownload } = useMediaLibraryPermissions(); const [isEditModalOpen, setIsEditModalOpen] = React.useState(false); @@ -112,19 +112,21 @@ const AssetCardActions = ({ asset }: { asset: File }) => { return ( - - - - - - - - + {canDelete && ( + + + + + + + + + )} @@ -146,6 +148,7 @@ const AssetCardActions = ({ asset }: { asset: File }) => { } onClose={(arg) => handleEditAsset(arg as File)} canUpdate={canUpdate} + canDelete={canDelete} canCopyLink={canCopyLink} canDownload={canDownload} omitFields={['caption', 'alternativeText']} diff --git a/packages/core/upload/admin/src/components/AssetDialog/AssetDialog.tsx b/packages/core/upload/admin/src/components/AssetDialog/AssetDialog.tsx index 0767410ce8d5..dfabcc4e2d7c 100644 --- a/packages/core/upload/admin/src/components/AssetDialog/AssetDialog.tsx +++ b/packages/core/upload/admin/src/components/AssetDialog/AssetDialog.tsx @@ -93,6 +93,7 @@ export const AssetContent = ({ canCreate, isLoading: isLoadingPermissions, canUpdate, + canDelete, canCopyLink, canDownload, } = useMediaLibraryPermissions(); @@ -223,6 +224,7 @@ export const AssetContent = ({ onClose={() => setAssetToEdit(undefined)} asset={assetToEdit as EditAsset} canUpdate={canUpdate} + canDelete={canDelete} canCopyLink={canCopyLink} canDownload={canDownload} trackedLocation={trackedLocation} diff --git a/packages/core/upload/admin/src/components/EditAssetDialog/EditAssetContent.tsx b/packages/core/upload/admin/src/components/EditAssetDialog/EditAssetContent.tsx index 3f17b42e169e..2022ce1677de 100644 --- a/packages/core/upload/admin/src/components/EditAssetDialog/EditAssetContent.tsx +++ b/packages/core/upload/admin/src/components/EditAssetDialog/EditAssetContent.tsx @@ -68,6 +68,7 @@ export interface Asset extends Omit { interface EditAssetContentProps { asset?: Asset; canUpdate?: boolean; + canDelete?: boolean; canCopyLink?: boolean; canDownload?: boolean; trackedLocation?: string; @@ -91,6 +92,7 @@ export const EditAssetContent = ({ onClose, asset, canUpdate = false, + canDelete = false, canCopyLink = false, canDownload = false, trackedLocation, @@ -230,6 +232,7 @@ export const EditAssetContent = ({ { interface PreviewBoxProps { asset: Asset; canUpdate: boolean; + canDelete: boolean; canCopyLink: boolean; canDownload: boolean; replacementFile?: File; @@ -63,6 +64,7 @@ interface PreviewBoxProps { export const PreviewBox = ({ asset, canUpdate, + canDelete, canCopyLink, canDownload, onDelete, @@ -244,7 +246,7 @@ export const PreviewBox = ({ - {canUpdate && !asset.isLocal && ( + {canDelete && !asset.isLocal && ( asset={asset} onClose={jest.fn()} canUpdate + canDelete canCopyLink canDownload /> diff --git a/packages/core/upload/admin/src/components/EditAssetDialog/tests/EditAssetDialog.test.tsx b/packages/core/upload/admin/src/components/EditAssetDialog/tests/EditAssetDialog.test.tsx index 0b358bf2ae65..4578ae5e1b3b 100644 --- a/packages/core/upload/admin/src/components/EditAssetDialog/tests/EditAssetDialog.test.tsx +++ b/packages/core/upload/admin/src/components/EditAssetDialog/tests/EditAssetDialog.test.tsx @@ -109,14 +109,30 @@ const store = configureStore({ middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(adminApi.middleware), }); -const renderCompo = (props = { canUpdate: true, canCopyLink: true, canDownload: true }) => +const renderCompo = ( + props: Partial<{ + canUpdate: boolean; + canDelete: boolean; + canCopyLink: boolean; + canDownload: boolean; + }> = {} +) => render( - + @@ -188,8 +204,8 @@ describe('', () => { }); describe('PreviewBox', () => { - it('opens the delete dialog when pressing the delete button when the user is allowed to update', () => { - renderCompo({ canUpdate: true, canCopyLink: false, canDownload: false }); + it('opens the delete dialog when pressing the delete button when the user is allowed to delete', () => { + renderCompo({ canUpdate: true, canDelete: true, canCopyLink: false, canDownload: false }); fireEvent.click(screen.getByRole('button', { name: 'Delete' })); @@ -197,8 +213,8 @@ describe('', () => { expect(screen.getByText('Are you sure?')).toBeVisible(); }); - it('does not open the delete dialog when the user is not allowed to update', () => { - renderCompo({ canUpdate: false, canCopyLink: false, canDownload: false }); + it('does not open the delete dialog when the user is not allowed to delete', () => { + renderCompo({ canUpdate: true, canDelete: false, canCopyLink: false, canDownload: false }); expect(screen.queryByRole('button', { name: 'Delete' })).not.toBeInTheDocument(); }); diff --git a/packages/core/upload/admin/src/components/EditFolderDialog/EditFolderDialog.tsx b/packages/core/upload/admin/src/components/EditFolderDialog/EditFolderDialog.tsx index 1b05778322f0..20848dbaee5f 100644 --- a/packages/core/upload/admin/src/components/EditFolderDialog/EditFolderDialog.tsx +++ b/packages/core/upload/admin/src/components/EditFolderDialog/EditFolderDialog.tsx @@ -54,7 +54,12 @@ export const EditFolderContent = ({ const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({ enabled: true, }); - const { canCreate, isLoading: isLoadingPermissions, canUpdate } = useMediaLibraryPermissions(); + const { + canCreate, + canDelete, + isLoading: isLoadingPermissions, + canUpdate, + } = useMediaLibraryPermissions(); const [showConfirmDialog, setShowConfirmDialog] = React.useState(false); const { formatMessage, formatDate } = useIntl(); const { trackUsage } = useTracking(); @@ -289,13 +294,13 @@ export const EditFolderContent = ({ {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })} - {isEditing && canUpdate && ( + {isEditing && canDelete && (