summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/QueryService.ts
diff options
context:
space:
mode:
authoranatawa12 <anatawa12@icloud.com>2025-05-01 17:56:24 +0900
committerGitHub <noreply@github.com>2025-05-01 17:56:24 +0900
commit2fcb50273d69a798c1368b05bd2de46fae2227bf (patch)
treebc25b73919b1ee62154e1ba0919d3f5534dcf32c /packages/backend/src/core/QueryService.ts
parent[skip ci] Update CHANGELOG.md (prepend template) (diff)
downloadmisskey-2fcb50273d69a798c1368b05bd2de46fae2227bf.tar.gz
misskey-2fcb50273d69a798c1368b05bd2de46fae2227bf.tar.bz2
misskey-2fcb50273d69a798c1368b05bd2de46fae2227bf.zip
Exclude suspended users note from most timelines (#15775)
* feat: exclude notes by suspended user from FTT timeline endpoint * feat: exclude notes by suspended user from DB based timelines * chore: fix types * chore: fix types * chore: fix non-reply / renote * chore: fix non-reply / renote * test: update test * docs(changelog): 凍結されたユーザのノートが各種タイムラインで表示されないように * Exclude suspended users note from featured * fix: join user * Update CHANGELOG.md --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Diffstat (limited to 'packages/backend/src/core/QueryService.ts')
-rw-r--r--packages/backend/src/core/QueryService.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/packages/backend/src/core/QueryService.ts b/packages/backend/src/core/QueryService.ts
index 119eb49c02..e219efaf3d 100644
--- a/packages/backend/src/core/QueryService.ts
+++ b/packages/backend/src/core/QueryService.ts
@@ -287,4 +287,26 @@ export class QueryService {
.andWhere(instanceSuspension('renoteUser'));
}
}
+
+ // Requirements: user replyUser renoteUser must be joined
+ @bindThis
+ public generateSuspendedUserQueryForNote(q: SelectQueryBuilder<any>, excludeAuthor?: boolean): void {
+ if (excludeAuthor) {
+ const brakets = (user: string) => new Brackets(qb => qb
+ .where(`note.${user}Id IS NULL`)
+ .orWhere(`user.id = ${user}.id`)
+ .orWhere(`${user}.isSuspended = FALSE`));
+ q
+ .andWhere(brakets('replyUser'))
+ .andWhere(brakets('renoteUser'));
+ } else {
+ const brakets = (user: string) => new Brackets(qb => qb
+ .where(`note.${user}Id IS NULL`)
+ .orWhere(`${user}.isSuspended = FALSE`));
+ q
+ .andWhere('user.isSuspended = FALSE')
+ .andWhere(brakets('replyUser'))
+ .andWhere(brakets('renoteUser'));
+ }
+ }
}