From aaee98879a5c6045cdb290aa6bffe3a1947f91aa Mon Sep 17 00:00:00 2001 From: Joe4evr Date: Mon, 8 Jan 2018 19:13:56 +0100 Subject: [PATCH] Add Message comparer. --- src/Discord.Net.Core/Utils/Comparers.cs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Discord.Net.Core/Utils/Comparers.cs b/src/Discord.Net.Core/Utils/Comparers.cs index 85e4adb1e..49793d0ac 100644 --- a/src/Discord.Net.Core/Utils/Comparers.cs +++ b/src/Discord.Net.Core/Utils/Comparers.cs @@ -10,11 +10,13 @@ namespace Discord public static IEqualityComparer GuildComparer => _guildComparer ?? (_guildComparer = new EntityEqualityComparer()); public static IEqualityComparer ChannelComparer => _channelComparer ?? (_channelComparer = new EntityEqualityComparer()); public static IEqualityComparer RoleComparer => _roleComparer ?? (_roleComparer = new EntityEqualityComparer()); + public static IEqualityComparer MessageComparer => _messageComparer ?? (_messageComparer = new MessageEqualityComparer()); private static IEqualityComparer _userComparer; private static IEqualityComparer _guildComparer; private static IEqualityComparer _channelComparer; private static IEqualityComparer _roleComparer; + private static IEqualityComparer _messageComparer; private sealed class EntityEqualityComparer : EqualityComparer where TEntity : IEntity @@ -39,5 +41,27 @@ namespace Discord return obj?.Id.GetHashCode() ?? 0; } } + + private sealed class MessageEqualityComparer : EqualityComparer + { + public override bool Equals(IMessage x, IMessage y) + { + bool xNull = x == null; + bool yNull = y == null; + + if (xNull && yNull) + return true; + + if (xNull ^ yNull) + return false; + + return x.Channel.Id.Equals(y.Channel.Id) && x.Id.Equals(y.Id); + } + + public override int GetHashCode(IMessage obj) + { + return obj?.Id.GetHashCode() ?? 0; + } + } } }