From a9c495090b736a88305389f4561e126f507f81cf Mon Sep 17 00:00:00 2001 From: Brandon Smith Date: Sun, 9 Aug 2015 11:29:56 -0300 Subject: [PATCH] Revert "Collapsed Discord.Models namespace, cleaned up Message cache" This reverts commit 389372b93f492273c38be5890fa5573d176ff4c4. --- .gitattributes | 63 ---------------------- Discord.Net/API/Models/General.cs | 2 +- Discord.Net/Discord.Net.csproj | 11 ++-- Discord.Net/DiscordClient.Events.cs | 22 +++++--- Discord.Net/DiscordClient.cs | 10 ++-- Discord.Net/DiscordWebSocket.cs | 4 +- Discord.Net/{ => Models}/Channel.cs | 2 +- Discord.Net/{ => Models}/ChatMessage.cs | 20 ++----- Discord.Net/Models/ChatMessageReference.cs | 22 ++++++++ Discord.Net/{ => Models}/Role.cs | 2 +- Discord.Net/{ => Models}/Server.cs | 2 +- Discord.Net/{ => Models}/User.cs | 2 +- 12 files changed, 60 insertions(+), 102 deletions(-) delete mode 100644 .gitattributes rename Discord.Net/{ => Models}/Channel.cs (97%) rename Discord.Net/{ => Models}/ChatMessage.cs (66%) create mode 100644 Discord.Net/Models/ChatMessageReference.cs rename Discord.Net/{ => Models}/Role.cs (95%) rename Discord.Net/{ => Models}/Server.cs (98%) rename Discord.Net/{ => Models}/User.cs (97%) diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1ff0c4230..000000000 --- a/.gitattributes +++ /dev/null @@ -1,63 +0,0 @@ -############################################################################### -# Set default behavior to automatically normalize line endings. -############################################################################### -* text=auto - -############################################################################### -# Set default behavior for command prompt diff. -# -# This is need for earlier builds of msysgit that does not have it on by -# default for csharp files. -# Note: This is only used by command line -############################################################################### -#*.cs diff=csharp - -############################################################################### -# Set the merge driver for project and solution files -# -# Merging from the command prompt will add diff markers to the files if there -# are conflicts (Merging from VS is not affected by the settings below, in VS -# the diff markers are never inserted). Diff markers may cause the following -# file extensions to fail to load in VS. An alternative would be to treat -# these files as binary and thus will always conflict and require user -# intervention with every merge. To do so, just uncomment the entries below -############################################################################### -#*.sln merge=binary -#*.csproj merge=binary -#*.vbproj merge=binary -#*.vcxproj merge=binary -#*.vcproj merge=binary -#*.dbproj merge=binary -#*.fsproj merge=binary -#*.lsproj merge=binary -#*.wixproj merge=binary -#*.modelproj merge=binary -#*.sqlproj merge=binary -#*.wwaproj merge=binary - -############################################################################### -# behavior for image files -# -# image files are treated as binary by default. -############################################################################### -#*.jpg binary -#*.png binary -#*.gif binary - -############################################################################### -# diff behavior for common document formats -# -# Convert binary document formats to text before diffing them. This feature -# is only available from the command line. Turn it on by uncommenting the -# entries below. -############################################################################### -#*.doc diff=astextplain -#*.DOC diff=astextplain -#*.docx diff=astextplain -#*.DOCX diff=astextplain -#*.dot diff=astextplain -#*.DOT diff=astextplain -#*.pdf diff=astextplain -#*.PDF diff=astextplain -#*.rtf diff=astextplain -#*.RTF diff=astextplain diff --git a/Discord.Net/API/Models/General.cs b/Discord.Net/API/Models/General.cs index c20b7f7bc..46c487d8d 100644 --- a/Discord.Net/API/Models/General.cs +++ b/Discord.Net/API/Models/General.cs @@ -106,7 +106,7 @@ namespace Discord.API.Models [JsonProperty(PropertyName = "channels")] public ChannelInfo[] Channels; [JsonProperty(PropertyName = "joined_at")] - public DateTime? JoinedAt; + public DateTime JoinedAt; [JsonProperty(PropertyName = "members")] public MembershipInfo[] Members; [JsonProperty(PropertyName = "owner_id")] diff --git a/Discord.Net/Discord.Net.csproj b/Discord.Net/Discord.Net.csproj index 6fb72ee9c..eda49edcd 100644 --- a/Discord.Net/Discord.Net.csproj +++ b/Discord.Net/Discord.Net.csproj @@ -49,9 +49,10 @@ - - - + + + + @@ -61,8 +62,8 @@ - - + + diff --git a/Discord.Net/DiscordClient.Events.cs b/Discord.Net/DiscordClient.Events.cs index 23bd54d63..62349c566 100644 --- a/Discord.Net/DiscordClient.Events.cs +++ b/Discord.Net/DiscordClient.Events.cs @@ -1,4 +1,5 @@ -using System; +using Discord.Models; +using System; namespace Discord { @@ -97,35 +98,40 @@ namespace Discord } //Message - public sealed class MessageEventArgs : EventArgs + public sealed class MessageCreateEventArgs : EventArgs { public readonly ChatMessage Message; - internal MessageEventArgs(ChatMessage msg) { Message = msg; } + internal MessageCreateEventArgs(ChatMessage msg) { Message = msg; } + } + public sealed class MessageEventArgs : EventArgs + { + public readonly ChatMessageReference Message; + internal MessageEventArgs(ChatMessageReference msg) { Message = msg; } } - public event EventHandler MessageCreated; + public event EventHandler MessageCreated; private void RaiseMessageCreated(ChatMessage msg) { if (MessageCreated != null) - MessageCreated(this, new MessageEventArgs(msg)); + MessageCreated(this, new MessageCreateEventArgs(msg)); } public event EventHandler MessageDeleted; - private void RaiseMessageDeleted(ChatMessage msg) + private void RaiseMessageDeleted(ChatMessageReference msg) { if (MessageDeleted != null) MessageDeleted(this, new MessageEventArgs(msg)); } public event EventHandler MessageUpdated; - private void RaiseMessageUpdated(ChatMessage msg) + private void RaiseMessageUpdated(ChatMessageReference msg) { if (MessageUpdated != null) MessageUpdated(this, new MessageEventArgs(msg)); } public event EventHandler MessageAcknowledged; - private void RaiseMessageAcknowledged(ChatMessage msg) + private void RaiseMessageAcknowledged(ChatMessageReference msg) { if (MessageAcknowledged != null) MessageAcknowledged(this, new MessageEventArgs(msg)); diff --git a/Discord.Net/DiscordClient.cs b/Discord.Net/DiscordClient.cs index 703933dc5..ff51ae9f3 100644 --- a/Discord.Net/DiscordClient.cs +++ b/Discord.Net/DiscordClient.cs @@ -1,11 +1,13 @@ using Discord.API; using Discord.API.Models; using Discord.Helpers; +using Discord.Models; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Reflection; using System.Threading.Tasks; +using Role = Discord.Models.Role; namespace Discord { @@ -370,7 +372,7 @@ namespace Discord var extendedModel = model as ExtendedServerInfo; server.AFKChannelId = extendedModel.AFKChannelId; server.AFKTimeout = extendedModel.AFKTimeout; - server.JoinedAt = extendedModel.JoinedAt ?? DateTime.MinValue; + server.JoinedAt = extendedModel.JoinedAt; server.OwnerId = extendedModel.OwnerId; server.Presence = extendedModel.Presence; server.Region = extendedModel.Region; @@ -418,7 +420,7 @@ namespace Discord private Channel DeleteChannel(string id) { Channel channel = null; - if (_channels.TryRemove(id, out channel) && !channel.IsPrivate) + if (_channels.TryRemove(id, out channel)) { bool ignored; channel.Server._channels.TryRemove(id, out ignored); @@ -427,10 +429,10 @@ namespace Discord } //TODO: Temporary measure, unsure if we want to store these or not. - private ChatMessage GetMessage(string id, string channelId) + private ChatMessageReference GetMessage(string id, string channelId) { if (id == null || channelId == null) return null; - return new ChatMessage(id, channelId, this); + return new ChatMessageReference(id, channelId, this); } private ChatMessage UpdateMessage(WebSocketEvents.MessageCreate model, bool addNew = true) { diff --git a/Discord.Net/DiscordWebSocket.cs b/Discord.Net/DiscordWebSocket.cs index 5c8c83c49..8bd2b6d80 100644 --- a/Discord.Net/DiscordWebSocket.cs +++ b/Discord.Net/DiscordWebSocket.cs @@ -114,14 +114,14 @@ namespace Discord RaiseGotEvent(msg.Type, msg.Payload as JToken); break; default: - RaiseOnDebugMessage("Warning: Unknown WebSocket operation ID: " + msg.Operation); + RaiseOnDebugMessage("Unknown WebSocket operation ID: " + msg.Operation); break; } builder.Clear(); } } - catch (Exception ex) { RaiseOnDebugMessage($"Error: {ex.Message}"); } + catch { } finally { _cancelToken.Cancel(); } } diff --git a/Discord.Net/Channel.cs b/Discord.Net/Models/Channel.cs similarity index 97% rename from Discord.Net/Channel.cs rename to Discord.Net/Models/Channel.cs index 25d59818f..23919e192 100644 --- a/Discord.Net/Channel.cs +++ b/Discord.Net/Models/Channel.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Discord +namespace Discord.Models { public sealed class Channel { diff --git a/Discord.Net/ChatMessage.cs b/Discord.Net/Models/ChatMessage.cs similarity index 66% rename from Discord.Net/ChatMessage.cs rename to Discord.Net/Models/ChatMessage.cs index e25d1e8b0..1b8d95d90 100644 --- a/Discord.Net/ChatMessage.cs +++ b/Discord.Net/Models/ChatMessage.cs @@ -1,23 +1,15 @@ using Newtonsoft.Json; using System; -namespace Discord +namespace Discord.Models { - public sealed class ChatMessage + public sealed class ChatMessage : ChatMessageReference { - private readonly DiscordClient _client; - - public string Id { get; } - public bool IsMentioningEveryone { get; internal set; } public bool IsTTS { get; internal set; } public string Text { get; internal set; } public DateTime Timestamp { get; internal set; } - - public string ChannelId { get; internal set; } - [JsonIgnore] - public Channel Channel { get { return _client.GetChannel(ChannelId); } } - + public string UserId { get; internal set; } [JsonIgnore] public User User { get { return _client.GetUser(UserId); } } @@ -27,11 +19,9 @@ namespace Discord public object[] Embeds { get; internal set; } internal ChatMessage(string id, string channelId, DiscordClient client) + : base(id, channelId, client) { - Id = id; - ChannelId = channelId; - _client = client; - } + } public override string ToString() { diff --git a/Discord.Net/Models/ChatMessageReference.cs b/Discord.Net/Models/ChatMessageReference.cs new file mode 100644 index 000000000..d3c800cf3 --- /dev/null +++ b/Discord.Net/Models/ChatMessageReference.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.Models +{ + public class ChatMessageReference + { + protected readonly DiscordClient _client; + + public string Id { get; } + + public string ChannelId { get; } + [JsonIgnore] + public Channel Channel { get { return _client.GetChannel(ChannelId); } } + + internal ChatMessageReference(string id, string channelId, DiscordClient client) + { + Id = id; + ChannelId = channelId; + _client = client; + } + } +} diff --git a/Discord.Net/Role.cs b/Discord.Net/Models/Role.cs similarity index 95% rename from Discord.Net/Role.cs rename to Discord.Net/Models/Role.cs index ccc774dfc..1c6d47a8e 100644 --- a/Discord.Net/Role.cs +++ b/Discord.Net/Models/Role.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Discord +namespace Discord.Models { public sealed class Role { diff --git a/Discord.Net/Server.cs b/Discord.Net/Models/Server.cs similarity index 98% rename from Discord.Net/Server.cs rename to Discord.Net/Models/Server.cs index 373ea8010..667f0cc66 100644 --- a/Discord.Net/Server.cs +++ b/Discord.Net/Models/Server.cs @@ -4,7 +4,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; -namespace Discord +namespace Discord.Models { public sealed class Server { diff --git a/Discord.Net/User.cs b/Discord.Net/Models/User.cs similarity index 97% rename from Discord.Net/User.cs rename to Discord.Net/Models/User.cs index b38ce01bc..f9f528e89 100644 --- a/Discord.Net/User.cs +++ b/Discord.Net/Models/User.cs @@ -1,6 +1,6 @@ using System; -namespace Discord +namespace Discord.Models { public sealed class User {