summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-10-22 10:40:53 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-10-22 10:40:53 +0900
commit72327716ca34dd28e515ebbc281fc4808d2291f1 (patch)
treea3d6924ac7076337551f9b43fc60ece250b39ca8
parent:art: (diff)
downloadmisskey-72327716ca34dd28e515ebbc281fc4808d2291f1.tar.gz
misskey-72327716ca34dd28e515ebbc281fc4808d2291f1.tar.bz2
misskey-72327716ca34dd28e515ebbc281fc4808d2291f1.zip
fix(backend): リストTLに自分のフォロワー限定投稿が含まれない問題を修正
Fix #12110
-rw-r--r--CHANGELOG.md4
-rw-r--r--packages/backend/src/core/NoteCreateService.ts2
-rw-r--r--packages/backend/test/e2e/timelines.ts16
3 files changed, 19 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2613e6682c..d6db941cdb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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
diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts
index 364a300d23..fae512336d 100644
--- a/packages/backend/src/core/NoteCreateService.ts
+++ b/packages/backend/src/core/NoteCreateService.ts
@@ -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万件程度を目安に分割して実行するようにする
diff --git a/packages/backend/test/e2e/timelines.ts b/packages/backend/test/e2e/timelines.ts
index 28f07bf3f7..974d2f6820 100644
--- a/packages/backend/test/e2e/timelines.ts
+++ b/packages/backend/test/e2e/timelines.ts
@@ -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()]);