Exemplo n.º 1
0
        public async Task Edit(string name = null, ServerPermissions?permissions = null, Color color = null, bool?isHoisted = null, int?position = null, bool?isMentionable = null)
        {
            var updateRequest = new UpdateRoleRequest(Server.Id, Id)
            {
                Name          = name ?? Name,
                Permissions   = (permissions ?? Permissions).RawValue,
                Color         = (color ?? Color).RawValue,
                IsHoisted     = isHoisted ?? IsHoisted,
                IsMentionable = isMentionable ?? IsMentionable
            };

            var updateResponse = await Client.ClientAPI.Send(updateRequest).ConfigureAwait(false);

            if (position != null)
            {
                int    oldPos = Position;
                int    newPos = position.Value;
                int    minPos;
                Role[] roles = Server.Roles.OrderBy(x => x.Position).ToArray();

                if (oldPos < newPos) //Moving Down
                {
                    minPos = oldPos;
                    for (int i = oldPos; i < newPos; i++)
                    {
                        roles[i] = roles[i + 1];
                    }
                    roles[newPos] = this;
                }
                else //(oldPos > newPos) Moving Up
                {
                    minPos = newPos;
                    for (int i = oldPos; i > newPos; i--)
                    {
                        roles[i] = roles[i - 1];
                    }
                    roles[newPos] = this;
                }

                var reorderRequest = new ReorderRolesRequest(Server.Id)
                {
                    RoleIds  = roles.Skip(minPos).Select(x => x.Id).ToArray(),
                    StartPos = minPos
                };
                await Client.ClientAPI.Send(reorderRequest).ConfigureAwait(false);
            }
        }
Exemplo n.º 2
0
        public Task ReorderRoles(string serverId, IEnumerable <string> roleIds, int startPos = 0)
        {
            if (serverId == null)
            {
                throw new ArgumentNullException(nameof(serverId));
            }
            if (roleIds == null)
            {
                throw new ArgumentNullException(nameof(roleIds));
            }
            if (startPos < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(startPos), "startPos must be a positive integer.");
            }

            uint pos   = (uint)startPos;
            var  roles = roleIds.Select(x => new ReorderRolesRequest.Role {
                Id = x, Position = pos++
            });
            var request = new ReorderRolesRequest(roles);

            return(_rest.Patch(Endpoints.ServerRoles(serverId), request));
        }
Exemplo n.º 3
0
		public Task ReorderRoles(string serverId, IEnumerable<string> roleIds, int startPos = 0)
		{
			if (serverId == null) throw new ArgumentNullException(nameof(serverId));
			if (roleIds == null) throw new ArgumentNullException(nameof(roleIds));
			if (startPos < 0) throw new ArgumentOutOfRangeException(nameof(startPos), "startPos must be a positive integer.");

			uint pos = (uint)startPos;
			var roles = roleIds.Select(x => new ReorderRolesRequest.Role { Id = x, Position = pos++ });
			var request = new ReorderRolesRequest(roles);
			return _rest.Patch(Endpoints.ServerRoles(serverId), request);
		}
Exemplo n.º 4
0
        public async Task Edit(string name = null, ServerPermissions permissions = null, Color color = null, bool? isHoisted = null, int? position = null)
        {
            var updateRequest = new UpdateRoleRequest(Server.Id, Id)
            {
                Name = name ?? Name,
                Permissions = (permissions ?? Permissions).RawValue,
                Color = (color ?? Color).RawValue,
                IsHoisted = isHoisted ?? IsHoisted
            };

            var updateResponse = await Client.ClientAPI.Send(updateRequest).ConfigureAwait(false);

            if (position != null)
            {
                int oldPos = Position;
                int newPos = position.Value;
                int minPos;
                Role[] roles = Server.Roles.OrderBy(x => x.Position).ToArray();

                if (oldPos < newPos) //Moving Down
                {
                    minPos = oldPos;
                    for (int i = oldPos; i < newPos; i++)
                        roles[i] = roles[i + 1];
                    roles[newPos] = this;
                }
                else //(oldPos > newPos) Moving Up
                {
                    minPos = newPos;
                    for (int i = oldPos; i > newPos; i--)
                        roles[i] = roles[i - 1];
                    roles[newPos] = this;
                }

                var reorderRequest = new ReorderRolesRequest(Server.Id)
                {
                    RoleIds = roles.Skip(minPos).Select(x => x.Id).ToArray(),
                    StartPos = minPos
                };
                await Client.ClientAPI.Send(reorderRequest).ConfigureAwait(false);
            }
        }