[backend/core] Emit note edit notification for polls that have been voted in

This commit is contained in:
Laura Hausmann 2024-04-24 21:25:44 +02:00
parent 081f1ac646
commit 10d1cb4768
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
2 changed files with 17 additions and 5 deletions

View file

@ -573,10 +573,13 @@ public class User : IEntity
public bool HasReacted(Note note) => ReactedNotes.Contains(note); public bool HasReacted(Note note) => ReactedNotes.Contains(note);
[Projectable] [Projectable]
public bool HasRenoted(Note note) => Notes.Any(p => p.Renote == note); public bool HasRenoted(Note note) => Notes.Any(p => p.Renote == note && p.User == this);
[Projectable] [Projectable]
public bool HasReplied(Note note) => Notes.Any(p => p.Reply == note); public bool HasReplied(Note note) => Notes.Any(p => p.Reply == note && p.User == this);
[Projectable]
public bool HasVoted(Note note) => PollVotes.Any(p => p.Note == note && p.User == this);
[Projectable] [Projectable]
public bool HasInteractedWith(Note note) => public bool HasInteractedWith(Note note) =>
@ -584,7 +587,8 @@ public class User : IEntity
HasReacted(note) || HasReacted(note) ||
HasBookmarked(note) || HasBookmarked(note) ||
HasReplied(note) || HasReplied(note) ||
HasRenoted(note); HasRenoted(note) ||
HasVoted(note);
public User WithPrecomputedBlockStatus(bool blocking, bool blockedBy) public User WithPrecomputedBlockStatus(bool blocking, bool blockedBy)
{ {

View file

@ -449,17 +449,25 @@ public class NoteService(
} }
} }
if (asNote is not ASQuestion || poll == null || isPollEdited || db.Entry(note).State != EntityState.Unchanged) var isEdit = asNote is not ASQuestion ||
poll == null ||
isPollEdited ||
db.Entry(note).State != EntityState.Unchanged;
if (isEdit)
{ {
note.UpdatedAt = updatedAt ?? DateTime.UtcNow; note.UpdatedAt = updatedAt ?? DateTime.UtcNow;
await db.AddAsync(noteEdit); await db.AddAsync(noteEdit);
} }
await db.SaveChangesAsync(); await db.SaveChangesAsync();
eventSvc.RaiseNoteUpdated(this, note);
if (!isEdit) return note;
await notificationSvc.GenerateMentionNotifications(note, mentionedLocalUserIds); await notificationSvc.GenerateMentionNotifications(note, mentionedLocalUserIds);
await notificationSvc.GenerateReplyNotifications(note, mentionedLocalUserIds); await notificationSvc.GenerateReplyNotifications(note, mentionedLocalUserIds);
await notificationSvc.GenerateEditNotifications(note); await notificationSvc.GenerateEditNotifications(note);
eventSvc.RaiseNoteUpdated(this, note);
if (note.LocalOnly || note.User.Host != null) return note; if (note.LocalOnly || note.User.Host != null) return note;