datastore, please
This commit is contained in:
@@ -186,27 +186,30 @@ namespace Discord
|
||||
}
|
||||
internal CachedGuild AddCachedGuild(API.Gateway.ExtendedGuild model, DataStore dataStore = null)
|
||||
{
|
||||
dataStore = dataStore ?? DataStore;
|
||||
|
||||
var guild = new CachedGuild(this, model);
|
||||
if (model.Unavailable != true)
|
||||
{
|
||||
for (int i = 0; i < model.Channels.Length; i++)
|
||||
AddCachedChannel(model.Channels[i], dataStore);
|
||||
}
|
||||
(dataStore ?? DataStore).AddGuild(guild);
|
||||
dataStore.AddGuild(guild);
|
||||
if (model.Large)
|
||||
_largeGuilds.Enqueue(model.Id);
|
||||
return guild;
|
||||
}
|
||||
internal CachedGuild RemoveCachedGuild(ulong id, DataStore dataStore = null)
|
||||
{
|
||||
var guild = (dataStore ?? DataStore).RemoveGuild(id) as CachedGuild;
|
||||
dataStore = dataStore ?? DataStore;
|
||||
|
||||
var guild = dataStore.RemoveGuild(id) as CachedGuild;
|
||||
foreach (var channel in guild.Channels)
|
||||
guild.RemoveCachedChannel(channel.Id);
|
||||
foreach (var user in guild.Members)
|
||||
guild.RemoveCachedUser(user.Id);
|
||||
return guild;
|
||||
}
|
||||
internal CachedGuild GetCachedGuild(ulong id) => DataStore.GetGuild(id);
|
||||
|
||||
public override Task<IChannel> GetChannel(ulong id)
|
||||
{
|
||||
@@ -214,22 +217,26 @@ namespace Discord
|
||||
}
|
||||
internal ICachedChannel AddCachedChannel(API.Channel model, DataStore dataStore = null)
|
||||
{
|
||||
dataStore = dataStore ?? DataStore;
|
||||
|
||||
ICachedChannel channel;
|
||||
if (model.IsPrivate)
|
||||
{
|
||||
var recipient = AddCachedUser(model.Recipient);
|
||||
var recipient = AddCachedUser(model.Recipient, dataStore);
|
||||
channel = recipient.SetDMChannel(model);
|
||||
}
|
||||
else
|
||||
{
|
||||
var guild = GetCachedGuild(model.GuildId.Value);
|
||||
var guild = dataStore.GetGuild(model.GuildId.Value);
|
||||
channel = guild.AddCachedChannel(model);
|
||||
}
|
||||
(dataStore ?? DataStore).AddChannel(channel);
|
||||
dataStore.AddChannel(channel);
|
||||
return channel;
|
||||
}
|
||||
internal ICachedChannel RemoveCachedChannel(ulong id, DataStore dataStore = null)
|
||||
{
|
||||
dataStore = dataStore ?? DataStore;
|
||||
|
||||
//TODO: C#7
|
||||
var channel = DataStore.RemoveChannel(id) as ICachedChannel;
|
||||
|
||||
@@ -250,7 +257,6 @@ namespace Discord
|
||||
|
||||
return null;
|
||||
}
|
||||
internal ICachedChannel GetCachedChannel(ulong id) => DataStore.GetChannel(id);
|
||||
|
||||
public override Task<IUser> GetUser(ulong id)
|
||||
{
|
||||
@@ -262,13 +268,17 @@ namespace Discord
|
||||
}
|
||||
internal CachedPublicUser AddCachedUser(API.User model, DataStore dataStore = null)
|
||||
{
|
||||
var user = (dataStore ?? DataStore).GetOrAddUser(model.Id, _ => new CachedPublicUser(this, model)) as CachedPublicUser;
|
||||
dataStore = dataStore ?? DataStore;
|
||||
|
||||
var user = dataStore.GetOrAddUser(model.Id, _ => new CachedPublicUser(this, model)) as CachedPublicUser;
|
||||
user.AddRef();
|
||||
return user;
|
||||
}
|
||||
internal CachedPublicUser RemoveCachedUser(ulong id, DataStore dataStore = null)
|
||||
{
|
||||
var user = (dataStore ?? DataStore).GetUser(id) as CachedPublicUser;
|
||||
dataStore = dataStore ?? DataStore;
|
||||
|
||||
var user = dataStore.GetUser(id) as CachedPublicUser;
|
||||
user.RemoveRef();
|
||||
return user;
|
||||
}
|
||||
@@ -306,7 +316,7 @@ namespace Discord
|
||||
_sessionId = data.SessionId;
|
||||
DataStore = dataStore;
|
||||
|
||||
await Ready().ConfigureAwait(false);
|
||||
await Ready.Raise().ConfigureAwait(false);
|
||||
|
||||
_connectTask.TrySetResult(true); //Signal the .Connect() call to complete
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user