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