From 7bc70db3644926a6db33277da396c271c1ea7bce Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Mon, 3 Oct 2022 17:41:04 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81=D1=81=D1=8B?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=20=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D1=87=D1=83=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D1=89=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=B2=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.module.ts | 2 ++ .../personal-notification.adapter.service.ts | 11 +++++----- .../adapters/public-url.adapter.service.ts | 21 +++++++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 src/notifications/adapters/public-url.adapter.service.ts diff --git a/src/app.module.ts b/src/app.module.ts index bde342a..2931078 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -22,6 +22,7 @@ import { TelegramBotService } from './telegram-bot/telegram-bot.service'; import { UserMetaInfoService } from './user-meta-info/user-meta-info.service'; import { UserMetaInfo } from './couchdb-datasources/user-meta-info'; import { PersonalNotificationAdapterService } from './notifications/adapters/personal-notification.adapter/personal-notification.adapter.service'; +import { PublicUrlAdapterService } from './notifications/adapters/public-url.adapter.service'; @Module({ imports: [ @@ -47,6 +48,7 @@ import { PersonalNotificationAdapterService } from './notifications/adapters/per UserMetaInfoService, UserMetaInfo, PersonalNotificationAdapterService, + PublicUrlAdapterService, ], }) export class AppModule implements OnModuleInit { diff --git a/src/notifications/adapters/personal-notification.adapter/personal-notification.adapter.service.ts b/src/notifications/adapters/personal-notification.adapter/personal-notification.adapter.service.ts index b9bc214..83c645a 100644 --- a/src/notifications/adapters/personal-notification.adapter/personal-notification.adapter.service.ts +++ b/src/notifications/adapters/personal-notification.adapter/personal-notification.adapter.service.ts @@ -4,21 +4,20 @@ import { ConfigService } from '@nestjs/config'; import { IssueAndPersonalParsedMessageModel } from 'src/models/issue-and-personal-parsed-message.model'; import { TelegramBotService } from 'src/telegram-bot/telegram-bot.service'; import Handlebars from 'handlebars'; +import { PublicUrlAdapterService } from '../public-url.adapter.service'; @Injectable() export class PersonalNotificationAdapterService { private personalMessageTemplate: HandlebarsTemplateDelegate; - private redminePublicUrlPrefix: string; constructor( private telegramBotService: TelegramBotService, private configService: ConfigService, private usersService: UsersService, + private publicUrlAdapterService: PublicUrlAdapterService, ) { const template = this.configService.get('personalMessageTemplate'); this.personalMessageTemplate = Handlebars.compile(template); - this.redminePublicUrlPrefix = - this.configService.get('redmineUrlPublic'); } async send( @@ -27,9 +26,9 @@ export class PersonalNotificationAdapterService { const promises = issueAndMessages.personalParsedMessage.recipients.map( async (recipient) => { const redmineId = recipient; - const issueUrl = `${this.redminePublicUrlPrefix}/issues/${issueAndMessages.issue.id}`; - const issue = issueAndMessages.issue; - const issueUrlHtml = `${issue.tracker.name} #${issue.id}`; + const issueUrlHtml = this.publicUrlAdapterService.getHtmlHref( + issueAndMessages.issue, + ); const sender = await this.usersService.getUser( issueAndMessages.personalParsedMessage.sender, ); diff --git a/src/notifications/adapters/public-url.adapter.service.ts b/src/notifications/adapters/public-url.adapter.service.ts new file mode 100644 index 0000000..fe2b4de --- /dev/null +++ b/src/notifications/adapters/public-url.adapter.service.ts @@ -0,0 +1,21 @@ +import { RedmineTypes } from '@app/event-emitter/models/redmine-types'; +import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; + +@Injectable() +export class PublicUrlAdapterService { + private publicUrl: string; + + constructor(private configService: ConfigService) { + this.publicUrl = this.configService.get('redmineUrlPublic'); + } + + getUrl(issueId: number): string { + return `${this.publicUrl}/issues/${issueId}`; + } + + getHtmlHref(issue: RedmineTypes.Issue): string { + const url = this.getUrl(issue.id); + return `${issue.tracker.name} #${issue.id}`; + } +}