Browse Source

Cleaned up Reactions PR

tags/1.0-rc
RogueException 8 years ago
parent
commit
f56a1b653d
8 changed files with 40 additions and 50 deletions
  1. +2
    -2
      src/Discord.Net.Core/Entities/Messages/Emoji.cs
  2. +1
    -6
      src/Discord.Net.Core/Entities/Messages/IReaction.cs
  3. +1
    -2
      src/Discord.Net.Core/Utils/Preconditions.cs
  4. +13
    -13
      src/Discord.Net.Rest/Entities/Messages/RestReaction.cs
  5. +1
    -1
      src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs
  6. +2
    -6
      src/Discord.Net.WebSocket/API/Gateway/Reaction.cs
  7. +4
    -4
      src/Discord.Net.WebSocket/DiscordSocketClient.cs
  8. +16
    -16
      src/Discord.Net.WebSocket/Entities/Messages/SocketReaction.cs

+ 2
- 2
src/Discord.Net.Core/Entities/Messages/Emoji.cs View File

@@ -2,6 +2,7 @@
using System;
using System.Diagnostics;
using System.Globalization;
using Model = Discord.API.Emoji;

namespace Discord
{
@@ -18,8 +19,7 @@ namespace Discord
Id = id;
Name = name;
}

internal static Emoji FromApi(API.Emoji emoji)
internal static Emoji Create(Model emoji)
{
return new Emoji(emoji.Id.GetValueOrDefault(), emoji.Name);
}


+ 1
- 6
src/Discord.Net.Core/Entities/Messages/IReaction.cs View File

@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Discord
namespace Discord
{
public interface IReaction
{


+ 1
- 2
src/Discord.Net.Core/Utils/Preconditions.cs View File

@@ -42,8 +42,7 @@ namespace Discord
if (obj.Value == null) throw CreateNotNullException(name, msg);
if (obj.Value.Trim().Length == 0) throw CreateNotEmptyException(name, msg);
}
}
}

private static ArgumentException CreateNotEmptyException(string name, string msg)
{


+ 13
- 13
src/Discord.Net.Rest/Entities/Messages/RestReaction.cs View File

@@ -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
{
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; }
}
}

+ 1
- 1
src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs View File

@@ -109,7 +109,7 @@ namespace Discord.Rest
{
var reactions = ImmutableArray.CreateBuilder<RestReaction>(value.Length);
for (int i = 0; i < value.Length; i++)
reactions.Add(new RestReaction(value[i]));
reactions.Add(RestReaction.Create(value[i]));
_reactions = reactions.ToImmutable();
}
else


src/Discord.Net.WebSocket/API/Gateway/GatewayReaction.cs → src/Discord.Net.WebSocket/API/Gateway/Reaction.cs View File

@@ -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
{
public class GatewayReaction
public class Reaction
{
[JsonProperty("user_id")]
public ulong UserId { get; set; }

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

@@ -1312,13 +1312,13 @@ namespace Discord.WebSocket
{
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;
if (channel != null)
{
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
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)
{
@@ -1339,13 +1339,13 @@ namespace Discord.WebSocket
{
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;
if (channel != null)
{
SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage;
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)
{
cachedMsg.RemoveReaction(reaction);


+ 16
- 16
src/Discord.Net.WebSocket/Entities/Messages/SocketReaction.cs View File

@@ -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
{
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;
MessageId = messageId;
Message = message;
MessageId = model.MessageId;
UserId = userId;
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; }
}
}

Loading…
Cancel
Save