diff --git a/DiscordChatExporter.Core/Discord/Data/Embeds/Embed.cs b/DiscordChatExporter.Core/Discord/Data/Embeds/Embed.cs index a2a03b21..619550f8 100644 --- a/DiscordChatExporter.Core/Discord/Data/Embeds/Embed.cs +++ b/DiscordChatExporter.Core/Discord/Data/Embeds/Embed.cs @@ -37,7 +37,7 @@ public partial record Embed var title = json.GetPropertyOrNull("title")?.GetStringOrNull(); var kind = - json.GetPropertyOrNull("type")?.GetStringOrNull()?.Pipe(s => Enum.Parse(s, true)) ?? + json.GetPropertyOrNull("type")?.GetStringOrNull()?.ParseEnumOrNull() ?? EmbedKind.Rich; var url = json.GetPropertyOrNull("url")?.GetNonWhiteSpaceStringOrNull(); diff --git a/DiscordChatExporter.Core/Utils/Extensions/StringExtensions.cs b/DiscordChatExporter.Core/Utils/Extensions/StringExtensions.cs index 8868355d..d2c24705 100644 --- a/DiscordChatExporter.Core/Utils/Extensions/StringExtensions.cs +++ b/DiscordChatExporter.Core/Utils/Extensions/StringExtensions.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; @@ -29,6 +30,11 @@ public static class StringExtensions public static string ToDashCase(this string str) => Regex.Replace(str, @"(\p{Ll})(\p{Lu})", "$1-$2"); + public static T? ParseEnumOrNull(this string str, bool ignoreCase = true) where T : struct, Enum => + Enum.TryParse(str, ignoreCase, out var result) + ? result + : null; + public static StringBuilder AppendIfNotEmpty(this StringBuilder builder, char value) => builder.Length > 0 ? builder.Append(value)