Browse Source

Properly update invite state

tags/docs-0.9
RogueException 9 years ago
parent
commit
334b049d24
2 changed files with 18 additions and 4 deletions
  1. +2
    -1
      src/Discord.Net/DiscordClient.Invites.cs
  2. +16
    -3
      src/Discord.Net/Models/Invite.cs

+ 2
- 1
src/Discord.Net/DiscordClient.Invites.cs View File

@@ -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>


+ 16
- 3
src/Discord.Net/Models/Invite.cs View File

@@ -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;
}); });
} }
@@ -75,9 +84,9 @@ namespace Discord
internal override void UnloadReferences() { } internal override void UnloadReferences() { }


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;
}
}
} }
} }

Loading…
Cancel
Save