[backend/federation] Fix polls being falsely marked as edited when results become available (ISH-128)
This commit is contained in:
parent
4bf4f369b8
commit
b7ddbdcbaa
1 changed files with 19 additions and 4 deletions
|
@ -659,8 +659,11 @@ public class NoteService(
|
|||
|
||||
if (dbNote.Text is not null)
|
||||
{
|
||||
dbNote.Mentions = mentionedUserIds;
|
||||
dbNote.MentionedRemoteUsers = remoteMentions;
|
||||
if (!dbNote.Mentions.SequenceEqual(mentionedUserIds))
|
||||
dbNote.Mentions = mentionedUserIds;
|
||||
if (!dbNote.MentionedRemoteUsers.SequenceEqual(remoteMentions))
|
||||
dbNote.MentionedRemoteUsers = remoteMentions;
|
||||
|
||||
if (dbNote.Visibility == Note.NoteVisibility.Specified)
|
||||
{
|
||||
var visibleUserIds = (await note.GetRecipients(actor)
|
||||
|
@ -673,13 +676,17 @@ public class NoteService(
|
|||
visibleUserIds.Add(dbNote.ReplyUserId);
|
||||
|
||||
// We want to make sure not to revoke visibility
|
||||
dbNote.VisibleUserIds = visibleUserIds.Concat(dbNote.VisibleUserIds).Distinct().ToList();
|
||||
var missing = visibleUserIds.Except(dbNote.VisibleUserIds).ToList();
|
||||
if (missing.Count != 0)
|
||||
dbNote.VisibleUserIds.AddRange(missing);
|
||||
}
|
||||
|
||||
dbNote.Text = mentionsResolver.ResolveMentions(dbNote.Text, dbNote.UserHost, mentions, splitDomainMapping);
|
||||
dbNote.Tags = ResolveHashtags(dbNote.Text, note);
|
||||
}
|
||||
|
||||
var isPollEdited = false;
|
||||
|
||||
if (note is ASQuestion question)
|
||||
{
|
||||
if (question is { AnyOf: not null, OneOf: not null })
|
||||
|
@ -703,6 +710,8 @@ public class NoteService(
|
|||
if (!dbNote.Poll.Choices.SequenceEqual(choices.Select(p => p.Name)) ||
|
||||
dbNote.Poll.Multiple != (question.AnyOf != null))
|
||||
{
|
||||
isPollEdited = true;
|
||||
|
||||
await db.PollVotes.Where(p => p.Note == dbNote).ExecuteDeleteAsync();
|
||||
dbNote.Poll.Choices = choices.Select(p => p.Name).Cast<string>().ToList();
|
||||
dbNote.Poll.Votes = choices.Select(p => (int?)p.Replies?.TotalItems ?? 0).ToList();
|
||||
|
@ -717,6 +726,8 @@ public class NoteService(
|
|||
}
|
||||
else
|
||||
{
|
||||
isPollEdited = true;
|
||||
|
||||
var poll = new Poll
|
||||
{
|
||||
Note = dbNote,
|
||||
|
@ -755,7 +766,11 @@ public class NoteService(
|
|||
dbNote.FileIds = files.Select(p => p.Id).ToList();
|
||||
dbNote.AttachedFileTypes = files.Select(p => p.Type).ToList();
|
||||
|
||||
dbNote.UpdatedAt = DateTime.UtcNow;
|
||||
if (note is not ASQuestion || isPollEdited || db.Entry(dbNote).State != EntityState.Unchanged)
|
||||
{
|
||||
dbNote.UpdatedAt = DateTime.UtcNow;
|
||||
await db.AddAsync(noteEdit);
|
||||
}
|
||||
|
||||
db.Update(dbNote);
|
||||
await db.AddAsync(noteEdit);
|
||||
|
|
Loading…
Add table
Reference in a new issue