This reverts commit 389372b93f.
tags/docs-0.9
| @@ -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 | |||
| @@ -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")] | |||
| @@ -49,9 +49,10 @@ | |||
| <Compile Include="API\Models\ApiRequests.cs" /> | |||
| <Compile Include="API\Endpoints.cs" /> | |||
| <Compile Include="API\Models\WebSocketCommands.cs" /> | |||
| <Compile Include="Role.cs" /> | |||
| <Compile Include="ChatMessage.cs" /> | |||
| <Compile Include="Channel.cs" /> | |||
| <Compile Include="Models\Role.cs" /> | |||
| <Compile Include="Models\ChatMessageReference.cs" /> | |||
| <Compile Include="Models\ChatMessage.cs" /> | |||
| <Compile Include="Models\Channel.cs" /> | |||
| <Compile Include="DiscordWebSocket.Events.cs" /> | |||
| <Compile Include="Helpers\Http.cs" /> | |||
| <Compile Include="API\DiscordAPI.cs" /> | |||
| @@ -61,8 +62,8 @@ | |||
| <Compile Include="DiscordClient.Events.cs" /> | |||
| <Compile Include="Properties\AssemblyInfo.cs" /> | |||
| <Compile Include="DiscordWebSocket.cs" /> | |||
| <Compile Include="Server.cs" /> | |||
| <Compile Include="User.cs" /> | |||
| <Compile Include="Models\Server.cs" /> | |||
| <Compile Include="Models\User.cs" /> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="packages.config" /> | |||
| @@ -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<MessageEventArgs> MessageCreated; | |||
| public event EventHandler<MessageCreateEventArgs> MessageCreated; | |||
| private void RaiseMessageCreated(ChatMessage msg) | |||
| { | |||
| if (MessageCreated != null) | |||
| MessageCreated(this, new MessageEventArgs(msg)); | |||
| MessageCreated(this, new MessageCreateEventArgs(msg)); | |||
| } | |||
| public event EventHandler<MessageEventArgs> MessageDeleted; | |||
| private void RaiseMessageDeleted(ChatMessage msg) | |||
| private void RaiseMessageDeleted(ChatMessageReference msg) | |||
| { | |||
| if (MessageDeleted != null) | |||
| MessageDeleted(this, new MessageEventArgs(msg)); | |||
| } | |||
| public event EventHandler<MessageEventArgs> MessageUpdated; | |||
| private void RaiseMessageUpdated(ChatMessage msg) | |||
| private void RaiseMessageUpdated(ChatMessageReference msg) | |||
| { | |||
| if (MessageUpdated != null) | |||
| MessageUpdated(this, new MessageEventArgs(msg)); | |||
| } | |||
| public event EventHandler<MessageEventArgs> MessageAcknowledged; | |||
| private void RaiseMessageAcknowledged(ChatMessage msg) | |||
| private void RaiseMessageAcknowledged(ChatMessageReference msg) | |||
| { | |||
| if (MessageAcknowledged != null) | |||
| MessageAcknowledged(this, new MessageEventArgs(msg)); | |||
| @@ -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) | |||
| { | |||
| @@ -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(); } | |||
| } | |||
| @@ -1,6 +1,6 @@ | |||
| using Newtonsoft.Json; | |||
| namespace Discord | |||
| namespace Discord.Models | |||
| { | |||
| public sealed class Channel | |||
| { | |||
| @@ -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() | |||
| { | |||
| @@ -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; | |||
| } | |||
| } | |||
| } | |||
| @@ -1,6 +1,6 @@ | |||
| using Newtonsoft.Json; | |||
| namespace Discord | |||
| namespace Discord.Models | |||
| { | |||
| public sealed class Role | |||
| { | |||
| @@ -4,7 +4,7 @@ using System.Collections.Concurrent; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| namespace Discord | |||
| namespace Discord.Models | |||
| { | |||
| public sealed class Server | |||
| { | |||
| @@ -1,6 +1,6 @@ | |||
| using System; | |||
| namespace Discord | |||
| namespace Discord.Models | |||
| { | |||
| public sealed class User | |||
| { | |||