From 2fbff537a6f0f6136010b7c66b828b4858c9694c Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Tue, 7 Jan 2025 07:02:32 +0100 Subject: [PATCH] [backend/federation] Don't mark notes as edited during refetch (ISH-601) --- Iceshrimp.Backend/Core/Services/NoteService.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Iceshrimp.Backend/Core/Services/NoteService.cs b/Iceshrimp.Backend/Core/Services/NoteService.cs index 499e37cc..3523474e 100644 --- a/Iceshrimp.Backend/Core/Services/NoteService.cs +++ b/Iceshrimp.Backend/Core/Services/NoteService.cs @@ -88,6 +88,7 @@ public class NoteService( public NoteMentionData? ResolvedMentions; public ASNote? ASNote; public List? Emoji; + public bool IsRefetch; } public record struct NoteMentionData( @@ -750,6 +751,9 @@ public class NoteService( || isPollEdited || db.Entry(note).State != EntityState.Unchanged; + if (isEdit && data.IsRefetch && note.UpdatedAt == data.UpdatedAt) + isEdit = false; + if (isEdit) { note.UpdatedAt = data.UpdatedAt ?? DateTime.UtcNow; @@ -1066,7 +1070,7 @@ public class NoteService( [SuppressMessage("ReSharper", "EntityFramework.NPlusOne.IncompleteDataUsage", Justification = "Inspection doesn't understand IncludeCommonProperties()")] [SuppressMessage("ReSharper", "EntityFramework.NPlusOne.IncompleteDataQuery", Justification = "See above")] - public async Task ProcessNoteUpdateAsync(ASNote note, User actor, User? user = null) + public async Task ProcessNoteUpdateAsync(ASNote note, User actor, User? user = null, bool isRefetch = false) { var dbNote = await db.Notes.IncludeCommonProperties() .Include(p => p.Poll) @@ -1140,7 +1144,8 @@ public class NoteService( UpdatedAt = updatedAt, ResolvedMentions = mentionData, ASNote = note, - Emoji = emoji + Emoji = emoji, + IsRefetch = isRefetch }); } @@ -1370,7 +1375,7 @@ public class NoteService( try { return forceRefresh - ? await ProcessNoteUpdateAsync(fetchedNote, actor, user) + ? await ProcessNoteUpdateAsync(fetchedNote, actor, user, isRefetch: true) : await ProcessNoteAsync(fetchedNote, actor, user); } catch (Exception e)