From ab60f635116e509df54f7d76253c6edc2e556f7b Mon Sep 17 00:00:00 2001 From: "Sindre G. Langhus" Date: Tue, 21 Feb 2017 22:11:48 +0900 Subject: [PATCH] Changes HasValue in Cachable to constructor argument --- src/Discord.Net.Core/Utils/Cacheable.cs | 5 +++-- .../DiscordSocketClient.cs | 20 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Discord.Net.Core/Utils/Cacheable.cs b/src/Discord.Net.Core/Utils/Cacheable.cs index da6c660b8..10b61be90 100644 --- a/src/Discord.Net.Core/Utils/Cacheable.cs +++ b/src/Discord.Net.Core/Utils/Cacheable.cs @@ -16,7 +16,7 @@ namespace Discord /// /// Is this entity cached? /// - public bool HasValue => !EqualityComparer.Default.Equals(Value, default(TEntity)); + public bool HasValue { get; } /// /// The ID of this entity. /// @@ -30,10 +30,11 @@ namespace Discord public TEntity Value { get; } private Func> DownloadFunc { get; } - internal Cacheable(TEntity value, TId id, Func> downloadFunc) + internal Cacheable(TEntity value, TId id, bool hasValue , Func> downloadFunc) { Value = value; Id = id; + HasValue = hasValue; DownloadFunc = downloadFunc; } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 60ebeb535..891db6307 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1273,7 +1273,8 @@ namespace Discord.WebSocket SocketMessage before = null, after = null; SocketMessage cachedMsg = channel.GetCachedMessage(data.Id); - if (cachedMsg != null) + bool isCached = cachedMsg != null; + if (isCached) { before = cachedMsg.Clone(); cachedMsg.Update(State, data); @@ -1292,7 +1293,7 @@ namespace Discord.WebSocket after = SocketMessage.Create(this, State, author, channel, data); } - var cacheableBefore = new Cacheable(before, data.Id, async () => await channel.GetMessageAsync(data.Id)); + var cacheableBefore = new Cacheable(before, data.Id, isCached , async () => await channel.GetMessageAsync(data.Id)); await _messageUpdatedEvent.InvokeAsync(cacheableBefore, after, channel).ConfigureAwait(false); } @@ -1318,7 +1319,8 @@ namespace Discord.WebSocket } var msg = SocketChannelHelper.RemoveMessage(channel, this, data.Id); - var cacheable = new Cacheable(msg, data.Id, async () => await channel.GetMessageAsync(data.Id)); + bool isCached = msg != null; + var cacheable = new Cacheable(msg, data.Id, isCached, async () => await channel.GetMessageAsync(data.Id)); await _messageDeletedEvent.InvokeAsync(cacheable, channel).ConfigureAwait(false); } @@ -1338,9 +1340,10 @@ namespace Discord.WebSocket if (channel != null) { SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; + bool isCached = cachedMsg != null; var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly); SocketReaction reaction = SocketReaction.Create(data, channel, cachedMsg, Optional.Create(user)); - var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage); + var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage); cachedMsg?.AddReaction(reaction); @@ -1362,9 +1365,10 @@ namespace Discord.WebSocket if (channel != null) { SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; + bool isCached = cachedMsg != null; var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly); SocketReaction reaction = SocketReaction.Create(data, channel, cachedMsg, Optional.Create(user)); - var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage); + var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage); cachedMsg?.RemoveReaction(reaction); @@ -1386,7 +1390,8 @@ namespace Discord.WebSocket if (channel != null) { SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; - var cacheable = new Cacheable(cachedMsg, data.MessageId, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage); + bool isCached = cachedMsg != null; + var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId) as IUserMessage); cachedMsg?.ClearReactions(); @@ -1416,7 +1421,8 @@ namespace Discord.WebSocket foreach (var id in data.Ids) { var msg = SocketChannelHelper.RemoveMessage(channel, this, id); - var cacheable = new Cacheable(msg, id, async () => await channel.GetMessageAsync(id)); + bool isCached = msg != null; + var cacheable = new Cacheable(msg, id, isCached, async () => await channel.GetMessageAsync(id)); await _messageDeletedEvent.InvokeAsync(cacheable, channel).ConfigureAwait(false); } }