Browse Source

Increment globaluser refs on private channel creation

tags/1.0.0-rc2
RogueException 8 years ago
parent
commit
4a128b326b
3 changed files with 14 additions and 10 deletions
  1. +12
    -10
      src/Discord.Net.WebSocket/ClientState.cs
  2. +1
    -0
      src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
  3. +1
    -0
      src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs

+ 12
- 10
src/Discord.Net.WebSocket/ClientState.cs View File

@@ -55,26 +55,28 @@ namespace Discord.WebSocket
{ {
_channels[channel.Id] = channel; _channels[channel.Id] = channel;


if (channel is SocketDMChannel dmChannel)
_dmChannels[dmChannel.Recipient.Id] = dmChannel;
else
switch (channel)
{ {
if (channel is SocketGroupChannel groupChannel)
case SocketDMChannel dmChannel:
_dmChannels[dmChannel.Recipient.Id] = dmChannel;
break;
case SocketGroupChannel groupChannel:
_groupChannels.TryAdd(groupChannel.Id); _groupChannels.TryAdd(groupChannel.Id);
break;
} }
} }
internal SocketChannel RemoveChannel(ulong id) internal SocketChannel RemoveChannel(ulong id)
{ {
if (_channels.TryRemove(id, out SocketChannel channel)) if (_channels.TryRemove(id, out SocketChannel channel))
{ {
if (channel is SocketDMChannel dmChannel)
switch (channel)
{ {
_dmChannels.TryRemove(dmChannel.Recipient.Id, out SocketDMChannel ignored);
}
else
{
if (channel is SocketGroupChannel groupChannel)
case SocketDMChannel dmChannel:
_dmChannels.TryRemove(dmChannel.Recipient.Id, out var ignored);
break;
case SocketGroupChannel groupChannel:
_groupChannels.TryRemove(id); _groupChannels.TryRemove(id);
break;
} }
return channel; return channel;
} }


+ 1
- 0
src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs View File

@@ -24,6 +24,7 @@ namespace Discord.WebSocket
: base(discord, id) : base(discord, id)
{ {
Recipient = recipient; Recipient = recipient;
recipient.GlobalUser.AddRef();
if (Discord.MessageCacheSize > 0) if (Discord.MessageCacheSize > 0)
_messages = new MessageCache(Discord, this); _messages = new MessageCache(Discord, this);
} }


+ 1
- 0
src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs View File

@@ -131,6 +131,7 @@ namespace Discord.WebSocket
else else
{ {
var privateUser = SocketGroupUser.Create(this, Discord.State, model); var privateUser = SocketGroupUser.Create(this, Discord.State, model);
privateUser.GlobalUser.AddRef();
_users[privateUser.Id] = privateUser; _users[privateUser.Id] = privateUser;
return privateUser; return privateUser;
} }


Loading…
Cancel
Save