Properly update invite state
This commit is contained in:
@@ -26,7 +26,8 @@ namespace Discord
|
|||||||
var response = await _api.GetInvite(inviteIdOrXkcd).ConfigureAwait(false);
|
var response = await _api.GetInvite(inviteIdOrXkcd).ConfigureAwait(false);
|
||||||
var invite = new Invite(this, response.Code, response.XkcdPass, response.Guild.Id, response.Inviter?.Id, response.Channel?.Id);
|
var invite = new Invite(this, response.Code, response.XkcdPass, response.Guild.Id, response.Inviter?.Id, response.Channel?.Id);
|
||||||
invite.Cache(); //Builds references
|
invite.Cache(); //Builds references
|
||||||
return invite;
|
invite.Update(response);
|
||||||
|
return invite;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Creates a new invite to the default channel of the provided server. </summary>
|
/// <summary> Creates a new invite to the default channel of the provided server. </summary>
|
||||||
|
|||||||
@@ -48,21 +48,30 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var server = _client.Servers[x];
|
var server = _client.Servers[x];
|
||||||
if (server == null)
|
if (server == null)
|
||||||
|
{
|
||||||
server = _generatedServer = new Server(client, x);
|
server = _generatedServer = new Server(client, x);
|
||||||
|
server.Cache();
|
||||||
|
}
|
||||||
return server;
|
return server;
|
||||||
});
|
});
|
||||||
_inviter = new Reference<User>(serverId, x =>
|
_inviter = new Reference<User>(serverId, x =>
|
||||||
{
|
{
|
||||||
var inviter = _client.Users[x, _server.Id];
|
var inviter = _client.Users[x, _server.Id];
|
||||||
if (inviter == null)
|
if (inviter == null)
|
||||||
|
{
|
||||||
inviter = _generatedInviter = new User(client, x, _server.Id);
|
inviter = _generatedInviter = new User(client, x, _server.Id);
|
||||||
|
inviter.Cache();
|
||||||
|
}
|
||||||
return inviter;
|
return inviter;
|
||||||
});
|
});
|
||||||
_channel = new Reference<Channel>(serverId, x =>
|
_channel = new Reference<Channel>(serverId, x =>
|
||||||
{
|
{
|
||||||
var channel = _client.Channels[x];
|
var channel = _client.Channels[x];
|
||||||
if (channel == null)
|
if (channel == null)
|
||||||
|
{
|
||||||
channel = _generatedChannel = new Channel(client, x, _server.Id, null);
|
channel = _generatedChannel = new Channel(client, x, _server.Id, null);
|
||||||
|
channel.Cache();
|
||||||
|
}
|
||||||
return channel;
|
return channel;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -77,7 +86,7 @@ namespace Discord
|
|||||||
public override string ToString() => XkcdCode ?? Id;
|
public override string ToString() => XkcdCode ?? Id;
|
||||||
|
|
||||||
|
|
||||||
internal void Update(InviteInfo model)
|
internal void Update(InviteReference model)
|
||||||
{
|
{
|
||||||
if (model.Guild != null && _generatedServer != null)
|
if (model.Guild != null && _generatedServer != null)
|
||||||
_generatedServer.Update(model.Guild);
|
_generatedServer.Update(model.Guild);
|
||||||
@@ -85,6 +94,10 @@ namespace Discord
|
|||||||
_generatedInviter.Update(model.Inviter);
|
_generatedInviter.Update(model.Inviter);
|
||||||
if (model.Channel != null && _generatedChannel != null)
|
if (model.Channel != null && _generatedChannel != null)
|
||||||
_generatedChannel.Update(model.Channel);
|
_generatedChannel.Update(model.Channel);
|
||||||
|
}
|
||||||
|
internal void Update(InviteInfo model)
|
||||||
|
{
|
||||||
|
Update(model as InviteReference);
|
||||||
|
|
||||||
if (model.IsRevoked != null)
|
if (model.IsRevoked != null)
|
||||||
IsRevoked = model.IsRevoked.Value;
|
IsRevoked = model.IsRevoked.Value;
|
||||||
@@ -96,6 +109,6 @@ namespace Discord
|
|||||||
MaxUses = model.MaxUses.Value;
|
MaxUses = model.MaxUses.Value;
|
||||||
if (model.Uses != null)
|
if (model.Uses != null)
|
||||||
Uses = model.Uses.Value;
|
Uses = model.Uses.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user