diff --git a/packages/backend/src/core/FanoutTimelineEndpointService.ts b/packages/backend/src/core/FanoutTimelineEndpointService.ts index 0e0f854a5c..78c14b9cde 100644 --- a/packages/backend/src/core/FanoutTimelineEndpointService.ts +++ b/packages/backend/src/core/FanoutTimelineEndpointService.ts @@ -12,7 +12,6 @@ import { Packed } from '@/misc/json-schema.js'; import type { NotesRepository } from '@/models/_.js'; import { NoteEntityService } from '@/core/entities/NoteEntityService.js'; import { FanoutTimelineService } from '@/core/FanoutTimelineService.js'; -import { MetaService } from '@/core/MetaService.js'; @Injectable() export class FanoutTimelineEndpointService { @@ -22,7 +21,6 @@ export class FanoutTimelineEndpointService { private noteEntityService: NoteEntityService, private fanoutTimelineService: FanoutTimelineService, - private metaService: MetaService, ) { } @@ -32,6 +30,7 @@ export class FanoutTimelineEndpointService { sinceId: string | null, limit: number, me?: { id: MiUser['id'] } | undefined | null, + useDbFallback: boolean, redisTimelines: (string | { name: string, fallbackIfEmpty: boolean })[], noteFilter: (note: MiNote) => boolean, dbFallback: (untilId: string | null, sinceId: string | null, limit: number) => Promise, @@ -83,7 +82,7 @@ export class FanoutTimelineEndpointService { } } - if ((await this.metaService.fetch()).enableFanoutTimelineDbFallback) { // fallback to db + if (ps.useDbFallback) { // fallback to db const timeline = await ps.dbFallback(ps.untilId, ps.sinceId, ps.limit); return await this.noteEntityService.packMany(timeline, ps.me); diff --git a/packages/backend/src/server/api/endpoints/channels/timeline.ts b/packages/backend/src/server/api/endpoints/channels/timeline.ts index f3fe315972..02429c2bd9 100644 --- a/packages/backend/src/server/api/endpoints/channels/timeline.ts +++ b/packages/backend/src/server/api/endpoints/channels/timeline.ts @@ -104,6 +104,7 @@ export default class extends Endpoint { // eslint- sinceId, limit: ps.limit, me, + useDbFallback: true, redisTimelines: [`channelTimeline:${channel.id}`], noteFilter: note => { if (me && isUserRelated(note, userIdsWhoMeMuting)) return false; 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 47f4443178..0d8a361c23 100644 --- a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts @@ -144,8 +144,11 @@ export default class extends Endpoint { // eslint- } const redisTimeline = await this.fanoutTimelineEndpointService.timeline({ - untilId, sinceId, limit: ps.limit, + untilId, + sinceId, + limit: ps.limit, redisTimelines: timelineConfig, + useDbFallback: serverSettings.enableFanoutTimelineDbFallback, noteFilter: (note) => { if (note.userId === me.id) { return true; diff --git a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts index fbf770e94f..5b55f5325a 100644 --- a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts @@ -118,6 +118,7 @@ export default class extends Endpoint { // eslint- sinceId, limit: ps.limit, me, + useDbFallback: serverSettings.enableFanoutTimelineDbFallback, redisTimelines: ps.withFiles ? ['localTimelineWithFiles'] : ['localTimeline', 'localTimelineWithReplies'], noteFilter: note => { if (me && (note.userId === me.id)) { diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts index 44dc81f4b6..6120abac06 100644 --- a/packages/backend/src/server/api/endpoints/notes/timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts @@ -112,6 +112,7 @@ export default class extends Endpoint { // eslint- sinceId, limit: ps.limit, me, + useDbFallback: serverSettings.enableFanoutTimelineDbFallback, redisTimelines: ps.withFiles ? [`homeTimelineWithFiles:${me.id}`] : [`homeTimeline:${me.id}`], noteFilter: note => { if (note.userId === me.id) { diff --git a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts index a471c6d6a8..3d5991d71c 100644 --- a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts @@ -134,6 +134,7 @@ export default class extends Endpoint { // eslint- sinceId, limit: ps.limit, me, + useDbFallback: serverSettings.enableFanoutTimelineDbFallback, redisTimelines: ps.withFiles ? [`userListTimelineWithFiles:${list.id}`] : [`userListTimeline:${list.id}`], noteFilter: note => { if (note.userId === me.id) { diff --git a/packages/backend/src/server/api/endpoints/users/notes.ts b/packages/backend/src/server/api/endpoints/users/notes.ts index 0f30f9b85e..81fdc84adb 100644 --- a/packages/backend/src/server/api/endpoints/users/notes.ts +++ b/packages/backend/src/server/api/endpoints/users/notes.ts @@ -110,6 +110,7 @@ export default class extends Endpoint { // eslint- limit: ps.limit, me, redisTimelines, + useDbFallback: true, noteFilter: note => { if (me && isUserRelated(note, userIdsWhoMeMuting, true)) return false;