[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:
Marie
2024-05-21 10:46:49 +02:00
committed by GitHub
parent eb78be6c61
commit 0d16051ded
5 changed files with 23 additions and 8 deletions

View File

@ -22,6 +22,7 @@ type SettingsDataModelObjectAboutFormValues = z.infer<
type SettingsDataModelObjectAboutFormProps = { type SettingsDataModelObjectAboutFormProps = {
disabled?: boolean; disabled?: boolean;
disableNameEdit?: boolean;
objectMetadataItem?: ObjectMetadataItem; objectMetadataItem?: ObjectMetadataItem;
}; };
@ -46,6 +47,7 @@ const StyledInputContainer = styled.div`
export const SettingsDataModelObjectAboutForm = ({ export const SettingsDataModelObjectAboutForm = ({
disabled, disabled,
disableNameEdit,
objectMetadataItem, objectMetadataItem,
}: SettingsDataModelObjectAboutFormProps) => { }: SettingsDataModelObjectAboutFormProps) => {
const { control } = useFormContext<SettingsDataModelObjectAboutFormValues>(); const { control } = useFormContext<SettingsDataModelObjectAboutFormValues>();
@ -93,7 +95,7 @@ export const SettingsDataModelObjectAboutForm = ({
placeholder={placeholder} placeholder={placeholder}
value={value} value={value}
onChange={onChange} onChange={onChange}
disabled={disabled} disabled={disabled || disableNameEdit}
fullWidth fullWidth
/> />
)} )}

View File

@ -133,6 +133,7 @@ export const SettingsObjectEdit = () => {
/> />
<SettingsDataModelObjectAboutForm <SettingsDataModelObjectAboutForm
disabled={!activeObjectMetadataItem.isCustom} disabled={!activeObjectMetadataItem.isCustom}
disableNameEdit
objectMetadataItem={activeObjectMetadataItem} objectMetadataItem={activeObjectMetadataItem}
/> />
</Section> </Section>

View File

@ -30,10 +30,8 @@ export class BeforeUpdateOneObject<T extends UpdateObjectPayload>
// TODO: this logic could be moved to a policy guard // TODO: this logic could be moved to a policy guard
async run( async run(
instance: UpdateOneInputType<T>, instance: UpdateOneInputType<T>,
context: any, workspaceId: string,
): Promise<UpdateOneInputType<T>> { ): Promise<UpdateOneInputType<T>> {
const workspaceId = context?.req?.user?.workspace?.id;
if (!workspaceId) { if (!workspaceId) {
throw new UnauthorizedException(); throw new UnauthorizedException();
} }

View File

@ -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 { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; 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 { 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 { ObjectMetadataService } from './object-metadata.service';
import { ObjectMetadataEntity } from './object-metadata.entity'; 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], exports: [ObjectMetadataService],
}) })
export class ObjectMetadataModule {} export class ObjectMetadataModule {}

View File

@ -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 { 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 { 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 { 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) @UseGuards(JwtAuthGuard)
@Resolver(() => ObjectMetadataDTO) @Resolver(() => ObjectMetadataDTO)
export class ObjectMetadataResolver { export class ObjectMetadataResolver {
constructor(private readonly objectMetadataService: ObjectMetadataService) {} constructor(
private readonly objectMetadataService: ObjectMetadataService,
private readonly beforeUpdateOneObject: BeforeUpdateOneObject<UpdateObjectPayload>,
) {}
@Mutation(() => ObjectMetadataDTO) @Mutation(() => ObjectMetadataDTO)
deleteOneObject( deleteOneObject(
@ -23,10 +30,12 @@ export class ObjectMetadataResolver {
} }
@Mutation(() => ObjectMetadataDTO) @Mutation(() => ObjectMetadataDTO)
updateOneObject( async updateOneObject(
@Args('input') input: UpdateOneObjectInput, @Args('input') input: UpdateOneObjectInput,
@AuthWorkspace() { id: workspaceId }: Workspace, @AuthWorkspace() { id: workspaceId }: Workspace,
) { ) {
await this.beforeUpdateOneObject.run(input, workspaceId);
return this.objectMetadataService.updateOneObject(input, workspaceId); return this.objectMetadataService.updateOneObject(input, workspaceId);
} }
} }