From 7e8854cf783697e35155479aeeb31458377b4d3e Mon Sep 17 00:00:00 2001 From: Oleksii Holub Date: Fri, 4 Aug 2017 10:15:50 +0300 Subject: [PATCH] Fix layout when avatars are not loaded --- DiscordChatExporter/Services/ExportService.cs | 76 ++++++++++--------- .../Services/ExportTemplate.html | 8 +- 2 files changed, 44 insertions(+), 40 deletions(-) diff --git a/DiscordChatExporter/Services/ExportService.cs b/DiscordChatExporter/Services/ExportService.cs index c6ab481d..e8095218 100644 --- a/DiscordChatExporter/Services/ExportService.cs +++ b/DiscordChatExporter/Services/ExportService.cs @@ -27,37 +27,37 @@ namespace DiscordChatExporter.Services var result = new List(); // Group adjacent messages by timestamp and author - var buffer = new List(); + var groupBuffer = new List(); foreach (var message in messages) { - var bufferFirst = buffer.FirstOrDefault(); + var groupFirst = groupBuffer.FirstOrDefault(); // Group break condition bool breakCondition = - bufferFirst != null && + groupFirst != null && ( - message.Author.Id != bufferFirst.Author.Id || - (message.TimeStamp - bufferFirst.TimeStamp).TotalHours > 1 || - message.TimeStamp.Hour != bufferFirst.TimeStamp.Hour + message.Author.Id != groupFirst.Author.Id || + (message.TimeStamp - groupFirst.TimeStamp).TotalHours > 1 || + message.TimeStamp.Hour != groupFirst.TimeStamp.Hour ); // If condition is true - flush buffer if (breakCondition) { - var group = new MessageGroup(bufferFirst.Author, bufferFirst.TimeStamp, buffer); + var group = new MessageGroup(groupFirst.Author, groupFirst.TimeStamp, groupBuffer); result.Add(group); - buffer.Clear(); + groupBuffer.Clear(); } // Add message to buffer - buffer.Add(message); + groupBuffer.Add(message); } // Add what's remaining in buffer - if (buffer.Any()) + if (groupBuffer.Any()) { - var bufferFirst = buffer.First(); - var group = new MessageGroup(bufferFirst.Author, bufferFirst.TimeStamp, buffer); + var groupFirst = groupBuffer.First(); + var group = new MessageGroup(groupFirst.Author, groupFirst.TimeStamp, groupBuffer); result.Add(group); } @@ -110,7 +110,7 @@ namespace DiscordChatExporter.Services infoHtml.AppendChild(HtmlNode.CreateNode($"
Participants: {participants}
")); infoHtml.AppendChild(HtmlNode.CreateNode($"
Messages: {chatLog.Messages.Count:N0}
")); - // Messages + // Log var logHtml = doc.GetElementbyId("log"); var messageGroups = GroupMessages(chatLog.Messages); foreach (var messageGroup in messageGroups) @@ -119,8 +119,10 @@ namespace DiscordChatExporter.Services var messageHtml = logHtml.AppendChild(HtmlNode.CreateNode("
")); // Avatar - messageHtml.AppendChild(HtmlNode.CreateNode("")); + messageHtml.AppendChild(HtmlNode.CreateNode("
" + + $"" + + "
" + + "")); // Body var messageBodyHtml = messageHtml.AppendChild(HtmlNode.CreateNode("
")); @@ -133,16 +135,18 @@ namespace DiscordChatExporter.Services string timeStamp = HtmlDocument.HtmlEncode(messageGroup.FirstTimeStamp.ToString("g")); messageBodyHtml.AppendChild(HtmlNode.CreateNode($"{timeStamp}")); - // Separate messages + // Individual messages foreach (var message in messageGroup.Messages) { // Content if (message.Content.IsNotBlank()) { string content = FormatMessageContent(message.Content); - var contentHtml = messageBodyHtml.AppendChild(HtmlNode.CreateNode($"
{content}
")); + var contentHtml = + messageBodyHtml.AppendChild( + HtmlNode.CreateNode($"
{content}
")); - // Is edited + // Edited timestamp if (message.EditedTimeStamp != null) { contentHtml.AppendChild( @@ -152,27 +156,25 @@ namespace DiscordChatExporter.Services } // Attachments - if (message.Attachments.Any()) + foreach (var attachment in message.Attachments) { - // Attachments - foreach (var attachment in message.Attachments) + if (attachment.IsImage) { - if (attachment.IsImage) - { - messageBodyHtml.AppendChild( - HtmlNode.CreateNode("")); - } - else - { - messageBodyHtml.AppendChild( - HtmlNode.CreateNode("")); - } + messageBodyHtml.AppendChild( + HtmlNode.CreateNode("
" + + $"" + + $"" + + "" + + "
")); + } + else + { + messageBodyHtml.AppendChild( + HtmlNode.CreateNode("")); } } } diff --git a/DiscordChatExporter/Services/ExportTemplate.html b/DiscordChatExporter/Services/ExportTemplate.html index 2cc084e3..ffdc0cff 100644 --- a/DiscordChatExporter/Services/ExportTemplate.html +++ b/DiscordChatExporter/Services/ExportTemplate.html @@ -54,15 +54,17 @@ border-top: 1px solid #eceeef; } - img.msg-avatar { + div.msg-avatar { width: 40px; height: 40px; - border-radius: 50%; - flex: 0; } + img.msg-avatar { + border-radius: 50%; + } + div.msg-body { margin-left: 15px;