feat: remove disabled custom objects (#2247)

Closes #2147
This commit is contained in:
Thaïs
2023-10-27 11:08:02 +02:00
committed by GitHub
parent 3f2e1b622e
commit 3d5ee6d7ca
3 changed files with 22 additions and 13 deletions

View File

@ -3,6 +3,7 @@ import { formatMetadataObjectInput } from '../utils/formatMetadataObjectInput';
import { getObjectSlug } from '../utils/getObjectSlug'; import { getObjectSlug } from '../utils/getObjectSlug';
import { useCreateOneMetadataObject } from './useCreateOneMetadataObject'; import { useCreateOneMetadataObject } from './useCreateOneMetadataObject';
import { useDeleteOneMetadataObject } from './useDeleteOneMetadataObject';
import { useFindManyMetadataObjects } from './useFindManyMetadataObjects'; import { useFindManyMetadataObjects } from './useFindManyMetadataObjects';
import { useUpdateOneMetadataObject } from './useUpdateOneMetadataObject'; import { useUpdateOneMetadataObject } from './useUpdateOneMetadataObject';
@ -23,6 +24,7 @@ export const useObjectMetadata = () => {
const { createOneMetadataObject } = useCreateOneMetadataObject(); const { createOneMetadataObject } = useCreateOneMetadataObject();
const { updateOneMetadataObject } = useUpdateOneMetadataObject(); const { updateOneMetadataObject } = useUpdateOneMetadataObject();
const { deleteOneMetadataObject } = useDeleteOneMetadataObject();
const createObject = ( const createObject = (
input: Pick< input: Pick<
@ -54,6 +56,9 @@ export const useObjectMetadata = () => {
updatePayload: { isActive: false }, updatePayload: { isActive: false },
}); });
const eraseObject = (metadataObject: Pick<MetadataObject, 'id'>) =>
deleteOneMetadataObject(metadataObject.id);
return { return {
activateObject, activateObject,
activeObjects: activeMetadataObjects, activeObjects: activeMetadataObjects,
@ -61,6 +66,7 @@ export const useObjectMetadata = () => {
disabledObjects: disabledMetadataObjects, disabledObjects: disabledMetadataObjects,
disableObject, disableObject,
editObject, editObject,
eraseObject,
findActiveObjectBySlug, findActiveObjectBySlug,
}; };
}; };

View File

@ -9,15 +9,17 @@ import { DropdownScope } from '@/ui/layout/dropdown/scopes/DropdownScope';
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem'; import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
type SettingsObjectDisabledMenuDropDownProps = { type SettingsObjectDisabledMenuDropDownProps = {
scopeKey: string; isCustomObject: boolean;
onActivate: () => void; onActivate: () => void;
onErase: () => void; onErase: () => void;
scopeKey: string;
}; };
export const SettingsObjectDisabledMenuDropDown = ({ export const SettingsObjectDisabledMenuDropDown = ({
scopeKey, isCustomObject,
onActivate, onActivate,
onErase, onErase,
scopeKey,
}: SettingsObjectDisabledMenuDropDownProps) => { }: SettingsObjectDisabledMenuDropDownProps) => {
const dropdownScopeId = `${scopeKey}-settings-object-disabled-menu-dropdown`; const dropdownScopeId = `${scopeKey}-settings-object-disabled-menu-dropdown`;
@ -47,12 +49,14 @@ export const SettingsObjectDisabledMenuDropDown = ({
LeftIcon={IconArchiveOff} LeftIcon={IconArchiveOff}
onClick={handleActivate} onClick={handleActivate}
/> />
<MenuItem {isCustomObject && (
text="Erase" <MenuItem
LeftIcon={IconTrash} text="Erase"
accent="danger" LeftIcon={IconTrash}
onClick={handleErase} accent="danger"
/> onClick={handleErase}
/>
)}
</DropdownMenuItemsContainer> </DropdownMenuItemsContainer>
</DropdownMenu> </DropdownMenu>
} }

View File

@ -34,7 +34,7 @@ export const SettingsObjects = () => {
const theme = useTheme(); const theme = useTheme();
const navigate = useNavigate(); const navigate = useNavigate();
const { activateObject, activeObjects, disabledObjects } = const { activateObject, activeObjects, disabledObjects, eraseObject } =
useObjectMetadata(); useObjectMetadata();
return ( return (
@ -47,9 +47,7 @@ export const SettingsObjects = () => {
title="New object" title="New object"
accent="blue" accent="blue"
size="small" size="small"
onClick={() => { onClick={() => navigate('/settings/objects/new')}
navigate('/settings/objects/new');
}}
/> />
</SettingsHeaderContainer> </SettingsHeaderContainer>
<div> <div>
@ -93,9 +91,10 @@ export const SettingsObjects = () => {
objectItem={objectItem} objectItem={objectItem}
action={ action={
<SettingsObjectDisabledMenuDropDown <SettingsObjectDisabledMenuDropDown
isCustomObject={objectItem.isCustom}
scopeKey={objectItem.namePlural} scopeKey={objectItem.namePlural}
onActivate={() => activateObject(objectItem)} onActivate={() => activateObject(objectItem)}
onErase={() => undefined} onErase={() => eraseObject(objectItem)}
/> />
} }
/> />