diff options
| author | ikasoba <57828948+ikasoba@users.noreply.github.com> | 2023-10-25 21:19:43 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-25 21:19:43 +0900 |
| commit | dc0582739f8c02be1b7297132872dffd8f3e4755 (patch) | |
| tree | c5411cbb443c6567fc0c290d00afcd0ac6ac0710 /packages/backend/src/server/api/endpoints | |
| parent | feat(AiScript): Mk:nyaize() を追加 (#12136) (diff) | |
| download | sharkey-dc0582739f8c02be1b7297132872dffd8f3e4755.tar.gz sharkey-dc0582739f8c02be1b7297132872dffd8f3e4755.tar.bz2 sharkey-dc0582739f8c02be1b7297132872dffd8f3e4755.zip | |
Fix: STLでフォローしていないチャンネルが表示される問題を修正 (#12143)
* タイムラインをpostgresから取得する際にフォローしていないチャンネルが取得されるのを修正
* CHANGELOGに追記
Diffstat (limited to 'packages/backend/src/server/api/endpoints')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts index 7d0c9f1185..4eeec563d7 100644 --- a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts @@ -5,7 +5,7 @@ import { Brackets } from 'typeorm'; import { Inject, Injectable } from '@nestjs/common'; -import type { NotesRepository, FollowingsRepository, MiNote } from '@/models/_.js'; +import type { NotesRepository, FollowingsRepository, MiNote, ChannelFollowingsRepository } from '@/models/_.js'; import { Endpoint } from '@/server/api/endpoint-base.js'; import ActiveUsersChart from '@/core/chart/charts/active-users.js'; import { NoteEntityService } from '@/core/entities/NoteEntityService.js'; @@ -69,6 +69,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- @Inject(DI.notesRepository) private notesRepository: NotesRepository, + @Inject(DI.channelFollowingsRepository) + private channelFollowingsRepository: ChannelFollowingsRepository, + private noteEntityService: NoteEntityService, private roleService: RoleService, private activeUsersChart: ActiveUsersChart, @@ -208,6 +211,11 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- withReplies: boolean, }, me: MiLocalUser) { const followees = await this.userFollowingService.getFollowees(me.id); + const followingChannels = await this.channelFollowingsRepository.find({ + where: { + followerId: me.id, + }, + }); const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) .andWhere(new Brackets(qb => { @@ -226,6 +234,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- .leftJoinAndSelect('reply.user', 'replyUser') .leftJoinAndSelect('renote.user', 'renoteUser'); + if (followingChannels.length > 0) { + const followingChannelIds = followingChannels.map(x => x.followeeId); + + query.andWhere('note.channelId IN (:...followingChannelIds) OR note.channelId IS NULL', { followingChannelIds }); + } else { + query.andWhere('note.channelId IS NULL'); + } + if (!ps.withReplies) { query.andWhere(new Brackets(qb => { qb |