Cleaned up Reactions PR
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using Model = Discord.API.Emoji;
|
||||||
|
|
||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
@@ -18,8 +19,7 @@ namespace Discord
|
|||||||
Id = id;
|
Id = id;
|
||||||
Name = name;
|
Name = name;
|
||||||
}
|
}
|
||||||
|
internal static Emoji Create(Model emoji)
|
||||||
internal static Emoji FromApi(API.Emoji emoji)
|
|
||||||
{
|
{
|
||||||
return new Emoji(emoji.Id.GetValueOrDefault(), emoji.Name);
|
return new Emoji(emoji.Id.GetValueOrDefault(), emoji.Name);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace Discord
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Discord
|
|
||||||
{
|
{
|
||||||
public interface IReaction
|
public interface IReaction
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static ArgumentException CreateNotEmptyException(string name, string msg)
|
private static ArgumentException CreateNotEmptyException(string name, string msg)
|
||||||
{
|
{
|
||||||
if (msg == null) return new ArgumentException(name, "Argument cannot be blank.");
|
if (msg == null) return new ArgumentException(name, "Argument cannot be blank.");
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
using System;
|
using Model = Discord.API.Reaction;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Model = Discord.API.Reaction;
|
|
||||||
|
|
||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
public class RestReaction : IReaction
|
public class RestReaction : IReaction
|
||||||
{
|
{
|
||||||
internal RestReaction(Model model)
|
public Emoji Emoji { get; }
|
||||||
{
|
public int Count { get; }
|
||||||
Emoji = Emoji.FromApi(model.Emoji);
|
public bool Me { get; }
|
||||||
Count = model.Count;
|
|
||||||
Me = model.Me;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Emoji Emoji { get; private set; }
|
internal RestReaction(Emoji emoji, int count, bool me)
|
||||||
public int Count { get; private set; }
|
{
|
||||||
public bool Me { get; private set; }
|
Emoji = emoji;
|
||||||
|
Count = count;
|
||||||
|
Me = me;
|
||||||
|
}
|
||||||
|
internal static RestReaction Create(Model model)
|
||||||
|
{
|
||||||
|
return new RestReaction(Emoji.Create(model.Emoji), model.Count, model.Me);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ namespace Discord.Rest
|
|||||||
{
|
{
|
||||||
var reactions = ImmutableArray.CreateBuilder<RestReaction>(value.Length);
|
var reactions = ImmutableArray.CreateBuilder<RestReaction>(value.Length);
|
||||||
for (int i = 0; i < value.Length; i++)
|
for (int i = 0; i < value.Length; i++)
|
||||||
reactions.Add(new RestReaction(value[i]));
|
reactions.Add(RestReaction.Create(value[i]));
|
||||||
_reactions = reactions.ToImmutable();
|
_reactions = reactions.ToImmutable();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
using System;
|
using Newtonsoft.Json;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace Discord.API.Gateway
|
namespace Discord.API.Gateway
|
||||||
{
|
{
|
||||||
public class GatewayReaction
|
public class Reaction
|
||||||
{
|
{
|
||||||
[JsonProperty("user_id")]
|
[JsonProperty("user_id")]
|
||||||
public ulong UserId { get; set; }
|
public ulong UserId { get; set; }
|
||||||
@@ -1312,13 +1312,13 @@ namespace Discord.WebSocket
|
|||||||
{
|
{
|
||||||
await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_ADD)").ConfigureAwait(false);
|
await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_ADD)").ConfigureAwait(false);
|
||||||
|
|
||||||
var data = (payload as JToken).ToObject<GatewayReaction>(_serializer);
|
var data = (payload as JToken).ToObject<API.Gateway.Reaction>(_serializer);
|
||||||
var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel;
|
var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel;
|
||||||
if (channel != null)
|
if (channel != null)
|
||||||
{
|
{
|
||||||
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
|
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
|
||||||
var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly);
|
var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly);
|
||||||
SocketReaction reaction = new SocketReaction(data, channel, Optional.Create(cachedMsg), Optional.Create(user));
|
SocketReaction reaction = SocketReaction.Create(data, channel, cachedMsg, Optional.Create(user));
|
||||||
|
|
||||||
if (cachedMsg != null)
|
if (cachedMsg != null)
|
||||||
{
|
{
|
||||||
@@ -1339,13 +1339,13 @@ namespace Discord.WebSocket
|
|||||||
{
|
{
|
||||||
await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_REMOVE)").ConfigureAwait(false);
|
await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_REMOVE)").ConfigureAwait(false);
|
||||||
|
|
||||||
var data = (payload as JToken).ToObject<GatewayReaction>(_serializer);
|
var data = (payload as JToken).ToObject<API.Gateway.Reaction>(_serializer);
|
||||||
var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel;
|
var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel;
|
||||||
if (channel != null)
|
if (channel != null)
|
||||||
{
|
{
|
||||||
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
|
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
|
||||||
var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly);
|
var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly);
|
||||||
SocketReaction reaction = new SocketReaction(data, channel, Optional.Create(cachedMsg), Optional.Create(user));
|
SocketReaction reaction = SocketReaction.Create(data, channel, cachedMsg, Optional.Create(user));
|
||||||
if (cachedMsg != null)
|
if (cachedMsg != null)
|
||||||
{
|
{
|
||||||
cachedMsg.RemoveReaction(reaction);
|
cachedMsg.RemoveReaction(reaction);
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
using System;
|
using Model = Discord.API.Gateway.Reaction;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Model = Discord.API.Gateway.GatewayReaction;
|
|
||||||
|
|
||||||
namespace Discord.WebSocket
|
namespace Discord.WebSocket
|
||||||
{
|
{
|
||||||
public class SocketReaction : IReaction
|
public class SocketReaction : IReaction
|
||||||
{
|
{
|
||||||
internal SocketReaction(Model model, ISocketMessageChannel channel, Optional<SocketUserMessage> message, Optional<IUser> user)
|
public ulong UserId { get; }
|
||||||
|
public Optional<IUser> User { get; }
|
||||||
|
public ulong MessageId { get; }
|
||||||
|
public Optional<SocketUserMessage> Message { get; }
|
||||||
|
public ISocketMessageChannel Channel { get; }
|
||||||
|
public Emoji Emoji { get; }
|
||||||
|
|
||||||
|
internal SocketReaction(ISocketMessageChannel channel, ulong messageId, Optional<SocketUserMessage> message, ulong userId, Optional<IUser> user, Emoji emoji)
|
||||||
{
|
{
|
||||||
Channel = channel;
|
Channel = channel;
|
||||||
|
MessageId = messageId;
|
||||||
Message = message;
|
Message = message;
|
||||||
MessageId = model.MessageId;
|
UserId = userId;
|
||||||
User = user;
|
User = user;
|
||||||
UserId = model.UserId;
|
Emoji = emoji;
|
||||||
Emoji = Emoji.FromApi(model.Emoji);
|
}
|
||||||
|
internal static SocketReaction Create(Model model, ISocketMessageChannel channel, Optional<SocketUserMessage> message, Optional<IUser> user)
|
||||||
|
{
|
||||||
|
return new SocketReaction(channel, model.MessageId, message, model.UserId, user, Emoji.Create(model.Emoji));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ulong UserId { get; private set; }
|
|
||||||
public Optional<IUser> User { get; private set; }
|
|
||||||
public ulong MessageId { get; private set; }
|
|
||||||
public Optional<SocketUserMessage> Message { get; private set; }
|
|
||||||
public ISocketMessageChannel Channel { get; private set; }
|
|
||||||
public Emoji Emoji { get; private set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user