From 8c6354856f433da8e50137f48f9cf0d5860a2903 Mon Sep 17 00:00:00 2001 From: Emzi0767 Date: Mon, 27 Feb 2017 22:48:14 +0100 Subject: [PATCH] Per Volt: reimplemented new endpoints --- .../Entities/Users/IGuildUser.cs | 18 +++--------- .../Entities/Users/RestGuildUser.cs | 29 ++++--------------- .../Entities/Users/SocketGuildUser.cs | 29 ++++--------------- 3 files changed, 16 insertions(+), 60 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs index 1f50ae596..fbbbaeec4 100644 --- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs @@ -29,19 +29,9 @@ namespace Discord /// Modifies this user's properties in this guild. Task ModifyAsync(Action func, RequestOptions options = null); - /// Adds roles to this user in this guild. - Task AddRolesAsync(params IRole[] roles); - /// Adds roles to this user in this guild. - Task AddRolesAsync(IEnumerable roles); - /// Removes roles from this user in this guild. - Task RemoveRolesAsync(params IRole[] roles); - /// Removes roles from this user in this guild. - Task RemoveRolesAsync(IEnumerable roles); - /// Adds and removes roles from this user in this guild. - Task ModifyRolesAsync(IEnumerable add = null, IEnumerable remove = null); - /// Replaces roles from this user in this guild. - Task ModifyRolesAsync(params IRole[] roles); - /// Replaces roles from this user in this guild. - Task ModifyRolesAsync(IEnumerable roles); + /// Adds roles to this user in this guild. + Task AddRolesAsync(IEnumerable roles, RequestOptions options = null); + /// Removes roles from this user in this guild. + Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null); } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs index f6290bf5d..d8282fe86 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs @@ -82,29 +82,12 @@ namespace Discord.Rest else if (args.RoleIds.IsSpecified) UpdateRoles(args.RoleIds.Value.ToArray()); } - public Task AddRolesAsync(params IRole[] roles) - => ModifyRolesAsync(add: roles); - public Task AddRolesAsync(IEnumerable roles) - => ModifyRolesAsync(add: roles); - public Task RemoveRolesAsync(params IRole[] roles) - => ModifyRolesAsync(remove: roles); - public Task RemoveRolesAsync(IEnumerable roles) - => ModifyRolesAsync(remove: roles); - public async Task ModifyRolesAsync(IEnumerable add = null, IEnumerable remove = null) - { - IEnumerable roleIds = RoleIds; - if (remove != null) - roleIds = roleIds.Except(remove.Select(x => x.Id)); - if (add != null) - roleIds = roleIds.Concat(add.Select(x => x.Id)); - await ModifyAsync(x => x.RoleIds = roleIds.ToArray()).ConfigureAwait(false); - } - /// Replaces roles from this user in this guild. - public Task ModifyRolesAsync(params IRole[] roles) - => ModifyRolesAsync(roles as IEnumerable); - /// Replaces roles from this user in this guild. - public Task ModifyRolesAsync(IEnumerable roles) - => ModifyAsync(x => x.Roles = new Optional>(roles)); + /// + public Task AddRolesAsync(IEnumerable roles, RequestOptions options = null) + => UserHelper.ModifyAsync(this, Discord, x => x.RoleIds = new Optional>(_roleIds.Concat(roles.Select(xr => xr.Id))), options); + /// + public Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null) + => UserHelper.ModifyAsync(this, Discord, x => x.RoleIds = new Optional>(_roleIds.Except(roles.Select(xr => xr.Id))), options); public Task KickAsync(RequestOptions options = null) => UserHelper.KickAsync(this, Discord, options); diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index 08567756d..66e8ff53b 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -107,29 +107,12 @@ namespace Discord.WebSocket => UserHelper.ModifyAsync(this, Discord, func, options); public Task KickAsync(RequestOptions options = null) => UserHelper.KickAsync(this, Discord, options); - public Task AddRolesAsync(params IRole[] roles) - => ModifyRolesAsync(add: roles); - public Task AddRolesAsync(IEnumerable roles) - => ModifyRolesAsync(add: roles); - public Task RemoveRolesAsync(params IRole[] roles) - => ModifyRolesAsync(remove: roles); - public Task RemoveRolesAsync(IEnumerable roles) - => ModifyRolesAsync(remove: roles); - public async Task ModifyRolesAsync(IEnumerable add = null, IEnumerable remove = null) - { - IEnumerable roleIds = _roleIds; - if (remove != null) - roleIds = roleIds.Except(remove.Select(x => x.Id)); - if (add != null) - roleIds = roleIds.Concat(add.Select(x => x.Id)); - await ModifyAsync(x => x.RoleIds = roleIds.ToArray()).ConfigureAwait(false); - } - /// Replaces roles from this user in this guild. - public Task ModifyRolesAsync(params IRole[] roles) - => ModifyRolesAsync(roles as IEnumerable); - /// Replaces roles from this user in this guild. - public Task ModifyRolesAsync(IEnumerable roles) - => ModifyAsync(x => x.Roles = new Optional>(roles)); + /// + public Task AddRolesAsync(IEnumerable roles, RequestOptions options = null) + => UserHelper.ModifyAsync(this, Discord, x => x.RoleIds = new Optional>(_roleIds.Concat(roles.Select(xr => xr.Id))), options); + /// + public Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null) + => UserHelper.ModifyAsync(this, Discord, x => x.RoleIds = new Optional>(_roleIds.Except(roles.Select(xr => xr.Id))), options); public ChannelPermissions GetPermissions(IGuildChannel channel) => new ChannelPermissions(Permissions.ResolveChannel(Guild, this, channel, GuildPermissions.RawValue));