From a51b8dae7c47ffb2d96c2c6bf035529852ce9b47 Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Thu, 9 Feb 2023 16:35:50 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20IssueUrlEnhancer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event-emitter/src/event-emitter.module.ts | 3 +++ .../src/issue-enhancers/issue-url-enhancer.ts | 23 +++++++++++++++++++ src/app.module.ts | 3 +++ 3 files changed, 29 insertions(+) create mode 100644 libs/event-emitter/src/issue-enhancers/issue-url-enhancer.ts diff --git a/libs/event-emitter/src/event-emitter.module.ts b/libs/event-emitter/src/event-emitter.module.ts index d33511c..abbd5f0 100644 --- a/libs/event-emitter/src/event-emitter.module.ts +++ b/libs/event-emitter/src/event-emitter.module.ts @@ -22,6 +22,7 @@ import { ProjectDashboardService } from './project-dashboard/project-dashboard.s import { RootIssueSubTreesWidgetService } from './project-dashboard/widgets/root-issue-subtrees.widget.service'; import { DynamicLoader } from './configs/dynamic-loader'; import { RedminePublicUrlConverter } from './converters/redmine-public-url.converter'; +import { IssueUrlEnhancer } from './issue-enhancers/issue-url-enhancer'; @Module({}) export class EventEmitterModule implements OnModuleInit { @@ -48,6 +49,7 @@ export class EventEmitterModule implements OnModuleInit { RootIssueSubTreesWidgetService, DynamicLoader, RedminePublicUrlConverter, + IssueUrlEnhancer, ], exports: [ EventEmitterService, @@ -66,6 +68,7 @@ export class EventEmitterModule implements OnModuleInit { RootIssueSubTreesWidgetService, DynamicLoader, RedminePublicUrlConverter, + IssueUrlEnhancer, ], controllers: [MainController, UsersController, IssuesController], }; diff --git a/libs/event-emitter/src/issue-enhancers/issue-url-enhancer.ts b/libs/event-emitter/src/issue-enhancers/issue-url-enhancer.ts new file mode 100644 index 0000000..aac1d8b --- /dev/null +++ b/libs/event-emitter/src/issue-enhancers/issue-url-enhancer.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@nestjs/common'; +import { RedminePublicUrlConverter } from '../converters/redmine-public-url.converter'; +import { RedmineTypes } from '../models/redmine-types'; +import { IssueEnhancerInterface } from './issue-enhancer-interface'; + +@Injectable() +export class IssueUrlEnhancer implements IssueEnhancerInterface { + name = 'issue-url'; + + constructor(private redminePublicUrlConverter: RedminePublicUrlConverter) {} + + async enhance( + issue: RedmineTypes.Issue, + ): Promise> { + const res: RedmineTypes.Issue & Record = issue; + res['url'] = { + url: this.redminePublicUrlConverter.getUrl(issue.id), + fullHref: this.redminePublicUrlConverter.getHtmlHref(issue), + minHref: this.redminePublicUrlConverter.getMinHtmlHref(issue.id), + }; + return res; + } +} diff --git a/src/app.module.ts b/src/app.module.ts index c7d9adc..05dd508 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -36,6 +36,7 @@ import { DailyEccmUserCommentsService } from './reports/daily-eccm-user-comments import { SetDailyEccmUserCommentBotHandlerService } from './telegram-bot/handlers/set-daily-eccm-user-comment.bot-handler.service'; import { DailyEccmWithExtraDataService } from './reports/daily-eccm-with-extra-data.service'; import { SimpleKanbanBoardController } from './dashboards/simple-kanban-board.controller'; +import { IssueUrlEnhancer } from '@app/event-emitter/issue-enhancers/issue-url-enhancer'; @Module({ imports: [ @@ -90,6 +91,7 @@ export class AppModule implements OnModuleInit { private timestampEnhancer: TimestampEnhancer, private customFieldsEnhancer: CustomFieldsEnhancer, private currentUserEnhancer: CurrentUserEnhancer, + private issueUrlEnhancer: IssueUrlEnhancer, private statusChangeNotificationsService: StatusChangeNotificationsService, private changesCacheWriterService: ChangesCacheWriterService, private telegramBotService: TelegramBotService, @@ -111,6 +113,7 @@ export class AppModule implements OnModuleInit { this.timestampEnhancer, this.customFieldsEnhancer, this.currentUserEnhancer, + this.issueUrlEnhancer, ]); this.personalNotificationsService.$messages.subscribe((resp) => {