[permissions] Deprecate ObjectsPermissionsDeprecated (1/3) (#14306)

We want to update UserWorkspacePermissions from 
```
export type UserWorkspacePermissions = {
  permissionFlags: Record<PermissionFlagType, boolean>;
  objectRecordsPermissions: Record<PermissionsOnAllObjectRecords, boolean>;
  objectPermissions: ObjectsPermissionsDeprecated;
};
```

to
```
export type UserWorkspacePermissions = {
  permissionFlags: Record<PermissionFlagType, boolean>;
  objectsPermissions: ObjectsPermissions;
};
```

`ObjectsPermissionsDeprecated` and `ObjectsPermissions` are actually
very similar, they only have different key names (`canRead` vs
`canReadObjectRecords`)

To avoid brutal breaking changes, we will proceed in multiple steps: 

1. This PR: adapt FE so it does not call objectRecordsPermissions
anymore + add the new objectsPermissions to UserWorkspacePermissions
without calling it yet in the FE
2. Remove objectRecordsPermissions in BE + use objectsPermissions in FE
instead of objectPermissions
3. Remove objectPermissions
This commit is contained in:
Marie
2025-09-04 16:03:33 +02:00
committed by GitHub
parent 5c1ce8476d
commit 40251d34ec
12 changed files with 60 additions and 33 deletions
@@ -146,6 +146,7 @@ export const RecordDetailRelationSectionDropdownToMany = () => {
focusId={dropdownId}
componentInstanceId={dropdownId}
onCreate={handleCreateNew}
objectMetadataItemIdForCreate={relationObjectMetadataItem.id}
onChange={updateRelation}
onSubmit={() => {
closeDropdown(dropdownId);
@@ -153,6 +153,7 @@ export const RelationFromManyFieldInput = () => {
}
}}
onCreate={canCreateNew ? handleCreateNew : undefined}
objectMetadataItemIdForCreate={relationObjectMetadataItem.id}
onClickOutside={handleSubmit}
layoutDirection={
layoutDirection === 'downward'
@@ -1,3 +1,4 @@
import { useObjectPermissionsForObject } from '@/object-record/hooks/useObjectPermissionsForObject';
import { MultipleRecordPickerItemsDisplay } from '@/object-record/record-picker/multiple-record-picker/components/MultipleRecordPickerItemsDisplay';
import { MultipleRecordPickerOnClickOutsideEffect } from '@/object-record/record-picker/multiple-record-picker/components/MultipleRecordPickerOnClickOutsideEffect';
import { MultipleRecordPickerSearchInput } from '@/object-record/record-picker/multiple-record-picker/components/MultipleRecordPickerSearchInput';
@@ -7,7 +8,6 @@ import { multipleRecordPickerSearchFilterComponentState } from '@/object-record/
import { getMultipleRecordPickerSelectableListId } from '@/object-record/record-picker/multiple-record-picker/utils/getMultipleRecordPickerSelectableListId';
import { type RecordPickerLayoutDirection } from '@/object-record/record-picker/types/RecordPickerLayoutDirection';
import { type RecordPickerPickableMorphItem } from '@/object-record/record-picker/types/RecordPickerPickableMorphItem';
import { useHasObjectReadOnlyPermission } from '@/settings/roles/hooks/useHasObjectReadOnlyPermission';
import { CreateNewButton } from '@/ui/input/relation-picker/components/CreateNewButton';
import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent';
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
@@ -28,6 +28,7 @@ type MultipleRecordPickerProps = {
componentInstanceId: string;
onClickOutside: () => void;
focusId: string;
objectMetadataItemIdForCreate?: string;
};
export const MultipleRecordPicker = ({
@@ -38,6 +39,7 @@ export const MultipleRecordPicker = ({
layoutDirection = 'search-bar-on-bottom',
componentInstanceId,
focusId,
objectMetadataItemIdForCreate,
}: MultipleRecordPickerProps) => {
const selectableListComponentInstanceId =
getMultipleRecordPickerSelectableListId(componentInstanceId);
@@ -57,8 +59,6 @@ export const MultipleRecordPicker = ({
componentInstanceId,
);
const hasObjectReadOnlyPermission = useHasObjectReadOnlyPermission();
const resetState = useRecoilCallback(
({ set }) => {
return () => {
@@ -106,8 +106,12 @@ export const MultipleRecordPicker = ({
[multipleRecordPickerSearchFilterState, onCreate],
);
const hasCreatePermissionOnObjectForCreate = useObjectPermissionsForObject(
objectMetadataItemIdForCreate ?? '',
).canUpdateObjectRecords;
const createNewButtonSection =
isDefined(onCreate) && !hasObjectReadOnlyPermission ? (
isDefined(onCreate) && hasCreatePermissionOnObjectForCreate ? (
<DropdownMenuItemsContainer scrollable={false}>
<CreateNewButton
onClick={handleCreateNewButtonClick}