From 4595638cdba7775a249851eb37514ad29aa9304e Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Fri, 30 Jun 2023 22:00:38 +0500 Subject: [PATCH] Improve diff display for edited messages Signed-off-by: Octol1ttle --- EventResponders.cs | 3 +-- Extensions.cs | 13 +++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/EventResponders.cs b/EventResponders.cs index 3c3269a..071faba 100644 --- a/EventResponders.cs +++ b/EventResponders.cs @@ -1,6 +1,5 @@ using Boyfriend.Data; using Boyfriend.Services.Data; -using DiffPlex; using DiffPlex.DiffBuilder; using Microsoft.Extensions.Logging; using Remora.Discord.API.Abstractions.Gateway.Events; @@ -189,7 +188,7 @@ public class MessageEditedResponder : IResponder { var currentUserResult = await _userApi.GetCurrentUserAsync(ct); if (!currentUserResult.IsDefined(out var currentUser)) return Result.FromError(currentUserResult); - var diff = new SideBySideDiffBuilder(Differ.Instance).BuildDiffModel(message.Content, newContent, true, true); + var diff = InlineDiffBuilder.Diff(message.Content, newContent); Messages.Culture = guildConfiguration.GetCulture(); diff --git a/Extensions.cs b/Extensions.cs index 2dd95f6..a399ad2 100644 --- a/Extensions.cs +++ b/Extensions.cs @@ -122,11 +122,16 @@ public static class Extensions { return WebUtility.UrlEncode(s).Replace('+', ' '); } - public static string AsMarkdown(this SideBySideDiffModel model) { + public static string AsMarkdown(this DiffPaneModel model) { var builder = new StringBuilder(); - foreach (var line in model.OldText.Lines.Where(piece => !string.IsNullOrWhiteSpace(piece.Text))) - builder.Append("-- ").AppendLine(line.Text); - foreach (var line in model.NewText.Lines) builder.Append("++ ").AppendLine(line.Text); + foreach (var line in model.Lines) { + if (line.Type is ChangeType.Deleted) + builder.Append("-- "); + if (line.Type is ChangeType.Inserted) + builder.Append("++ "); + if (line.Type is not ChangeType.Imaginary) + builder.AppendLine(line.Text); + } return Markdown.BlockCode(builder.ToString().SanitizeForBlockCode(), "diff"); }