Browse Source

Modify ConnectAsync API and add DisconnectAsync to IAudioChannel

pull/1057/head
NovusTheory 7 years ago
parent
commit
3e4b6666d1
6 changed files with 19 additions and 7 deletions
  1. +4
    -1
      src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs
  2. +2
    -1
      src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs
  3. +2
    -1
      src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs
  4. +2
    -1
      src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs
  5. +4
    -1
      src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs
  6. +5
    -2
      src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs

+ 4
- 1
src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs View File

@@ -10,6 +10,9 @@ namespace Discord
Task<IAudioClient> ConnectAsync(Action<IAudioClient> configAction = null); Task<IAudioClient> ConnectAsync(Action<IAudioClient> configAction = null);


/// <summary> Connects to this audio channel but can specify if client is handled externally. </summary> /// <summary> Connects to this audio channel but can specify if client is handled externally. </summary>
Task<IAudioClient> ConnectAsync(bool external, Action<IAudioClient> configAction = null);
Task<IAudioClient> ConnectAsync(Action<IAudioClient> configAction = null, bool external = false);

/// <summary> Disconnects from this audio channel if applicable. </summary>
Task DisconnectAsync();
} }
} }

+ 2
- 1
src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs View File

@@ -144,7 +144,8 @@ namespace Discord.Rest


//IAudioChannel //IAudioChannel
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); }
Task<IAudioClient> IAudioChannel.ConnectAsync(bool external, Action<IAudioClient> configAction) { throw new NotSupportedException(); }
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction, bool external) { throw new NotSupportedException(); }
Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); }


//IChannel //IChannel
Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)


+ 2
- 1
src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs View File

@@ -42,7 +42,8 @@ namespace Discord.Rest


//IAudioChannel //IAudioChannel
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); }
Task<IAudioClient> IAudioChannel.ConnectAsync(bool external, Action<IAudioClient> configAction) { throw new NotSupportedException(); }
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction, bool external) { throw new NotSupportedException(); }
Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); }


//IGuildChannel //IGuildChannel
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)


+ 2
- 1
src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs View File

@@ -207,7 +207,8 @@ namespace Discord.WebSocket


//IAudioChannel //IAudioChannel
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); }
Task<IAudioClient> IAudioChannel.ConnectAsync(bool external, Action<IAudioClient> configAction) { throw new NotSupportedException(); }
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction, bool external) { throw new NotSupportedException(); }
Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); }


//IChannel //IChannel
Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)


+ 4
- 1
src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs View File

@@ -45,11 +45,14 @@ namespace Discord.WebSocket
return await Guild.ConnectAudioAsync(Id, false, false, configAction, false).ConfigureAwait(false); return await Guild.ConnectAudioAsync(Id, false, false, configAction, false).ConfigureAwait(false);
} }


public async Task<IAudioClient> ConnectAsync(bool external, Action<IAudioClient> configAction = null)
public async Task<IAudioClient> ConnectAsync(Action<IAudioClient> configAction = null, bool external = false)
{ {
return await Guild.ConnectAudioAsync(Id, false, false, configAction, external).ConfigureAwait(false); return await Guild.ConnectAudioAsync(Id, false, false, configAction, external).ConfigureAwait(false);
} }


public async Task DisconnectAsync()
=> await Guild.DisconnectAudioAsync();

public override SocketGuildUser GetUser(ulong id) public override SocketGuildUser GetUser(ulong id)
{ {
var user = Guild.GetUser(id); var user = Guild.GetUser(id);


+ 5
- 2
src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs View File

@@ -606,8 +606,11 @@ namespace Discord.WebSocket
await _audioLock.WaitAsync().ConfigureAwait(false); await _audioLock.WaitAsync().ConfigureAwait(false);
try try
{ {
await RepopulateAudioStreamsAsync().ConfigureAwait(false);
await _audioClient.StartAsync(url, Discord.CurrentUser.Id, voiceState.VoiceSessionId, token).ConfigureAwait(false);
if (_audioClient != null)
{
await RepopulateAudioStreamsAsync().ConfigureAwait(false);
await _audioClient.StartAsync(url, Discord.CurrentUser.Id, voiceState.VoiceSessionId, token).ConfigureAwait(false);
}
} }
catch (OperationCanceledException) catch (OperationCanceledException)
{ {


Loading…
Cancel
Save