| @@ -150,14 +150,18 @@ namespace Discord | |||||
| if (channel == null) throw new ArgumentNullException(nameof(channel)); | if (channel == null) throw new ArgumentNullException(nameof(channel)); | ||||
| CheckReady(); | CheckReady(); | ||||
| await _api.EditChannel(channel.Id, name: name, topic: topic).ConfigureAwait(false); | |||||
| if (name != null || topic != null) | |||||
| await _api.EditChannel(channel.Id, name: name, topic: topic).ConfigureAwait(false); | |||||
| if (position != null) | if (position != null) | ||||
| { | { | ||||
| int oldPos = channel.Position; | |||||
| int newPos = position.Value; | |||||
| int minPos; | |||||
| Channel[] channels = channel.Server.Channels.Where(x => x.Type == channel.Type).OrderBy(x => x.Position).ToArray(); | Channel[] channels = channel.Server.Channels.Where(x => x.Type == channel.Type).OrderBy(x => x.Position).ToArray(); | ||||
| int oldPos = Array.IndexOf(channels, channel); | |||||
| var newPosChannel = channels.Where(x => x.Position > position).FirstOrDefault(); | |||||
| int newPos = (newPosChannel != null ? Array.IndexOf(channels, newPosChannel) : channels.Length) - 1; | |||||
| if (newPos < 0) | |||||
| newPos = 0; | |||||
| int minPos; | |||||
| if (oldPos < newPos) //Moving Down | if (oldPos < newPos) //Moving Down | ||||
| { | { | ||||
| @@ -185,7 +189,7 @@ namespace Discord | |||||
| if (channels == null) throw new ArgumentNullException(nameof(channels)); | if (channels == null) throw new ArgumentNullException(nameof(channels)); | ||||
| CheckReady(); | CheckReady(); | ||||
| return _api.ReorderChannels(server.Id, channels.Select(x => x.Id), after.Position); | |||||
| return _api.ReorderChannels(server.Id, channels.Select(x => x.Id), after?.Position ?? 0); | |||||
| } | } | ||||
| /// <summary> Destroys the provided channel. </summary> | /// <summary> Destroys the provided channel. </summary> | ||||