| @@ -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 FromApi(API.Emoji emoji) | |||||
| internal static Emoji Create(Model emoji) | |||||
| { | { | ||||
| return new Emoji(emoji.Id.GetValueOrDefault(), emoji.Name); | return new Emoji(emoji.Id.GetValueOrDefault(), emoji.Name); | ||||
| } | } | ||||
| @@ -1,9 +1,4 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Threading.Tasks; | |||||
| namespace Discord | |||||
| namespace Discord | |||||
| { | { | ||||
| public interface IReaction | public interface IReaction | ||||
| { | { | ||||
| @@ -42,8 +42,7 @@ namespace Discord | |||||
| if (obj.Value == null) throw CreateNotNullException(name, msg); | if (obj.Value == null) throw CreateNotNullException(name, msg); | ||||
| if (obj.Value.Trim().Length == 0) throw CreateNotEmptyException(name, msg); | if (obj.Value.Trim().Length == 0) throw CreateNotEmptyException(name, msg); | ||||
| } | } | ||||
| } | |||||
| } | |||||
| private static ArgumentException CreateNotEmptyException(string name, string msg) | private static ArgumentException CreateNotEmptyException(string name, string msg) | ||||
| { | { | ||||
| @@ -1,22 +1,22 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Threading.Tasks; | |||||
| using Model = Discord.API.Reaction; | |||||
| 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; } | |||||
| public bool Me { get; } | |||||
| internal RestReaction(Emoji emoji, int count, bool me) | |||||
| { | { | ||||
| Emoji = Emoji.FromApi(model.Emoji); | |||||
| Count = model.Count; | |||||
| Me = model.Me; | |||||
| Emoji = emoji; | |||||
| Count = count; | |||||
| Me = me; | |||||
| } | |||||
| internal static RestReaction Create(Model model) | |||||
| { | |||||
| return new RestReaction(Emoji.Create(model.Emoji), model.Count, model.Me); | |||||
| } | } | ||||
| public Emoji Emoji { get; private set; } | |||||
| public int Count { get; private set; } | |||||
| public bool Me { get; private set; } | |||||
| } | } | ||||
| } | } | ||||
| @@ -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 System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Threading.Tasks; | |||||
| using Newtonsoft.Json; | |||||
| 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 System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Threading.Tasks; | |||||
| using Model = Discord.API.Gateway.GatewayReaction; | |||||
| using Model = Discord.API.Gateway.Reaction; | |||||
| 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.FromApi(model.Emoji); | |||||
| Emoji = 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; } | |||||
| } | } | ||||
| } | } | ||||