[fix] Re-introduce beforeUpdateOneObject hook (#5495)
... and disable name edition in object edition form. This feature will be introduced by #5491
This commit is contained in:
@ -22,6 +22,7 @@ type SettingsDataModelObjectAboutFormValues = z.infer<
|
||||
|
||||
type SettingsDataModelObjectAboutFormProps = {
|
||||
disabled?: boolean;
|
||||
disableNameEdit?: boolean;
|
||||
objectMetadataItem?: ObjectMetadataItem;
|
||||
};
|
||||
|
||||
@ -46,6 +47,7 @@ const StyledInputContainer = styled.div`
|
||||
|
||||
export const SettingsDataModelObjectAboutForm = ({
|
||||
disabled,
|
||||
disableNameEdit,
|
||||
objectMetadataItem,
|
||||
}: SettingsDataModelObjectAboutFormProps) => {
|
||||
const { control } = useFormContext<SettingsDataModelObjectAboutFormValues>();
|
||||
@ -93,7 +95,7 @@ export const SettingsDataModelObjectAboutForm = ({
|
||||
placeholder={placeholder}
|
||||
value={value}
|
||||
onChange={onChange}
|
||||
disabled={disabled}
|
||||
disabled={disabled || disableNameEdit}
|
||||
fullWidth
|
||||
/>
|
||||
)}
|
||||
|
||||
@ -133,6 +133,7 @@ export const SettingsObjectEdit = () => {
|
||||
/>
|
||||
<SettingsDataModelObjectAboutForm
|
||||
disabled={!activeObjectMetadataItem.isCustom}
|
||||
disableNameEdit
|
||||
objectMetadataItem={activeObjectMetadataItem}
|
||||
/>
|
||||
</Section>
|
||||
|
||||
@ -30,10 +30,8 @@ export class BeforeUpdateOneObject<T extends UpdateObjectPayload>
|
||||
// TODO: this logic could be moved to a policy guard
|
||||
async run(
|
||||
instance: UpdateOneInputType<T>,
|
||||
context: any,
|
||||
workspaceId: string,
|
||||
): Promise<UpdateOneInputType<T>> {
|
||||
const workspaceId = context?.req?.user?.workspace?.id;
|
||||
|
||||
if (!workspaceId) {
|
||||
throw new UnauthorizedException();
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ import { ObjectMetadataResolver } from 'src/engine/metadata-modules/object-metad
|
||||
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
|
||||
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||
import { WorkspaceCacheVersionModule } from 'src/engine/metadata-modules/workspace-cache-version/workspace-cache-version.module';
|
||||
import { BeforeUpdateOneObject } from 'src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook';
|
||||
|
||||
import { ObjectMetadataService } from './object-metadata.service';
|
||||
import { ObjectMetadataEntity } from './object-metadata.entity';
|
||||
@ -65,7 +66,11 @@ import { ObjectMetadataDTO } from './dtos/object-metadata.dto';
|
||||
],
|
||||
}),
|
||||
],
|
||||
providers: [ObjectMetadataService, ObjectMetadataResolver],
|
||||
providers: [
|
||||
ObjectMetadataService,
|
||||
ObjectMetadataResolver,
|
||||
BeforeUpdateOneObject,
|
||||
],
|
||||
exports: [ObjectMetadataService],
|
||||
})
|
||||
export class ObjectMetadataModule {}
|
||||
|
||||
@ -7,12 +7,19 @@ import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
|
||||
import { ObjectMetadataDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto';
|
||||
import { DeleteOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/delete-object.input';
|
||||
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
|
||||
import { UpdateOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input';
|
||||
import {
|
||||
UpdateObjectPayload,
|
||||
UpdateOneObjectInput,
|
||||
} from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input';
|
||||
import { BeforeUpdateOneObject } from 'src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook';
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Resolver(() => ObjectMetadataDTO)
|
||||
export class ObjectMetadataResolver {
|
||||
constructor(private readonly objectMetadataService: ObjectMetadataService) {}
|
||||
constructor(
|
||||
private readonly objectMetadataService: ObjectMetadataService,
|
||||
private readonly beforeUpdateOneObject: BeforeUpdateOneObject<UpdateObjectPayload>,
|
||||
) {}
|
||||
|
||||
@Mutation(() => ObjectMetadataDTO)
|
||||
deleteOneObject(
|
||||
@ -23,10 +30,12 @@ export class ObjectMetadataResolver {
|
||||
}
|
||||
|
||||
@Mutation(() => ObjectMetadataDTO)
|
||||
updateOneObject(
|
||||
async updateOneObject(
|
||||
@Args('input') input: UpdateOneObjectInput,
|
||||
@AuthWorkspace() { id: workspaceId }: Workspace,
|
||||
) {
|
||||
await this.beforeUpdateOneObject.run(input, workspaceId);
|
||||
|
||||
return this.objectMetadataService.updateOneObject(input, workspaceId);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user