From 915f4c8d9f62704d3d5795b3f0f8c79cf5990366 Mon Sep 17 00:00:00 2001 From: Lucas LaBuff Date: Mon, 18 Jan 2021 12:21:22 -0500 Subject: [PATCH] Fix crash on encountering invalid snowflake (#479) --- .../Writers/MarkdownVisitors/HtmlMarkdownVisitor.cs | 8 +++++--- .../Writers/MarkdownVisitors/PlainTextMarkdownVisitor.cs | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/DiscordChatExporter.Domain/Exporting/Writers/MarkdownVisitors/HtmlMarkdownVisitor.cs b/DiscordChatExporter.Domain/Exporting/Writers/MarkdownVisitors/HtmlMarkdownVisitor.cs index 092534c0..4c69299c 100644 --- a/DiscordChatExporter.Domain/Exporting/Writers/MarkdownVisitors/HtmlMarkdownVisitor.cs +++ b/DiscordChatExporter.Domain/Exporting/Writers/MarkdownVisitors/HtmlMarkdownVisitor.cs @@ -7,6 +7,7 @@ using DiscordChatExporter.Domain.Discord; using DiscordChatExporter.Domain.Discord.Models; using DiscordChatExporter.Domain.Markdown; using DiscordChatExporter.Domain.Markdown.Ast; +using DiscordChatExporter.Domain.Utilities; namespace DiscordChatExporter.Domain.Exporting.Writers.MarkdownVisitors { @@ -76,6 +77,7 @@ namespace DiscordChatExporter.Domain.Exporting.Writers.MarkdownVisitors protected override MarkdownNode VisitMention(MentionNode mention) { + var mentionId = Snowflake.TryParse(mention.Id); if (mention.Type == MentionType.Meta) { _buffer @@ -85,7 +87,7 @@ namespace DiscordChatExporter.Domain.Exporting.Writers.MarkdownVisitors } else if (mention.Type == MentionType.User) { - var member = _context.TryGetMember(Snowflake.Parse(mention.Id)); + var member = mentionId?.Pipe(_context.TryGetMember); var fullName = member?.User.FullName ?? "Unknown"; var nick = member?.Nick ?? "Unknown"; @@ -96,7 +98,7 @@ namespace DiscordChatExporter.Domain.Exporting.Writers.MarkdownVisitors } else if (mention.Type == MentionType.Channel) { - var channel = _context.TryGetChannel(Snowflake.Parse(mention.Id)); + var channel = mentionId?.Pipe(_context.TryGetChannel); var name = channel?.Name ?? "deleted-channel"; _buffer @@ -106,7 +108,7 @@ namespace DiscordChatExporter.Domain.Exporting.Writers.MarkdownVisitors } else if (mention.Type == MentionType.Role) { - var role = _context.TryGetRole(Snowflake.Parse(mention.Id)); + var role = mentionId?.Pipe(_context.TryGetRole); var name = role?.Name ?? "deleted-role"; var color = role?.Color; diff --git a/DiscordChatExporter.Domain/Exporting/Writers/MarkdownVisitors/PlainTextMarkdownVisitor.cs b/DiscordChatExporter.Domain/Exporting/Writers/MarkdownVisitors/PlainTextMarkdownVisitor.cs index 7e40556a..13e05b53 100644 --- a/DiscordChatExporter.Domain/Exporting/Writers/MarkdownVisitors/PlainTextMarkdownVisitor.cs +++ b/DiscordChatExporter.Domain/Exporting/Writers/MarkdownVisitors/PlainTextMarkdownVisitor.cs @@ -2,6 +2,7 @@ using DiscordChatExporter.Domain.Discord; using DiscordChatExporter.Domain.Markdown; using DiscordChatExporter.Domain.Markdown.Ast; +using DiscordChatExporter.Domain.Utilities; namespace DiscordChatExporter.Domain.Exporting.Writers.MarkdownVisitors { @@ -24,27 +25,28 @@ namespace DiscordChatExporter.Domain.Exporting.Writers.MarkdownVisitors protected override MarkdownNode VisitMention(MentionNode mention) { + var mentionId = Snowflake.TryParse(mention.Id); if (mention.Type == MentionType.Meta) { _buffer.Append($"@{mention.Id}"); } else if (mention.Type == MentionType.User) { - var member = _context.TryGetMember(Snowflake.Parse(mention.Id)); + var member = mentionId?.Pipe(_context.TryGetMember); var name = member?.User.Name ?? "Unknown"; _buffer.Append($"@{name}"); } else if (mention.Type == MentionType.Channel) { - var channel = _context.TryGetChannel(Snowflake.Parse(mention.Id)); + var channel = mentionId?.Pipe(_context.TryGetChannel); var name = channel?.Name ?? "deleted-channel"; _buffer.Append($"#{name}"); } else if (mention.Type == MentionType.Role) { - var role = _context.TryGetRole(Snowflake.Parse(mention.Id)); + var role = mentionId?.Pipe(_context.TryGetRole); var name = role?.Name ?? "deleted-role"; _buffer.Append($"@{name}");