[FE] handle restricted objects 2 (#12437)
Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -66,8 +66,8 @@ export const DEFAULT_RECORD_ACTIONS_CONFIG: Record<
|
||||
position: 0,
|
||||
isPinned: true,
|
||||
Icon: IconPlus,
|
||||
shouldBeRegistered: ({ hasObjectReadOnlyPermission }) =>
|
||||
!hasObjectReadOnlyPermission,
|
||||
shouldBeRegistered: ({ objectPermissions }) =>
|
||||
objectPermissions.canUpdateObjectRecords,
|
||||
availableOn: [ActionViewType.INDEX_PAGE_NO_SELECTION],
|
||||
component: <CreateNewTableRecordNoSelectionRecordAction />,
|
||||
},
|
||||
@ -194,10 +194,15 @@ export const DEFAULT_RECORD_ACTIONS_CONFIG: Record<
|
||||
Icon: IconTrash,
|
||||
accent: 'default',
|
||||
isPinned: true,
|
||||
shouldBeRegistered: ({ selectedRecord, isSoftDeleteFilterActive }) =>
|
||||
shouldBeRegistered: ({
|
||||
selectedRecord,
|
||||
isSoftDeleteFilterActive,
|
||||
objectPermissions,
|
||||
}) =>
|
||||
isDefined(selectedRecord) &&
|
||||
!selectedRecord.isRemote &&
|
||||
!isSoftDeleteFilterActive,
|
||||
!isSoftDeleteFilterActive &&
|
||||
objectPermissions.canSoftDeleteObjectRecords,
|
||||
availableOn: [
|
||||
ActionViewType.INDEX_PAGE_SINGLE_RECORD_SELECTION,
|
||||
ActionViewType.SHOW_PAGE,
|
||||
@ -215,12 +220,12 @@ export const DEFAULT_RECORD_ACTIONS_CONFIG: Record<
|
||||
accent: 'default',
|
||||
isPinned: true,
|
||||
shouldBeRegistered: ({
|
||||
hasObjectReadOnlyPermission,
|
||||
objectPermissions,
|
||||
isRemote,
|
||||
isSoftDeleteFilterActive,
|
||||
numberOfSelectedRecords,
|
||||
}) =>
|
||||
!hasObjectReadOnlyPermission &&
|
||||
objectPermissions.canSoftDeleteObjectRecords &&
|
||||
!isRemote &&
|
||||
!isSoftDeleteFilterActive &&
|
||||
isDefined(numberOfSelectedRecords) &&
|
||||
@ -268,12 +273,8 @@ export const DEFAULT_RECORD_ACTIONS_CONFIG: Record<
|
||||
Icon: IconTrashX,
|
||||
accent: 'danger',
|
||||
isPinned: true,
|
||||
shouldBeRegistered: ({
|
||||
selectedRecord,
|
||||
hasObjectReadOnlyPermission,
|
||||
isRemote,
|
||||
}) =>
|
||||
!hasObjectReadOnlyPermission &&
|
||||
shouldBeRegistered: ({ selectedRecord, objectPermissions, isRemote }) =>
|
||||
objectPermissions.canDestroyObjectRecords &&
|
||||
!isRemote &&
|
||||
isDefined(selectedRecord?.deletedAt),
|
||||
availableOn: [
|
||||
@ -317,12 +318,12 @@ export const DEFAULT_RECORD_ACTIONS_CONFIG: Record<
|
||||
accent: 'danger',
|
||||
isPinned: true,
|
||||
shouldBeRegistered: ({
|
||||
hasObjectReadOnlyPermission,
|
||||
objectPermissions,
|
||||
isRemote,
|
||||
isSoftDeleteFilterActive,
|
||||
numberOfSelectedRecords,
|
||||
}) =>
|
||||
!hasObjectReadOnlyPermission &&
|
||||
objectPermissions.canDestroyObjectRecords &&
|
||||
!isRemote &&
|
||||
isDefined(isSoftDeleteFilterActive) &&
|
||||
isSoftDeleteFilterActive &&
|
||||
@ -343,14 +344,14 @@ export const DEFAULT_RECORD_ACTIONS_CONFIG: Record<
|
||||
isPinned: true,
|
||||
shouldBeRegistered: ({
|
||||
selectedRecord,
|
||||
hasObjectReadOnlyPermission,
|
||||
objectPermissions,
|
||||
isRemote,
|
||||
isShowPage,
|
||||
isSoftDeleteFilterActive,
|
||||
}) =>
|
||||
!isRemote &&
|
||||
isDefined(selectedRecord?.deletedAt) &&
|
||||
!hasObjectReadOnlyPermission &&
|
||||
objectPermissions.canSoftDeleteObjectRecords &&
|
||||
((isDefined(isShowPage) && isShowPage) ||
|
||||
(isDefined(isSoftDeleteFilterActive) && isSoftDeleteFilterActive)),
|
||||
availableOn: [
|
||||
@ -370,12 +371,12 @@ export const DEFAULT_RECORD_ACTIONS_CONFIG: Record<
|
||||
accent: 'default',
|
||||
isPinned: true,
|
||||
shouldBeRegistered: ({
|
||||
hasObjectReadOnlyPermission,
|
||||
objectPermissions,
|
||||
isRemote,
|
||||
isSoftDeleteFilterActive,
|
||||
numberOfSelectedRecords,
|
||||
}) =>
|
||||
!hasObjectReadOnlyPermission &&
|
||||
objectPermissions.canSoftDeleteObjectRecords &&
|
||||
!isRemote &&
|
||||
isDefined(isSoftDeleteFilterActive) &&
|
||||
isSoftDeleteFilterActive &&
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
import { ActionViewType } from '@/action-menu/actions/types/ActionViewType';
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { ObjectPermissions } from '@/object-record/cache/types/ObjectPermissions';
|
||||
import { RecordFilter } from '@/object-record/record-filter/types/RecordFilter';
|
||||
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { WorkflowWithCurrentVersion } from '@/workflow/types/Workflow';
|
||||
|
||||
export type ShouldBeRegisteredFunctionParams = {
|
||||
objectMetadataItem?: ObjectMetadataItem;
|
||||
hasObjectReadOnlyPermission?: boolean;
|
||||
objectPermissions: ObjectPermissions;
|
||||
isWorkflowEnabled: boolean;
|
||||
recordFilters?: RecordFilter[];
|
||||
isShowPage?: boolean;
|
||||
|
||||
@ -8,9 +8,9 @@ import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType
|
||||
import { useFavorites } from '@/favorites/hooks/useFavorites';
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { useObjectPermissionsForObject } from '@/object-record/hooks/useObjectPermissionsForObject';
|
||||
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
||||
import { isSoftDeleteFilterActiveComponentState } from '@/object-record/record-table/states/isSoftDeleteFilterActiveComponentState';
|
||||
import { useHasObjectReadOnlyPermission } from '@/settings/roles/hooks/useHasObjectReadOnlyPermission';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
||||
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||
import { useContext } from 'react';
|
||||
@ -42,7 +42,9 @@ export const useShouldActionBeRegisteredParams = ({
|
||||
const selectedRecord =
|
||||
useRecoilValue(recordStoreFamilyState(recordId ?? '')) || undefined;
|
||||
|
||||
const hasObjectReadOnlyPermission = useHasObjectReadOnlyPermission();
|
||||
const objectPermissions = useObjectPermissionsForObject(
|
||||
objectMetadataItem?.id,
|
||||
);
|
||||
|
||||
const isNoteOrTask =
|
||||
objectMetadataItem?.nameSingular === CoreObjectNameSingular.Note ||
|
||||
@ -78,7 +80,7 @@ export const useShouldActionBeRegisteredParams = ({
|
||||
return {
|
||||
objectMetadataItem,
|
||||
isFavorite,
|
||||
hasObjectReadOnlyPermission,
|
||||
objectPermissions,
|
||||
isNoteOrTask,
|
||||
isInRightDrawer,
|
||||
isSoftDeleteFilterActive,
|
||||
|
||||
Reference in New Issue
Block a user