From 847a05a2693193a10d3894fce5083cf01925f580 Mon Sep 17 00:00:00 2001 From: Alexey Golub Date: Sun, 3 Mar 2019 15:24:31 +0200 Subject: [PATCH] Refactor reaction emojis into a separate class, add support for animations and standard emojis via twemoji Closes #71 --- DiscordChatExporter.Core/Models/Emoji.cs | 43 +++++++++++++++++++ DiscordChatExporter.Core/Models/Reaction.cs | 9 ++-- .../ExportTemplates/HtmlShared/Main.html | 8 +--- 3 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 DiscordChatExporter.Core/Models/Emoji.cs diff --git a/DiscordChatExporter.Core/Models/Emoji.cs b/DiscordChatExporter.Core/Models/Emoji.cs new file mode 100644 index 00000000..9297d902 --- /dev/null +++ b/DiscordChatExporter.Core/Models/Emoji.cs @@ -0,0 +1,43 @@ +using Tyrrrz.Extensions; + +namespace DiscordChatExporter.Core.Models +{ + // https://discordapp.com/developers/docs/resources/emoji#emoji-object + + public class Emoji + { + public string Id { get; } + + public string Name { get; } + + public bool IsAnimated { get; } + + public string ImageUrl + { + get + { + // Custom emoji + if (Id.IsNotBlank()) + { + // Animated + if (IsAnimated) + return $"https://cdn.discordapp.com/emojis/{Id}.gif"; + + // Non-animated + return $"https://cdn.discordapp.com/emojis/{Id}.png"; + } + + // Standard unicode emoji (via twemoji) + var codePoint = char.ConvertToUtf32(Name, 0).ToString("x"); + return $"https://twemoji.maxcdn.com/2/72x72/{codePoint}.png"; + } + } + + public Emoji(string id, string name, bool isAnimated) + { + Id = id; + Name = name; + IsAnimated = isAnimated; + } + } +} \ No newline at end of file diff --git a/DiscordChatExporter.Core/Models/Reaction.cs b/DiscordChatExporter.Core/Models/Reaction.cs index ed70d4e0..c10f7fdb 100644 --- a/DiscordChatExporter.Core/Models/Reaction.cs +++ b/DiscordChatExporter.Core/Models/Reaction.cs @@ -6,15 +6,12 @@ { public int Count { get; } - public string EmojiId { get; } + public Emoji Emoji { get; } - public string EmojiName { get; } - - public Reaction(int count, string emojiId, string emojiName) + public Reaction(int count, Emoji emoji) { Count = count; - EmojiId = emojiId; - EmojiName = emojiName; + Emoji = emoji; } } } \ No newline at end of file diff --git a/DiscordChatExporter.Core/Resources/ExportTemplates/HtmlShared/Main.html b/DiscordChatExporter.Core/Resources/ExportTemplates/HtmlShared/Main.html index 74a28176..85bf3c0d 100644 --- a/DiscordChatExporter.Core/Resources/ExportTemplates/HtmlShared/Main.html +++ b/DiscordChatExporter.Core/Resources/ExportTemplates/HtmlShared/Main.html @@ -196,13 +196,7 @@ {{~ for reaction in message.Reactions ~}}
- {{~ # Custom emoji ~}} - {{~ if reaction.EmojiId ~}} - - {{~ # Default emoji ~}} - {{~ else ~}} - {{ reaction.EmojiName }} - {{~ end ~}} + {{ reaction.Count }}