From ec58221ee66d8b2595c5dd9b1c65fbc8cd75782d Mon Sep 17 00:00:00 2001 From: Innei Date: Wed, 17 Apr 2024 20:38:33 +0800 Subject: [PATCH] fix: comment filter Signed-off-by: Innei --- .../src/modules/activity/activity.service.ts | 11 ++++++++- .../src/modules/recently/recently.service.ts | 24 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/core/src/modules/activity/activity.service.ts b/apps/core/src/modules/activity/activity.service.ts index f13ccce2..59dc0afe 100644 --- a/apps/core/src/modules/activity/activity.service.ts +++ b/apps/core/src/modules/activity/activity.service.ts @@ -35,6 +35,7 @@ import { getAvatar } from '~/utils' import { CommentState } from '../comment/comment.model' import { CommentService } from '../comment/comment.service' +import { ConfigsService } from '../configs/configs.service' import { Activity } from './activity.constant' import { ActivityModel } from './activity.model' import { @@ -65,6 +66,7 @@ export class ActivityService implements OnModuleInit, OnModuleDestroy { private readonly webGateway: WebEventsGateway, private readonly gatewayService: GatewayService, + private readonly configsService: ConfigsService, ) { this.logger = new Logger(ActivityService.name) } @@ -498,10 +500,17 @@ export class ActivityService implements OnModuleInit, OnModuleDestroy { } async getRecentComment() { + const configs = await this.configsService.get('commentOptions') + const { commentShouldAudit } = configs + const docs = await this.commentService.model .find({ isWhispers: false, - state: CommentState.Read, + state: commentShouldAudit + ? CommentState.Read + : { + $in: [CommentState.Read, CommentState.Unread], + }, }) .populate('ref', 'title nid slug category') diff --git a/apps/core/src/modules/recently/recently.service.ts b/apps/core/src/modules/recently/recently.service.ts index 2509ce97..70757d3d 100644 --- a/apps/core/src/modules/recently/recently.service.ts +++ b/apps/core/src/modules/recently/recently.service.ts @@ -20,7 +20,9 @@ import { InjectModel } from '~/transformers/model.transformer' import { getRedisKey, scheduleManager } from '~/utils' import { normalizeRefType } from '~/utils/database.util' +import { CommentState } from '../comment/comment.model' import { CommentService } from '../comment/comment.service' +import { ConfigsService } from '../configs/configs.service' import { RecentlyAttitudeEnum } from './recently.dto' import { RecentlyModel } from './recently.model' @@ -36,6 +38,7 @@ export class RecentlyService { private readonly cacheService: CacheService, @Inject(forwardRef(() => CommentService)) private readonly commentService: CommentService, + private readonly configsService: ConfigsService, ) {} public get model() { @@ -179,6 +182,9 @@ export class RecentlyService { }) { size = size ?? 10 + const configs = await this.configsService.get('commentOptions') + const { commentShouldAudit } = configs + const result = await this.recentlyModel.aggregate([ { $match: after @@ -198,6 +204,24 @@ export class RecentlyService { as: 'comment', foreignField: 'ref', localField: '_id', + pipeline: [ + { + $match: commentShouldAudit + ? { + state: CommentState.Read, + } + : { + $or: [ + { + state: CommentState.Read, + }, + { + state: CommentState.Unread, + }, + ], + }, + }, + ], }, },