More datastore fixes
This commit is contained in:
@@ -199,14 +199,14 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
internal CachedGuild RemoveCachedGuild(ulong id, DataStore dataStore = null)
|
internal CachedGuild RemoveCachedGuild(ulong id, DataStore dataStore = null)
|
||||||
{
|
{
|
||||||
var guild = DataStore.RemoveGuild(id) as CachedGuild;
|
var guild = (dataStore ?? DataStore).RemoveGuild(id) as CachedGuild;
|
||||||
foreach (var channel in guild.Channels)
|
foreach (var channel in guild.Channels)
|
||||||
guild.RemoveCachedChannel(channel.Id);
|
guild.RemoveCachedChannel(channel.Id);
|
||||||
foreach (var user in guild.Members)
|
foreach (var user in guild.Members)
|
||||||
guild.RemoveCachedUser(user.Id);
|
guild.RemoveCachedUser(user.Id);
|
||||||
return guild;
|
return guild;
|
||||||
}
|
}
|
||||||
internal CachedGuild GetCachedGuild(ulong id) => DataStore.GetGuild(id) as CachedGuild;
|
internal CachedGuild GetCachedGuild(ulong id) => DataStore.GetGuild(id);
|
||||||
|
|
||||||
public override Task<IChannel> GetChannel(ulong id)
|
public override Task<IChannel> GetChannel(ulong id)
|
||||||
{
|
{
|
||||||
@@ -214,29 +214,43 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
internal ICachedChannel AddCachedChannel(API.Channel model, DataStore dataStore = null)
|
internal ICachedChannel AddCachedChannel(API.Channel model, DataStore dataStore = null)
|
||||||
{
|
{
|
||||||
|
ICachedChannel channel;
|
||||||
if (model.IsPrivate)
|
if (model.IsPrivate)
|
||||||
{
|
{
|
||||||
var recipient = AddCachedUser(model.Recipient);
|
var recipient = AddCachedUser(model.Recipient);
|
||||||
return recipient.SetDMChannel(model);
|
channel = recipient.SetDMChannel(model);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var guild = GetCachedGuild(model.GuildId.Value);
|
var guild = GetCachedGuild(model.GuildId.Value);
|
||||||
return guild.AddCachedChannel(model);
|
channel = guild.AddCachedChannel(model);
|
||||||
}
|
}
|
||||||
|
(dataStore ?? DataStore).AddChannel(channel);
|
||||||
|
return channel;
|
||||||
}
|
}
|
||||||
internal ICachedChannel RemoveCachedChannel(ulong id, DataStore dataStore = null)
|
internal ICachedChannel RemoveCachedChannel(ulong id, DataStore dataStore = null)
|
||||||
{
|
{
|
||||||
|
//TODO: C#7
|
||||||
var channel = DataStore.RemoveChannel(id) as ICachedChannel;
|
var channel = DataStore.RemoveChannel(id) as ICachedChannel;
|
||||||
|
|
||||||
|
var guildChannel = channel as ICachedGuildChannel;
|
||||||
|
if (guildChannel != null)
|
||||||
|
{
|
||||||
|
guildChannel.Guild.RemoveCachedChannel(guildChannel.Id);
|
||||||
|
return channel;
|
||||||
|
}
|
||||||
|
|
||||||
var dmChannel = channel as CachedDMChannel;
|
var dmChannel = channel as CachedDMChannel;
|
||||||
if (dmChannel != null)
|
if (dmChannel != null)
|
||||||
{
|
{
|
||||||
var recipient = dmChannel.Recipient;
|
var recipient = dmChannel.Recipient;
|
||||||
recipient.RemoveDMChannel(id);
|
recipient.RemoveDMChannel(id);
|
||||||
|
return channel;
|
||||||
}
|
}
|
||||||
return channel;
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
internal ICachedChannel GetCachedChannel(ulong id) => DataStore.GetChannel(id) as ICachedChannel;
|
internal ICachedChannel GetCachedChannel(ulong id) => DataStore.GetChannel(id);
|
||||||
|
|
||||||
public override Task<IUser> GetUser(ulong id)
|
public override Task<IUser> GetUser(ulong id)
|
||||||
{
|
{
|
||||||
@@ -248,13 +262,13 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
internal CachedPublicUser AddCachedUser(API.User model, DataStore dataStore = null)
|
internal CachedPublicUser AddCachedUser(API.User model, DataStore dataStore = null)
|
||||||
{
|
{
|
||||||
var user = DataStore.GetOrAddUser(model.Id, _ => new CachedPublicUser(this, model)) as CachedPublicUser;
|
var user = (dataStore ?? DataStore).GetOrAddUser(model.Id, _ => new CachedPublicUser(this, model)) as CachedPublicUser;
|
||||||
user.AddRef();
|
user.AddRef();
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
internal CachedPublicUser RemoveCachedUser(ulong id, DataStore dataStore = null)
|
internal CachedPublicUser RemoveCachedUser(ulong id, DataStore dataStore = null)
|
||||||
{
|
{
|
||||||
var user = DataStore.GetUser(id) as CachedPublicUser;
|
var user = (dataStore ?? DataStore).GetUser(id) as CachedPublicUser;
|
||||||
user.RemoveRef();
|
user.RemoveRef();
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user