summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-10-11 17:29:24 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-10-11 17:29:24 +0900
commita26d9ea132f3a8a48109083f014abc377614d719 (patch)
treee9d00e0ab4194c5d9b1907a70a0aec04b7f9958f
parentupdate test (diff)
downloadmisskey-a26d9ea132f3a8a48109083f014abc377614d719.tar.gz
misskey-a26d9ea132f3a8a48109083f014abc377614d719.tar.bz2
misskey-a26d9ea132f3a8a48109083f014abc377614d719.zip
enhance(backend): LTLでフォローしているユーザーからの自分への返信が含まれるように
-rw-r--r--packages/backend/src/server/api/endpoints/notes/local-timeline.ts5
-rw-r--r--packages/backend/test/e2e/timelines.ts5
2 files changed, 3 insertions, 7 deletions
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 55b5d47386..d10c3bedbf 100644
--- a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts
@@ -95,15 +95,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (ps.withFiles) {
noteIds = await this.redisTimelineService.get('localTimelineWithFiles', untilId, sinceId);
- } else if (ps.withReplies) {
+ } else {
const [nonReplyNoteIds, replyNoteIds] = await this.redisTimelineService.getMulti([
'localTimeline',
'localTimelineWithReplies',
], untilId, sinceId);
noteIds = Array.from(new Set([...nonReplyNoteIds, ...replyNoteIds]));
noteIds.sort((a, b) => a > b ? -1 : 1);
- } else {
- noteIds = await this.redisTimelineService.get('localTimeline', untilId, sinceId);
}
noteIds = noteIds.slice(0, ps.limit);
@@ -127,6 +125,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (me && (note.userId === me.id)) {
return true;
}
+ if (!ps.withReplies && note.replyId && (me == null || note.replyUserId !== me.id)) return false;
if (me && isUserRelated(note, userIdsWhoBlockingMe)) return false;
if (me && isUserRelated(note, userIdsWhoMeMuting)) return false;
if (note.renoteId) {
diff --git a/packages/backend/test/e2e/timelines.ts b/packages/backend/test/e2e/timelines.ts
index ce92a36cf9..cd27b094ea 100644
--- a/packages/backend/test/e2e/timelines.ts
+++ b/packages/backend/test/e2e/timelines.ts
@@ -19,7 +19,7 @@ function genHost() {
}
function waitForPushToTl() {
- return sleep(300);
+ return sleep(500);
}
let app: INestApplicationContext;
@@ -619,7 +619,6 @@ describe('Timelines', () => {
assert.strictEqual(res.body.some((note: any) => note.id === carolNote.id), false);
});
- /* 実装が面倒
test.concurrent('withReplies: false でフォローしているユーザーからの自分への返信が含まれる', async () => {
const [alice, bob] = await Promise.all([signup(), signup()]);
@@ -635,7 +634,6 @@ describe('Timelines', () => {
assert.strictEqual(res.body.some((note: any) => note.id === aliceNote.id), true);
assert.strictEqual(res.body.some((note: any) => note.id === bobNote.id), true);
});
- */
test.concurrent('[withReplies: true] 他人の他人への返信が含まれる', async () => {
const [alice, bob, carol] = await Promise.all([signup(), signup(), signup()]);
@@ -786,7 +784,6 @@ describe('Timelines', () => {
const res = await api('/notes/hybrid-timeline', { withReplies: true }, alice);
assert.strictEqual(res.body.some((note: any) => note.id === bobNote.id), true);
- assert.strictEqual(res.body.some((note: any) => note.id === carolNote.id), true);
});
test.concurrent('[withFiles: true] ファイル付きノートのみ含まれる', async () => {