diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-09-24 10:46:09 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-09-24 10:46:09 +0900 |
| commit | ed983a5baf581b28b063edfa25e0d80349e9318e (patch) | |
| tree | 4d78cc23cfac3ef19a5893711fccc0811a3b2589 /packages/backend/src/core/AnnouncementService.ts | |
| parent | improve moderation log (diff) | |
| download | misskey-ed983a5baf581b28b063edfa25e0d80349e9318e.tar.gz misskey-ed983a5baf581b28b063edfa25e0d80349e9318e.tar.bz2 misskey-ed983a5baf581b28b063edfa25e0d80349e9318e.zip | |
improve moderation log
Diffstat (limited to 'packages/backend/src/core/AnnouncementService.ts')
| -rw-r--r-- | packages/backend/src/core/AnnouncementService.ts | 77 |
1 files changed, 67 insertions, 10 deletions
diff --git a/packages/backend/src/core/AnnouncementService.ts b/packages/backend/src/core/AnnouncementService.ts index 31fcb139ea..2b4877788a 100644 --- a/packages/backend/src/core/AnnouncementService.ts +++ b/packages/backend/src/core/AnnouncementService.ts @@ -60,7 +60,7 @@ export class AnnouncementService { } @bindThis - public async create(values: Partial<MiAnnouncement>, moderator: MiUser): Promise<{ raw: MiAnnouncement; packed: Packed<'Announcement'> }> { + public async create(values: Partial<MiAnnouncement>, moderator?: MiUser): Promise<{ raw: MiAnnouncement; packed: Packed<'Announcement'> }> { const announcement = await this.announcementsRepository.insert({ id: this.idService.genId(), createdAt: new Date(), @@ -82,20 +82,24 @@ export class AnnouncementService { announcement: packed, }); - this.moderationLogService.log(moderator, 'createUserAnnouncement', { - announcementId: announcement.id, - announcement: announcement, - userId: values.userId, - }); + if (moderator) { + this.moderationLogService.log(moderator, 'createUserAnnouncement', { + announcementId: announcement.id, + announcement: announcement, + userId: values.userId, + }); + } } else { this.globalEventService.publishBroadcastStream('announcementCreated', { announcement: packed, }); - this.moderationLogService.log(moderator, 'createGlobalAnnouncement', { - announcementId: announcement.id, - announcement: announcement, - }); + if (moderator) { + this.moderationLogService.log(moderator, 'createGlobalAnnouncement', { + announcementId: announcement.id, + announcement: announcement, + }); + } } return { @@ -105,6 +109,59 @@ export class AnnouncementService { } @bindThis + public async update(announcement: MiAnnouncement, values: Partial<MiAnnouncement>, moderator?: MiUser): Promise<void> { + await this.announcementsRepository.update(announcement.id, { + updatedAt: new Date(), + title: values.title, + text: values.text, + /* eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- 空の文字列の場合、nullを渡すようにするため */ + imageUrl: values.imageUrl || null, + display: values.display, + icon: values.icon, + forExistingUsers: values.forExistingUsers, + needConfirmationToRead: values.needConfirmationToRead, + isActive: values.isActive, + }); + + const after = await this.announcementsRepository.findOneByOrFail({ id: announcement.id }); + + if (moderator) { + if (announcement.userId) { + this.moderationLogService.log(moderator, 'updateUserAnnouncement', { + announcementId: announcement.id, + before: announcement, + after: after, + }); + } else { + this.moderationLogService.log(moderator, 'updateGlobalAnnouncement', { + announcementId: announcement.id, + before: announcement, + after: after, + }); + } + } + } + + @bindThis + public async delete(announcement: MiAnnouncement, moderator?: MiUser): Promise<void> { + await this.announcementsRepository.delete(announcement.id); + + if (moderator) { + if (announcement.userId) { + this.moderationLogService.log(moderator, 'deleteUserAnnouncement', { + announcementId: announcement.id, + announcement: announcement, + }); + } else { + this.moderationLogService.log(moderator, 'deleteGlobalAnnouncement', { + announcementId: announcement.id, + announcement: announcement, + }); + } + } + } + + @bindThis public async read(user: MiUser, announcementId: MiAnnouncement['id']): Promise<void> { try { await this.announcementReadsRepository.insert({ |