summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/FanoutTimelineEndpointService.ts
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2025-07-30 21:41:46 +0900
committerGitHub <noreply@github.com>2025-07-30 21:41:46 +0900
commit8c65d8d0202c5abce3b2104b5b0f24869dd6e54c (patch)
tree728faf0751a7a0560d223fe4deeed3107ee83b91 /packages/backend/src/core/FanoutTimelineEndpointService.ts
parentfix(frontend): inline な SearchMarker のパスが正しくない問題を... (diff)
downloadmisskey-8c65d8d0202c5abce3b2104b5b0f24869dd6e54c.tar.gz
misskey-8c65d8d0202c5abce3b2104b5b0f24869dd6e54c.tar.bz2
misskey-8c65d8d0202c5abce3b2104b5b0f24869dd6e54c.zip
test(backend): e2e/timelines.ts: 非FTT時のテストを追加, 凍結のテストを追加, これにかかる幾つかのバグ修正 (#16284)
* test(backend): 非FTT時のテストを追加 * clean up * skip test about reply * Fix #16289 * clean up * cherry pick * add renote test * Fix https://github.com/misskey-dev/misskey/issues/16293 * remove debug log
Diffstat (limited to 'packages/backend/src/core/FanoutTimelineEndpointService.ts')
-rw-r--r--packages/backend/src/core/FanoutTimelineEndpointService.ts16
1 files changed, 7 insertions, 9 deletions
diff --git a/packages/backend/src/core/FanoutTimelineEndpointService.ts b/packages/backend/src/core/FanoutTimelineEndpointService.ts
index 97b617096a..94c5691bf4 100644
--- a/packages/backend/src/core/FanoutTimelineEndpointService.ts
+++ b/packages/backend/src/core/FanoutTimelineEndpointService.ts
@@ -20,6 +20,8 @@ import { CacheService } from '@/core/CacheService.js';
import { isReply } from '@/misc/is-reply.js';
import { isInstanceMuted } from '@/misc/is-instance-muted.js';
+type NoteFilter = (note: MiNote) => boolean;
+
type TimelineOptions = {
untilId: string | null,
sinceId: string | null,
@@ -28,7 +30,7 @@ type TimelineOptions = {
me?: { id: MiUser['id'] } | undefined | null,
useDbFallback: boolean,
redisTimelines: FanoutTimelineName[],
- noteFilter?: (note: MiNote) => boolean,
+ noteFilter?: NoteFilter,
alwaysIncludeMyNotes?: boolean;
ignoreAuthorFromBlock?: boolean;
ignoreAuthorFromMute?: boolean;
@@ -79,7 +81,7 @@ export class FanoutTimelineEndpointService {
const shouldFallbackToDb = noteIds.length === 0 || ps.sinceId != null && ps.sinceId < oldestNoteId;
if (!shouldFallbackToDb) {
- let filter = ps.noteFilter ?? (_note => true);
+ let filter = ps.noteFilter ?? (_note => true) as NoteFilter;
if (ps.alwaysIncludeMyNotes && ps.me) {
const me = ps.me;
@@ -145,15 +147,11 @@ export class FanoutTimelineEndpointService {
{
const parentFilter = filter;
filter = (note) => {
- const noteJoined = note as MiNote & {
- renoteUser: MiUser | null;
- replyUser: MiUser | null;
- };
if (!ps.ignoreAuthorFromUserSuspension) {
if (note.user!.isSuspended) return false;
}
- if (note.userId !== note.renoteUserId && noteJoined.renoteUser?.isSuspended) return false;
- if (note.userId !== note.replyUserId && noteJoined.replyUser?.isSuspended) return false;
+ if (note.userId !== note.renoteUserId && note.renote?.user?.isSuspended) return false;
+ if (note.userId !== note.replyUserId && note.reply?.user?.isSuspended) return false;
return parentFilter(note);
};
@@ -200,7 +198,7 @@ export class FanoutTimelineEndpointService {
return await ps.dbFallback(ps.untilId, ps.sinceId, ps.limit);
}
- private async getAndFilterFromDb(noteIds: string[], noteFilter: (note: MiNote) => boolean, idCompare: (a: string, b: string) => number): Promise<MiNote[]> {
+ private async getAndFilterFromDb(noteIds: string[], noteFilter: NoteFilter, idCompare: (a: string, b: string) => number): Promise<MiNote[]> {
const query = this.notesRepository.createQueryBuilder('note')
.where('note.id IN (:...noteIds)', { noteIds: noteIds })
.innerJoinAndSelect('note.user', 'user')