リストタイムラインでミュートが貫通してしまう問題に対処 (#12534)

* ユーザリストTL系の各種動作を修正・統一

* fix

* fix CHANGELOG.md

* テスト追加
This commit is contained in:
おさむのひと 2023-12-03 10:19:37 +09:00 committed by GitHub
parent 4de4a2e143
commit c68d87538a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 130 additions and 6 deletions

View file

@ -18,6 +18,7 @@ import { QueryService } from '@/core/QueryService.js';
import { MiLocalUser } from '@/models/User.js';
import { MetaService } from '@/core/MetaService.js';
import { FanoutTimelineEndpointService } from '@/core/FanoutTimelineEndpointService.js';
import { isInstanceMuted } from '@/misc/is-instance-muted.js';
import { ApiError } from '../../error.js';
export const meta = {
@ -124,10 +125,12 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
userIdsWhoMeMuting,
userIdsWhoMeMutingRenotes,
userIdsWhoBlockingMe,
userMutedInstances,
] = await Promise.all([
this.cacheService.userMutingsCache.fetch(me.id),
this.cacheService.renoteMutingsCache.fetch(me.id),
this.cacheService.userBlockedCache.fetch(me.id),
this.cacheService.userProfileCache.fetch(me.id).then(p => new Set(p.mutedInstances)),
]);
const timeline = await this.fanoutTimelineEndpointService.timeline({
@ -150,6 +153,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (ps.withRenotes === false) return false;
}
}
if (isInstanceMuted(note, userMutedInstances)) return false;
return true;
},