diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts index 44f4b6a6b0..74dd053e46 100644 --- a/packages/backend/src/core/NoteCreateService.ts +++ b/packages/backend/src/core/NoteCreateService.ts @@ -840,7 +840,7 @@ export class NoteCreateService implements OnApplicationShutdown { select: ['followerId', 'withReplies'], }); - let userLists = await this.userListJoiningsRepository.find({ + const userLists = await this.userListJoiningsRepository.find({ where: { userId: user.id, }, @@ -869,10 +869,11 @@ export class NoteCreateService implements OnApplicationShutdown { } } - if (note.visibility === 'followers') { - // TODO: 重そうだから何とかしたい Set 使う? - userLists = userLists.filter(x => followings.some(f => f.followerId === x.userListId)); - } + // TODO + //if (note.visibility === 'followers') { + // // TODO: 重そうだから何とかしたい Set 使う? + // userLists = userLists.filter(x => followings.some(f => f.followerId === x.userListUserId)); + //} for (const userList of userLists) { // 自分自身以外への返信 diff --git a/packages/backend/test/e2e/timelines.ts b/packages/backend/test/e2e/timelines.ts index 634180f5d5..bd4d5f6009 100644 --- a/packages/backend/test/e2e/timelines.ts +++ b/packages/backend/test/e2e/timelines.ts @@ -516,6 +516,7 @@ describe('Timelines', () => { assert.strictEqual(res.body.some((note: any) => note.id === bobNote.id), true); }); + /* test('リスインしているフォローしていないユーザーの visibility: followers なノートが含まれない', async () => { const [alice, bob] = await Promise.all([signup(), signup()]); @@ -529,6 +530,22 @@ describe('Timelines', () => { assert.strictEqual(res.body.some((note: any) => note.id === bobNote.id), false); }); + */ + + test('リスインしているフォローしていないユーザーの visibility: followers なノートが含まれるが隠される', async () => { + const [alice, bob] = 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: bob.id }, alice); + const bobNote = await post(bob, { text: 'hi', visibility: 'followers' }); + + await sleep(100); // redisに追加されるのを待つ + + const res = await api('/notes/user-list-timeline', { listId: list.id }, alice); + + assert.strictEqual(res.body.some((note: any) => note.id === bobNote.id), true); + assert.strictEqual(res.body.find((note: any) => note.id === bobNote.id).text, null); + }); test('リスインしているフォローしているユーザーの visibility: home なノートが含まれる', async () => { const [alice, bob] = await Promise.all([signup(), signup()]);