Browse Source

Fixed optionals having IsSpecified true when objects weren't in cache

pull/1323/head
Casino Boyale 6 years ago
parent
commit
1709146745
1 changed files with 20 additions and 2 deletions
  1. +20
    -2
      src/Discord.Net.WebSocket/DiscordSocketClient.cs

+ 20
- 2
src/Discord.Net.WebSocket/DiscordSocketClient.cs View File

@@ -1295,7 +1295,16 @@ namespace Discord.WebSocket
var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
bool isCached = cachedMsg != null; bool isCached = cachedMsg != null;
var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly).ConfigureAwait(false); var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly).ConfigureAwait(false);
var reaction = SocketReaction.Create(data, channel, cachedMsg, Optional.Create(user));

var optionalMsg = cachedMsg is null
? Optional.Create<SocketUserMessage>()
: Optional.Create(cachedMsg);

var optionalUser = user is null
? Optional.Create<IUser>()
: Optional.Create(user);

var reaction = SocketReaction.Create(data, channel, optionalMsg, optionalUser);
var cacheable = new Cacheable<IUserMessage, ulong>(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage); var cacheable = new Cacheable<IUserMessage, ulong>(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage);


cachedMsg?.AddReaction(reaction); cachedMsg?.AddReaction(reaction);
@@ -1319,7 +1328,16 @@ namespace Discord.WebSocket
var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
bool isCached = cachedMsg != null; bool isCached = cachedMsg != null;
var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly).ConfigureAwait(false); var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly).ConfigureAwait(false);
var reaction = SocketReaction.Create(data, channel, cachedMsg, Optional.Create(user));

var optionalMsg = cachedMsg is null
? Optional.Create<SocketUserMessage>()
: Optional.Create(cachedMsg);

var optionalUser = user is null
? Optional.Create<IUser>()
: Optional.Create(user);

var reaction = SocketReaction.Create(data, channel, optionalMsg, optionalUser);
var cacheable = new Cacheable<IUserMessage, ulong>(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage); var cacheable = new Cacheable<IUserMessage, ulong>(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage);


cachedMsg?.RemoveReaction(reaction); cachedMsg?.RemoveReaction(reaction);


Loading…
Cancel
Save