Spaces:
Build error
Build error
twenty / packages /twenty-server /src /engine /metadata-modules /command-menu-item /command-menu-item.resolver.ts
| import { UseGuards, UseInterceptors } from '@nestjs/common'; | |
| import { | |
| Args, | |
| Context, | |
| Mutation, | |
| Parent, | |
| Query, | |
| ResolveField, | |
| } from '@nestjs/graphql'; | |
| import { isDefined } from 'twenty-shared/utils'; | |
| import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; | |
| import { type I18nContext } from 'src/engine/core-modules/i18n/types/i18n-context.type'; | |
| import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; | |
| import { type IDataloaders } from 'src/engine/dataloaders/dataloader.interface'; | |
| import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; | |
| import { MetadataResolver } from 'src/engine/api/graphql/graphql-config/decorators/metadata-resolver.decorator'; | |
| import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; | |
| import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; | |
| import { CommandMenuItemService } from 'src/engine/metadata-modules/command-menu-item/command-menu-item.service'; | |
| import { CommandMenuItemDTO } from 'src/engine/metadata-modules/command-menu-item/dtos/command-menu-item.dto'; | |
| import { CreateCommandMenuItemInput } from 'src/engine/metadata-modules/command-menu-item/dtos/create-command-menu-item.input'; | |
| import { UpdateCommandMenuItemInput } from 'src/engine/metadata-modules/command-menu-item/dtos/update-command-menu-item.input'; | |
| import { CommandMenuItemGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/command-menu-item/interceptors/command-menu-item-graphql-api-exception.interceptor'; | |
| import { FrontComponentDTO } from 'src/engine/metadata-modules/front-component/dtos/front-component.dto'; | |
| import { FrontComponentService } from 'src/engine/metadata-modules/front-component/front-component.service'; | |
| import { WorkspaceMigrationGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-graphql-api-exception.interceptor'; | |
| (WorkspaceAuthGuard) | |
| ( | |
| WorkspaceMigrationGraphqlApiExceptionInterceptor, | |
| CommandMenuItemGraphqlApiExceptionInterceptor, | |
| ) | |
| (() => CommandMenuItemDTO) | |
| export class CommandMenuItemResolver { | |
| constructor( | |
| private readonly commandMenuItemService: CommandMenuItemService, | |
| private readonly frontComponentService: FrontComponentService, | |
| ) {} | |
| (() => String) | |
| async label( | |
| () commandMenuItem: CommandMenuItemDTO, | |
| () context: { loaders: IDataloaders } & I18nContext, | |
| () workspace: WorkspaceEntity, | |
| ): Promise<string> { | |
| return ( | |
| (await this.commandMenuItemService.resolveNavigationField({ | |
| commandMenuItem, | |
| fieldName: 'label', | |
| objectMetadataLoader: context.loaders.objectMetadataLoader, | |
| standardApplicationIdLoader: | |
| context.loaders.standardApplicationIdLoader, | |
| applicationTranslationCatalogLoader: | |
| context.loaders.applicationTranslationCatalogLoader, | |
| workspaceId: workspace.id, | |
| locale: context.req.locale, | |
| })) ?? '' | |
| ); | |
| } | |
| (() => String, { nullable: true }) | |
| async shortLabel( | |
| () commandMenuItem: CommandMenuItemDTO, | |
| () context: { loaders: IDataloaders } & I18nContext, | |
| () workspace: WorkspaceEntity, | |
| ): Promise<string | undefined> { | |
| return this.commandMenuItemService.resolveNavigationField({ | |
| commandMenuItem, | |
| fieldName: 'shortLabel', | |
| objectMetadataLoader: context.loaders.objectMetadataLoader, | |
| standardApplicationIdLoader: context.loaders.standardApplicationIdLoader, | |
| applicationTranslationCatalogLoader: | |
| context.loaders.applicationTranslationCatalogLoader, | |
| workspaceId: workspace.id, | |
| locale: context.req.locale, | |
| }); | |
| } | |
| (() => String, { nullable: true }) | |
| async icon( | |
| () commandMenuItem: CommandMenuItemDTO, | |
| () context: { loaders: IDataloaders } & I18nContext, | |
| () workspace: WorkspaceEntity, | |
| ): Promise<string | undefined> { | |
| return this.commandMenuItemService.resolveNavigationField({ | |
| commandMenuItem, | |
| fieldName: 'icon', | |
| objectMetadataLoader: context.loaders.objectMetadataLoader, | |
| standardApplicationIdLoader: context.loaders.standardApplicationIdLoader, | |
| applicationTranslationCatalogLoader: | |
| context.loaders.applicationTranslationCatalogLoader, | |
| workspaceId: workspace.id, | |
| locale: context.req.locale, | |
| }); | |
| } | |
| (() => FrontComponentDTO, { nullable: true }) | |
| async frontComponent( | |
| () commandMenuItem: CommandMenuItemDTO, | |
| () workspace: WorkspaceEntity, | |
| ) { | |
| if (!isDefined(commandMenuItem.frontComponentId)) { | |
| return null; | |
| } | |
| return this.frontComponentService.findById( | |
| commandMenuItem.frontComponentId, | |
| workspace.id, | |
| ); | |
| } | |
| (() => [CommandMenuItemDTO]) | |
| (NoPermissionGuard) | |
| async commandMenuItems( | |
| () workspace: WorkspaceEntity, | |
| ): Promise<CommandMenuItemDTO[]> { | |
| return await this.commandMenuItemService.findAll(workspace.id); | |
| } | |
| (() => CommandMenuItemDTO, { nullable: true }) | |
| (NoPermissionGuard) | |
| async commandMenuItem( | |
| ('id', { type: () => UUIDScalarType }) id: string, | |
| () workspace: WorkspaceEntity, | |
| ): Promise<CommandMenuItemDTO | null> { | |
| return await this.commandMenuItemService.findById(id, workspace.id); | |
| } | |
| (() => CommandMenuItemDTO) | |
| (NoPermissionGuard) | |
| async createCommandMenuItem( | |
| ('input') input: CreateCommandMenuItemInput, | |
| () workspace: WorkspaceEntity, | |
| ): Promise<CommandMenuItemDTO> { | |
| return await this.commandMenuItemService.create(input, workspace.id); | |
| } | |
| (() => CommandMenuItemDTO) | |
| (NoPermissionGuard) | |
| async updateCommandMenuItem( | |
| ('input') input: UpdateCommandMenuItemInput, | |
| () workspace: WorkspaceEntity, | |
| ): Promise<CommandMenuItemDTO> { | |
| return await this.commandMenuItemService.update(input, workspace.id); | |
| } | |
| (() => CommandMenuItemDTO) | |
| (NoPermissionGuard) | |
| async resetCommandMenuItem( | |
| ('id', { type: () => UUIDScalarType }) id: string, | |
| () workspace: WorkspaceEntity, | |
| ): Promise<CommandMenuItemDTO> { | |
| return await this.commandMenuItemService.reset(id, workspace.id); | |
| } | |
| (() => CommandMenuItemDTO) | |
| (NoPermissionGuard) | |
| async deleteCommandMenuItem( | |
| ('id', { type: () => UUIDScalarType }) id: string, | |
| () workspace: WorkspaceEntity, | |
| ): Promise<CommandMenuItemDTO> { | |
| return await this.commandMenuItemService.delete(id, workspace.id); | |
| } | |
| } | |