fix(backend): リストTLに自分のフォロワー限定投稿が含まれない問題を修正

Fix #12110
This commit is contained in:
syuilo 2023-10-22 10:40:53 +09:00
parent fd8d253e1e
commit 72327716ca
3 changed files with 19 additions and 3 deletions

View File

@ -12,7 +12,7 @@
-->
## 2023.x.x (unreleased)
## 2023.11.0 (unreleased)
### General
-
@ -23,7 +23,7 @@
https://misskey-hub.net/docs/advanced/publish-on-your-website.html
### Server
-
- Fix: リストTLに自分のフォロワー限定投稿が含まれない問題を修正
## 2023.10.2

View File

@ -868,7 +868,7 @@ export class NoteCreateService implements OnApplicationShutdown {
if (note.visibility === 'followers') {
// TODO: 重そうだから何とかしたい Set 使う?
userListMemberships = userListMemberships.filter(x => followings.some(f => f.followerId === x.userListUserId));
userListMemberships = userListMemberships.filter(x => x.userListUserId === user.id || followings.some(f => f.followerId === x.userListUserId));
}
// TODO: あまりにも数が多いと redisPipeline.exec に失敗する(理由は不明)ため、3万件程度を目安に分割して実行するようにする

View File

@ -947,6 +947,22 @@ describe('Timelines', () => {
assert.strictEqual(res.body.find((note: any) => note.id === bobNote.id).text, 'hi');
});
test.concurrent('リスインしている自分の visibility: followers なノートが含まれる', async () => {
const [alice] = await Promise.all([signup(), signup()]);
const list = await api('/users/lists/create', { name: 'list' }, alice).then(res => res.body);
await api('/users/lists/push', { listId: list.id, userId: alice.id }, alice);
await sleep(1000);
const aliceNote = await post(alice, { text: 'hi', visibility: 'followers' });
await waitForPushToTl();
const res = await api('/notes/user-list-timeline', { listId: list.id }, alice);
assert.strictEqual(res.body.some((note: any) => note.id === aliceNote.id), true);
assert.strictEqual(res.body.find((note: any) => note.id === aliceNote.id).text, 'hi');
});
test.concurrent('リスインしているユーザーのチャンネルノートが含まれない', async () => {
const [alice, bob] = await Promise.all([signup(), signup()]);