diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs
index f36c0fb06..8c1bd45da 100644
--- a/src/Discord.Net.Rest/DiscordRestClient.cs
+++ b/src/Discord.Net.Rest/DiscordRestClient.cs
@@ -8,6 +8,8 @@ namespace Discord.Rest
{
public class DiscordRestClient : BaseDiscordClient, IDiscordClient
{
+ private RestApplication _applicationInfo;
+
public new RestSelfUser CurrentUser => base.CurrentUser as RestSelfUser;
public DiscordRestClient() : this(new DiscordRestConfig()) { }
@@ -21,10 +23,17 @@ namespace Discord.Rest
base.CurrentUser = RestSelfUser.Create(this, ApiClient.CurrentUser);
return Task.CompletedTask;
}
+ protected override Task OnLogoutAsync()
+ {
+ _applicationInfo = null;
+ return Task.CompletedTask;
+ }
///
- public Task GetApplicationInfoAsync()
- => ClientHelper.GetApplicationInfoAsync(this);
+ public async Task GetApplicationInfoAsync()
+ {
+ return _applicationInfo ?? (_applicationInfo = await ClientHelper.GetApplicationInfoAsync(this));
+ }
///
public Task GetChannelAsync(ulong id)
diff --git a/src/Discord.Net.Rpc/DiscordRpcClient.cs b/src/Discord.Net.Rpc/DiscordRpcClient.cs
index 52fe6172f..3ca288b12 100644
--- a/src/Discord.Net.Rpc/DiscordRpcClient.cs
+++ b/src/Discord.Net.Rpc/DiscordRpcClient.cs
@@ -14,7 +14,7 @@ using System.Threading.Tasks;
namespace Discord.Rpc
{
- public partial class DiscordRpcClient : BaseDiscordClient
+ public partial class DiscordRpcClient : BaseDiscordClient, IDiscordClient
{
private readonly Logger _rpcLogger;
private readonly JsonSerializer _serializer;
@@ -33,7 +33,7 @@ namespace Discord.Rpc
public new API.DiscordRpcApiClient ApiClient => base.ApiClient as API.DiscordRpcApiClient;
public new RestSelfUser CurrentUser { get { return base.CurrentUser as RestSelfUser; } private set { base.CurrentUser = value; } }
- public RestApplication CurrentApplication { get; private set; }
+ public RestApplication ApplicationInfo { get; private set; }
/// Creates a new RPC discord client.
public DiscordRpcClient(string clientId, string origin)
@@ -393,7 +393,7 @@ namespace Discord.Rpc
{
var response = await ApiClient.SendAuthenticateAsync(options).ConfigureAwait(false);
CurrentUser = RestSelfUser.Create(this, response.User);
- CurrentApplication = RestApplication.Create(this, response.Application);
+ ApplicationInfo = RestApplication.Create(this, response.Application);
Scopes = response.Scopes;
TokenExpiresAt = response.Expires;
@@ -547,5 +547,8 @@ namespace Discord.Rpc
return;
}
}
+
+ //IDiscordClient
+ Task IDiscordClient.GetApplicationInfoAsync() => Task.FromResult(ApplicationInfo);
}
}
diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs
index 8c6a37f3c..3e208ce58 100644
--- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs
+++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs
@@ -38,7 +38,7 @@ namespace Discord.WebSocket
private int _nextAudioId;
private bool _canReconnect;
private DateTimeOffset? _statusSince;
- private RestApplication _application;
+ private RestApplication _applicationInfo;
/// Gets the shard of of this client.
public int ShardId { get; }
@@ -124,6 +124,7 @@ namespace Discord.WebSocket
if (ConnectionState != ConnectionState.Disconnected)
await DisconnectInternalAsync(null, false).ConfigureAwait(false);
+ _applicationInfo = null;
_voiceRegions = ImmutableDictionary.Create();
}
@@ -336,7 +337,7 @@ namespace Discord.WebSocket
///
public async Task GetApplicationInfoAsync()
{
- return _application ?? (_application = await ClientHelper.GetApplicationInfoAsync(this));
+ return _applicationInfo ?? (_applicationInfo = await ClientHelper.GetApplicationInfoAsync(this));
}
///