From 0680ea3a78597d95464291d1fb9e703b46b7b1de Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Mon, 9 Oct 2023 16:54:27 +0900
Subject: [PATCH] =?UTF-8?q?fix(backend):=20users/notes=20=E3=81=A7?=
 =?UTF-8?q?=E9=80=94=E4=B8=AD=E3=81=BE=E3=81=A7=E3=81=97=E3=81=8B=E3=83=9A?=
 =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=8D=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3?=
 =?UTF-8?q?=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=8F=E3=81=AA=E3=82=8B=E3=81=93?=
 =?UTF-8?q?=E3=81=A8=E3=81=8C=E3=81=82=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?=
 =?UTF-8?q?=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/server/api/endpoints/users/notes.ts   | 76 ++++++++++---------
 1 file changed, 39 insertions(+), 37 deletions(-)

diff --git a/packages/backend/src/server/api/endpoints/users/notes.ts b/packages/backend/src/server/api/endpoints/users/notes.ts
index 5736aad5f9..62b2119a2c 100644
--- a/packages/backend/src/server/api/endpoints/users/notes.ts
+++ b/packages/backend/src/server/api/endpoints/users/notes.ts
@@ -144,45 +144,47 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 
 				timeline.sort((a, b) => a.id > b.id ? -1 : 1);
 
-				return await this.noteEntityService.packMany(timeline, me);
-			} else {
-				// fallback to database
-
-				//#region Construct query
-				const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate)
-					.andWhere('note.userId = :userId', { userId: ps.userId })
-					.innerJoinAndSelect('note.user', 'user')
-					.leftJoinAndSelect('note.reply', 'reply')
-					.leftJoinAndSelect('note.renote', 'renote')
-					.leftJoinAndSelect('note.channel', 'channel')
-					.leftJoinAndSelect('reply.user', 'replyUser')
-					.leftJoinAndSelect('renote.user', 'renoteUser');
-
-				if (!ps.withChannelNotes) {
-					query.andWhere('note.channelId IS NULL');
+				if (timeline.length > 0) {
+					return await this.noteEntityService.packMany(timeline, me);
 				}
-
-				this.queryService.generateVisibilityQuery(query, me);
-
-				if (ps.withFiles) {
-					query.andWhere('note.fileIds != \'{}\'');
-				}
-
-				if (ps.includeMyRenotes === false) {
-					query.andWhere(new Brackets(qb => {
-						qb.orWhere('note.userId != :userId', { userId: ps.userId });
-						qb.orWhere('note.renoteId IS NULL');
-						qb.orWhere('note.text IS NOT NULL');
-						qb.orWhere('note.fileIds != \'{}\'');
-						qb.orWhere('0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)');
-					}));
-				}
-				//#endregion
-
-				const timeline = await query.limit(ps.limit).getMany();
-
-				return await this.noteEntityService.packMany(timeline, me);
 			}
+
+			// fallback to database
+
+			//#region Construct query
+			const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate)
+				.andWhere('note.userId = :userId', { userId: ps.userId })
+				.innerJoinAndSelect('note.user', 'user')
+				.leftJoinAndSelect('note.reply', 'reply')
+				.leftJoinAndSelect('note.renote', 'renote')
+				.leftJoinAndSelect('note.channel', 'channel')
+				.leftJoinAndSelect('reply.user', 'replyUser')
+				.leftJoinAndSelect('renote.user', 'renoteUser');
+
+			if (!ps.withChannelNotes) {
+				query.andWhere('note.channelId IS NULL');
+			}
+
+			this.queryService.generateVisibilityQuery(query, me);
+
+			if (ps.withFiles) {
+				query.andWhere('note.fileIds != \'{}\'');
+			}
+
+			if (ps.includeMyRenotes === false) {
+				query.andWhere(new Brackets(qb => {
+					qb.orWhere('note.userId != :userId', { userId: ps.userId });
+					qb.orWhere('note.renoteId IS NULL');
+					qb.orWhere('note.text IS NOT NULL');
+					qb.orWhere('note.fileIds != \'{}\'');
+					qb.orWhere('0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)');
+				}));
+			}
+			//#endregion
+
+			const timeline = await query.limit(ps.limit).getMany();
+
+			return await this.noteEntityService.packMany(timeline, me);
 		});
 	}
 }