diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-18 17:17:56 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-18 17:17:56 +0900 |
| commit | ae1e276085b00f34f0f2dce8d25271c3e7246fa3 (patch) | |
| tree | 683987053462bbde8e02a1d6a933fc0fa6df6526 /packages/backend/src/server | |
| parent | enhance(backend): improve fanout tl for stl (diff) | |
| download | sharkey-ae1e276085b00f34f0f2dce8d25271c3e7246fa3.tar.gz sharkey-ae1e276085b00f34f0f2dce8d25271c3e7246fa3.tar.bz2 sharkey-ae1e276085b00f34f0f2dce8d25271c3e7246fa3.zip | |
fix of 6cc02fee99
Diffstat (limited to 'packages/backend/src/server')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts | 13 | ||||
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/timeline.ts | 14 |
2 files changed, 23 insertions, 4 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 faaeb32c79..9986c6e436 100644 --- a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts @@ -163,8 +163,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- } else { // fallback to db const followees = await this.userFollowingService.getFollowees(me.id); - const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), - ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) + const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) .andWhere(new Brackets(qb => { if (followees.length > 0) { const meOrFolloweeIds = [me.id, ...followees.map(f => f.followeeId)]; @@ -181,6 +180,16 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- .leftJoinAndSelect('reply.user', 'replyUser') .leftJoinAndSelect('renote.user', 'renoteUser'); + query.andWhere(new Brackets(qb => { + qb + .where('note.replyId IS NULL') // 返信ではない + .orWhere(new Brackets(qb => { + qb // 返信だけど投稿者自身への返信 + .where('note.replyId IS NOT NULL') + .andWhere('note.replyUserId = note.userId'); + })); + })); + this.queryService.generateVisibilityQuery(query, me); this.queryService.generateMutedUserQuery(query, me); this.queryService.generateBlockedUserQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts index 8660e1602b..3b597107ae 100644 --- a/packages/backend/src/server/api/endpoints/notes/timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts @@ -127,8 +127,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- const followees = await this.userFollowingService.getFollowees(me.id); //#region Construct query - const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), - ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) + const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) + .andWhere('note.channelId IS NULL') .innerJoinAndSelect('note.user', 'user') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') @@ -143,6 +143,16 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- query.andWhere('note.userId = :meId', { meId: me.id }); } + query.andWhere(new Brackets(qb => { + qb + .where('note.replyId IS NULL') // 返信ではない + .orWhere(new Brackets(qb => { + qb // 返信だけど投稿者自身への返信 + .where('note.replyId IS NOT NULL') + .andWhere('note.replyUserId = note.userId'); + })); + })); + this.queryService.generateVisibilityQuery(query, me); this.queryService.generateMutedUserQuery(query, me); this.queryService.generateBlockedUserQuery(query, me); |