Browse Source

Channel reordering fixes

tags/docs-0.9
RogueException 9 years ago
parent
commit
9f5360bc6f
2 changed files with 10 additions and 8 deletions
  1. +1
    -1
      src/Discord.Net/DiscordAPIClient.cs
  2. +9
    -7
      src/Discord.Net/DiscordClient.API.cs

+ 1
- 1
src/Discord.Net/DiscordAPIClient.cs View File

@@ -86,7 +86,7 @@ namespace Discord
var request = new EditChannelRequest { Name = name, Topic = topic }; var request = new EditChannelRequest { Name = name, Topic = topic };
return _rest.Patch<EditChannelResponse>(Endpoints.Channel(channelId), request); return _rest.Patch<EditChannelResponse>(Endpoints.Channel(channelId), request);
} }
public Task ReorderChannels(string serverId, int startPos, IEnumerable<string> channelIds)
public Task ReorderChannels(string serverId, IEnumerable<string> channelIds, int startPos = 0)
{ {
if (serverId == null) throw new ArgumentNullException(nameof(serverId)); if (serverId == null) throw new ArgumentNullException(nameof(serverId));
if (channelIds == null) throw new ArgumentNullException(nameof(channelIds)); if (channelIds == null) throw new ArgumentNullException(nameof(channelIds));


+ 9
- 7
src/Discord.Net/DiscordClient.API.cs View File

@@ -139,27 +139,29 @@ namespace Discord
channels[i] = channels[i - 1]; channels[i] = channels[i - 1];
channels[newPos] = channel; channels[newPos] = channel;
} }
await _api.ReorderChannels(channel.ServerId, minPos, channels.Skip(minPos).Select(x => x.Id));
await _api.ReorderChannels(channel.ServerId, channels.Skip(minPos).Select(x => x.Id), minPos);
} }
} }


public Task ReorderChannels(Server server, int startPos, IEnumerable<object> channels)
=> ReorderChannels(server.Id, startPos, channels);
public Task ReorderChannels(string serverId, int startPos, IEnumerable<object> channels)
public Task ReorderChannels(Server server, IEnumerable<object> channels, int startPos = 0)
=> ReorderChannels(server.Id, channels, startPos);
public Task ReorderChannels(string serverId, IEnumerable<object> channels, int startPos = 0)
{ {
if (serverId == null) throw new ArgumentNullException(nameof(serverId)); if (serverId == null) throw new ArgumentNullException(nameof(serverId));
if (channels == null) throw new ArgumentNullException(nameof(channels)); if (channels == null) throw new ArgumentNullException(nameof(channels));
if (startPos < 0) throw new ArgumentOutOfRangeException(nameof(startPos), "startPos must be a positive integer."); if (startPos < 0) throw new ArgumentOutOfRangeException(nameof(startPos), "startPos must be a positive integer.");


return _api.ReorderChannels(serverId, startPos, channels.Select(x =>
var channelIds = channels.Select(x =>
{ {
if (x is string) if (x is string)
return x as string; return x as string;
else if (x is Channel) else if (x is Channel)
return (x as Role).Id;
return (x as Channel).Id;
else else
throw new ArgumentException("Channels must be a collection of string or Channel.", nameof(channels)); throw new ArgumentException("Channels must be a collection of string or Channel.", nameof(channels));
}));
});

return _api.ReorderChannels(serverId, channelIds, startPos);
} }


/// <summary> Destroys the provided channel. </summary> /// <summary> Destroys the provided channel. </summary>


Loading…
Cancel
Save