Browse Source

Collapsed Discord.Models namespace, cleaned up Message cache

tags/docs-0.9
Brandon Smith 9 years ago
parent
commit
389372b93f
12 changed files with 102 additions and 60 deletions
  1. +63
    -0
      .gitattributes
  2. +1
    -1
      Discord.Net/API/Models/General.cs
  3. +1
    -1
      Discord.Net/Channel.cs
  4. +15
    -5
      Discord.Net/ChatMessage.cs
  5. +5
    -6
      Discord.Net/Discord.Net.csproj
  6. +8
    -14
      Discord.Net/DiscordClient.Events.cs
  7. +4
    -6
      Discord.Net/DiscordClient.cs
  8. +2
    -2
      Discord.Net/DiscordWebSocket.cs
  9. +0
    -22
      Discord.Net/Models/ChatMessageReference.cs
  10. +1
    -1
      Discord.Net/Role.cs
  11. +1
    -1
      Discord.Net/Server.cs
  12. +1
    -1
      Discord.Net/User.cs

+ 63
- 0
.gitattributes View File

@@ -0,0 +1,63 @@
###############################################################################
# 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

+ 1
- 1
Discord.Net/API/Models/General.cs View File

@@ -106,7 +106,7 @@ namespace Discord.API.Models
[JsonProperty(PropertyName = "channels")] [JsonProperty(PropertyName = "channels")]
public ChannelInfo[] Channels; public ChannelInfo[] Channels;
[JsonProperty(PropertyName = "joined_at")] [JsonProperty(PropertyName = "joined_at")]
public DateTime JoinedAt;
public DateTime? JoinedAt;
[JsonProperty(PropertyName = "members")] [JsonProperty(PropertyName = "members")]
public MembershipInfo[] Members; public MembershipInfo[] Members;
[JsonProperty(PropertyName = "owner_id")] [JsonProperty(PropertyName = "owner_id")]


Discord.Net/Models/Channel.cs → Discord.Net/Channel.cs View File

@@ -1,6 +1,6 @@
using Newtonsoft.Json; using Newtonsoft.Json;


namespace Discord.Models
namespace Discord
{ {
public sealed class Channel public sealed class Channel
{ {

Discord.Net/Models/ChatMessage.cs → Discord.Net/ChatMessage.cs View File

@@ -1,15 +1,23 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;


namespace Discord.Models
namespace Discord
{ {
public sealed class ChatMessage : ChatMessageReference
public sealed class ChatMessage
{ {
private readonly DiscordClient _client;

public string Id { get; }

public bool IsMentioningEveryone { get; internal set; } public bool IsMentioningEveryone { get; internal set; }
public bool IsTTS { get; internal set; } public bool IsTTS { get; internal set; }
public string Text { get; internal set; } public string Text { get; internal set; }
public DateTime Timestamp { 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; } public string UserId { get; internal set; }
[JsonIgnore] [JsonIgnore]
public User User { get { return _client.GetUser(UserId); } } public User User { get { return _client.GetUser(UserId); } }
@@ -19,9 +27,11 @@ namespace Discord.Models
public object[] Embeds { get; internal set; } public object[] Embeds { get; internal set; }


internal ChatMessage(string id, string channelId, DiscordClient client) internal ChatMessage(string id, string channelId, DiscordClient client)
: base(id, channelId, client)
{ {
}
Id = id;
ChannelId = channelId;
_client = client;
}


public override string ToString() public override string ToString()
{ {

+ 5
- 6
Discord.Net/Discord.Net.csproj View File

@@ -49,10 +49,9 @@
<Compile Include="API\Models\ApiRequests.cs" /> <Compile Include="API\Models\ApiRequests.cs" />
<Compile Include="API\Endpoints.cs" /> <Compile Include="API\Endpoints.cs" />
<Compile Include="API\Models\WebSocketCommands.cs" /> <Compile Include="API\Models\WebSocketCommands.cs" />
<Compile Include="Models\Role.cs" />
<Compile Include="Models\ChatMessageReference.cs" />
<Compile Include="Models\ChatMessage.cs" />
<Compile Include="Models\Channel.cs" />
<Compile Include="Role.cs" />
<Compile Include="ChatMessage.cs" />
<Compile Include="Channel.cs" />
<Compile Include="DiscordWebSocket.Events.cs" /> <Compile Include="DiscordWebSocket.Events.cs" />
<Compile Include="Helpers\Http.cs" /> <Compile Include="Helpers\Http.cs" />
<Compile Include="API\DiscordAPI.cs" /> <Compile Include="API\DiscordAPI.cs" />
@@ -62,8 +61,8 @@
<Compile Include="DiscordClient.Events.cs" /> <Compile Include="DiscordClient.Events.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="DiscordWebSocket.cs" /> <Compile Include="DiscordWebSocket.cs" />
<Compile Include="Models\Server.cs" />
<Compile Include="Models\User.cs" />
<Compile Include="Server.cs" />
<Compile Include="User.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />


+ 8
- 14
Discord.Net/DiscordClient.Events.cs View File

@@ -1,5 +1,4 @@
using Discord.Models;
using System;
using System;


namespace Discord namespace Discord
{ {
@@ -98,40 +97,35 @@ namespace Discord
} }


//Message //Message
public sealed class MessageCreateEventArgs : EventArgs
{
public readonly ChatMessage Message;
internal MessageCreateEventArgs(ChatMessage msg) { Message = msg; }
}
public sealed class MessageEventArgs : EventArgs public sealed class MessageEventArgs : EventArgs
{ {
public readonly ChatMessageReference Message;
internal MessageEventArgs(ChatMessageReference msg) { Message = msg; }
public readonly ChatMessage Message;
internal MessageEventArgs(ChatMessage msg) { Message = msg; }
} }


public event EventHandler<MessageCreateEventArgs> MessageCreated;
public event EventHandler<MessageEventArgs> MessageCreated;
private void RaiseMessageCreated(ChatMessage msg) private void RaiseMessageCreated(ChatMessage msg)
{ {
if (MessageCreated != null) if (MessageCreated != null)
MessageCreated(this, new MessageCreateEventArgs(msg));
MessageCreated(this, new MessageEventArgs(msg));
} }


public event EventHandler<MessageEventArgs> MessageDeleted; public event EventHandler<MessageEventArgs> MessageDeleted;
private void RaiseMessageDeleted(ChatMessageReference msg)
private void RaiseMessageDeleted(ChatMessage msg)
{ {
if (MessageDeleted != null) if (MessageDeleted != null)
MessageDeleted(this, new MessageEventArgs(msg)); MessageDeleted(this, new MessageEventArgs(msg));
} }


public event EventHandler<MessageEventArgs> MessageUpdated; public event EventHandler<MessageEventArgs> MessageUpdated;
private void RaiseMessageUpdated(ChatMessageReference msg)
private void RaiseMessageUpdated(ChatMessage msg)
{ {
if (MessageUpdated != null) if (MessageUpdated != null)
MessageUpdated(this, new MessageEventArgs(msg)); MessageUpdated(this, new MessageEventArgs(msg));
} }


public event EventHandler<MessageEventArgs> MessageAcknowledged; public event EventHandler<MessageEventArgs> MessageAcknowledged;
private void RaiseMessageAcknowledged(ChatMessageReference msg)
private void RaiseMessageAcknowledged(ChatMessage msg)
{ {
if (MessageAcknowledged != null) if (MessageAcknowledged != null)
MessageAcknowledged(this, new MessageEventArgs(msg)); MessageAcknowledged(this, new MessageEventArgs(msg));


+ 4
- 6
Discord.Net/DiscordClient.cs View File

@@ -1,13 +1,11 @@
using Discord.API; using Discord.API;
using Discord.API.Models; using Discord.API.Models;
using Discord.Helpers; using Discord.Helpers;
using Discord.Models;
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Threading.Tasks; using System.Threading.Tasks;
using Role = Discord.Models.Role;


namespace Discord namespace Discord
{ {
@@ -372,7 +370,7 @@ namespace Discord
var extendedModel = model as ExtendedServerInfo; var extendedModel = model as ExtendedServerInfo;
server.AFKChannelId = extendedModel.AFKChannelId; server.AFKChannelId = extendedModel.AFKChannelId;
server.AFKTimeout = extendedModel.AFKTimeout; server.AFKTimeout = extendedModel.AFKTimeout;
server.JoinedAt = extendedModel.JoinedAt;
server.JoinedAt = extendedModel.JoinedAt ?? DateTime.MinValue;
server.OwnerId = extendedModel.OwnerId; server.OwnerId = extendedModel.OwnerId;
server.Presence = extendedModel.Presence; server.Presence = extendedModel.Presence;
server.Region = extendedModel.Region; server.Region = extendedModel.Region;
@@ -420,7 +418,7 @@ namespace Discord
private Channel DeleteChannel(string id) private Channel DeleteChannel(string id)
{ {
Channel channel = null; Channel channel = null;
if (_channels.TryRemove(id, out channel))
if (_channels.TryRemove(id, out channel) && !channel.IsPrivate)
{ {
bool ignored; bool ignored;
channel.Server._channels.TryRemove(id, out ignored); channel.Server._channels.TryRemove(id, out ignored);
@@ -429,10 +427,10 @@ namespace Discord
} }


//TODO: Temporary measure, unsure if we want to store these or not. //TODO: Temporary measure, unsure if we want to store these or not.
private ChatMessageReference GetMessage(string id, string channelId)
private ChatMessage GetMessage(string id, string channelId)
{ {
if (id == null || channelId == null) return null; if (id == null || channelId == null) return null;
return new ChatMessageReference(id, channelId, this);
return new ChatMessage(id, channelId, this);
} }
private ChatMessage UpdateMessage(WebSocketEvents.MessageCreate model, bool addNew = true) private ChatMessage UpdateMessage(WebSocketEvents.MessageCreate model, bool addNew = true)
{ {


+ 2
- 2
Discord.Net/DiscordWebSocket.cs View File

@@ -114,14 +114,14 @@ namespace Discord
RaiseGotEvent(msg.Type, msg.Payload as JToken); RaiseGotEvent(msg.Type, msg.Payload as JToken);
break; break;
default: default:
RaiseOnDebugMessage("Unknown WebSocket operation ID: " + msg.Operation);
RaiseOnDebugMessage("Warning: Unknown WebSocket operation ID: " + msg.Operation);
break; break;
} }


builder.Clear(); builder.Clear();
} }
} }
catch { }
catch (Exception ex) { RaiseOnDebugMessage($"Error: {ex.Message}"); }
finally { _cancelToken.Cancel(); } finally { _cancelToken.Cancel(); }
} }




+ 0
- 22
Discord.Net/Models/ChatMessageReference.cs View File

@@ -1,22 +0,0 @@
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;
}
}
}

Discord.Net/Models/Role.cs → Discord.Net/Role.cs View File

@@ -1,6 +1,6 @@
using Newtonsoft.Json; using Newtonsoft.Json;


namespace Discord.Models
namespace Discord
{ {
public sealed class Role public sealed class Role
{ {

Discord.Net/Models/Server.cs → Discord.Net/Server.cs View File

@@ -4,7 +4,7 @@ using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;


namespace Discord.Models
namespace Discord
{ {
public sealed class Server public sealed class Server
{ {

Discord.Net/Models/User.cs → Discord.Net/User.cs View File

@@ -1,6 +1,6 @@
using System; using System;


namespace Discord.Models
namespace Discord
{ {
public sealed class User public sealed class User
{ {

Loading…
Cancel
Save