backend: improve mutes and blocks

Mutes and blocks now also apply recursively to replies and renotes.
Furthermore, any mentioned user being muted or blocked will also apply.
This commit is contained in:
Chloe Kudryavtsev 2022-07-26 08:12:49 -04:00 committed by ThatOneCalculator
parent f73d6c5bb2
commit 29cdb93104
1 changed files with 5 additions and 13 deletions

View File

@ -1,15 +1,7 @@
export function isUserRelated(note: any, userIds: Set<string>): boolean {
if (userIds.has(note.userId)) {
return true;
}
if (note.reply != null && userIds.has(note.reply.userId)) {
return true;
}
if (note.renote != null && userIds.has(note.renote.userId)) {
return true;
}
export function isUserRelated(note: any, ids: Set<string>): boolean {
if(ids.has(note.userId)) return true; // note author is muted
if(note.mentions && note.mentions.some((user: string) => ids.has(user))) return true; // any of mentioned users are muted
if(note.reply && isUserRelated(note.reply, ids)) return true; // also check reply target
if(note.renote && isUserRelated(note.renote, ids)) return true; // also check renote target
return false;
}