Fix cache errors on server delete

This commit is contained in:
RogueException
2015-10-15 16:18:27 -03:00
parent edffc914a1
commit 1ca4bd50d4
4 changed files with 34 additions and 13 deletions

View File

@@ -28,14 +28,21 @@ namespace Discord.Collections
protected override void OnRemoved(Channel item)
{
if (!item.IsPrivate)
item.Server.RemoveChannel(item.Id);
{
var server = item.Server;
if (server != null)
item.Server.RemoveChannel(item.Id);
}
if (item.RecipientId != null)
{
var user = item.Recipient;
if (user.PrivateChannelId != item.Id)
throw new Exception("User has a different private channel.");
user.PrivateChannelId = null;
user.RemoveRef();
if (user != null)
{
if (user.PrivateChannelId != item.Id)
throw new Exception("User has a different private channel.");
user.PrivateChannelId = null;
user.RemoveRef();
}
}
}

View File

@@ -24,11 +24,19 @@ namespace Discord.Collections
}
protected override void OnRemoved(Member item)
{
item.Server.RemoveMember(item);
item.User.RemoveServer(item.ServerId);
item.User.RemoveRef();
if (item.UserId == _client.CurrentUserId)
item.Server.CurrentMember = null;
var server = item.Server;
if (server != null)
{
server.RemoveMember(item);
if (item.UserId == _client.CurrentUserId)
server.CurrentMember = null;
}
var user = item.User;
if (user != null)
{
user.RemoveServer(item.ServerId);
user.RemoveRef();
}
}
internal Member this[string userId, string serverId]

View File

@@ -22,8 +22,12 @@ namespace Discord.Collections
}
protected override void OnRemoved(Message item)
{
item.Channel.RemoveMessage(item.Id);
item.User.RemoveRef();
var channel = item.Channel;
if (channel != null)
channel.RemoveMessage(item.Id);
var user = item.User;
if (user != null)
user.RemoveRef();
}
internal Message this[string id] => Get(id);

View File

@@ -18,7 +18,9 @@ namespace Discord.Collections
}
protected override void OnRemoved(Role item)
{
item.Server.RemoveRole(item.Id);
var server = item.Server;
if (server != null)
item.Server.RemoveRole(item.Id);
}
internal Role this[string id] => Get(id);