From 29cdb93104a1398cf9b3637dbbf16bb8b2ca427d Mon Sep 17 00:00:00 2001 From: Chloe Kudryavtsev Date: Tue, 26 Jul 2022 08:12:49 -0400 Subject: [PATCH] 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. --- packages/backend/src/misc/is-user-related.ts | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/packages/backend/src/misc/is-user-related.ts b/packages/backend/src/misc/is-user-related.ts index e6bbdb5d3..a1811c3ce 100644 --- a/packages/backend/src/misc/is-user-related.ts +++ b/packages/backend/src/misc/is-user-related.ts @@ -1,15 +1,7 @@ -export function isUserRelated(note: any, userIds: Set): 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): 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; }