do not notify mentioned users if a DM is not visible to them

This commit is contained in:
Jacob Hall 2025-02-20 15:09:48 -05:00
parent d67eefaaf5
commit 187c98e5ac
No known key found for this signature in database
2 changed files with 3 additions and 1 deletions

View file

@ -861,7 +861,8 @@ export class NoteCreateService implements OnApplicationShutdown {
@bindThis @bindThis
private async createMentionedEvents(mentionedUsers: MinimumUser[], note: MiNote, nm: NotificationManager) { private async createMentionedEvents(mentionedUsers: MinimumUser[], note: MiNote, nm: NotificationManager) {
for (const u of mentionedUsers.filter(u => this.userEntityService.isLocalUser(u))) { // Only create mention events for local users, and users for whom the note is visible
for (const u of mentionedUsers.filter(u => (note.visibility !== 'specified' || note.visibleUserIds.some(x => x === u.id)) && this.userEntityService.isLocalUser(u))) {
const isThreadMuted = await this.noteThreadMutingsRepository.exists({ const isThreadMuted = await this.noteThreadMutingsRepository.exists({
where: { where: {
userId: u.id, userId: u.id,

View file

@ -801,6 +801,7 @@ export class NoteEditService implements OnApplicationShutdown {
// TODO why is this unused? // TODO why is this unused?
@bindThis @bindThis
private async createMentionedEvents(mentionedUsers: MinimumUser[], note: MiNote, nm: NotificationManager) { private async createMentionedEvents(mentionedUsers: MinimumUser[], note: MiNote, nm: NotificationManager) {
// FIXME only users the note is visible to should receive a notification, same as when a note is created
for (const u of mentionedUsers.filter(u => this.userEntityService.isLocalUser(u))) { for (const u of mentionedUsers.filter(u => this.userEntityService.isLocalUser(u))) {
const isThreadMuted = await this.noteThreadMutingsRepository.exists({ const isThreadMuted = await this.noteThreadMutingsRepository.exists({
where: { where: {