| @@ -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; | |||
| } | |||
| /// <inheritdoc /> | |||
| public Task<RestApplication> GetApplicationInfoAsync() | |||
| => ClientHelper.GetApplicationInfoAsync(this); | |||
| public async Task<RestApplication> GetApplicationInfoAsync() | |||
| { | |||
| return _applicationInfo ?? (_applicationInfo = await ClientHelper.GetApplicationInfoAsync(this)); | |||
| } | |||
| /// <inheritdoc /> | |||
| public Task<RestChannel> GetChannelAsync(ulong id) | |||
| @@ -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; } | |||
| /// <summary> Creates a new RPC discord client. </summary> | |||
| 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<IApplication> IDiscordClient.GetApplicationInfoAsync() => Task.FromResult<IApplication>(ApplicationInfo); | |||
| } | |||
| } | |||
| @@ -38,7 +38,7 @@ namespace Discord.WebSocket | |||
| private int _nextAudioId; | |||
| private bool _canReconnect; | |||
| private DateTimeOffset? _statusSince; | |||
| private RestApplication _application; | |||
| private RestApplication _applicationInfo; | |||
| /// <summary> Gets the shard of of this client. </summary> | |||
| 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<string, RestVoiceRegion>(); | |||
| } | |||
| @@ -336,7 +337,7 @@ namespace Discord.WebSocket | |||
| /// <inheritdoc /> | |||
| public async Task<RestApplication> GetApplicationInfoAsync() | |||
| { | |||
| return _application ?? (_application = await ClientHelper.GetApplicationInfoAsync(this)); | |||
| return _applicationInfo ?? (_applicationInfo = await ClientHelper.GetApplicationInfoAsync(this)); | |||
| } | |||
| /// <inheritdoc /> | |||