Increment globaluser refs on private channel creation
This commit is contained in:
@@ -55,26 +55,28 @@ namespace Discord.WebSocket
|
|||||||
{
|
{
|
||||||
_channels[channel.Id] = channel;
|
_channels[channel.Id] = channel;
|
||||||
|
|
||||||
if (channel is SocketDMChannel dmChannel)
|
switch (channel)
|
||||||
_dmChannels[dmChannel.Recipient.Id] = dmChannel;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
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);
|
case SocketDMChannel dmChannel:
|
||||||
}
|
_dmChannels.TryRemove(dmChannel.Recipient.Id, out var ignored);
|
||||||
else
|
break;
|
||||||
{
|
case SocketGroupChannel groupChannel:
|
||||||
if (channel is SocketGroupChannel groupChannel)
|
|
||||||
_groupChannels.TryRemove(id);
|
_groupChannels.TryRemove(id);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return channel;
|
return channel;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user