From 4d20fbeb523959e89d9809ba3bca5e5423356963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AC=B4=EB=9D=BC=EC=BF=A0=EB=AA=A8?= Date: Mon, 13 May 2024 21:50:16 +0900 Subject: [PATCH] enhance(antenna): if antenna author is following them, add to it --- packages/backend/src/core/AntennaService.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/core/AntennaService.ts b/packages/backend/src/core/AntennaService.ts index 0ac6f7038..6e33a1fed 100644 --- a/packages/backend/src/core/AntennaService.ts +++ b/packages/backend/src/core/AntennaService.ts @@ -12,7 +12,7 @@ import { GlobalEventService } from '@/core/GlobalEventService.js'; import * as Acct from '@/misc/acct.js'; import type { Packed } from '@/misc/json-schema.js'; import { DI } from '@/di-symbols.js'; -import type { AntennasRepository, UserListMembershipsRepository } from '@/models/_.js'; +import type { AntennasRepository, FollowingsRepository, UserListMembershipsRepository } from '@/models/_.js'; import { UtilityService } from '@/core/UtilityService.js'; import { bindThis } from '@/decorators.js'; import type { GlobalEvents } from '@/core/GlobalEventService.js'; @@ -35,6 +35,9 @@ export class AntennaService implements OnApplicationShutdown { @Inject(DI.antennasRepository) private antennasRepository: AntennasRepository, + @Inject(DI.followingsRepository) + private followingsRepository: FollowingsRepository, + @Inject(DI.userListMembershipsRepository) private userListMembershipsRepository: UserListMembershipsRepository, @@ -123,7 +126,12 @@ export class AntennaService implements OnApplicationShutdown { @bindThis public async checkHitAntenna(antenna: MiAntenna, note: (MiNote | Packed<'Note'>), noteUser: { id: MiUser['id']; username: string; host: string | null; isBot: boolean; }): Promise { if (note.visibility === 'specified') return false; - if (note.visibility === 'followers') return false; + if (note.visibility === 'followers') { + if (!antenna.user) return false; + + const followingAuthor = await this.followingsRepository.findOneBy({ followeeId: noteUser.id, followerId: antenna.user.id }); + if (!followingAuthor) return false; + } if (antenna.excludeBots && noteUser.isBot) return false;