From ea59f72d69b228fd9480f3937cd95f2793d8359f Mon Sep 17 00:00:00 2001 From: RogueException Date: Tue, 20 Oct 2015 03:32:42 -0300 Subject: [PATCH] Assume EveryoneRole to be same Id as the server --- src/Discord.Net/API/Servers.cs | 4 ++++ src/Discord.Net/Collections/Roles.cs | 2 +- src/Discord.Net/DiscordClient.API.cs | 2 +- src/Discord.Net/DiscordClient.cs | 2 +- src/Discord.Net/Models/Role.cs | 7 +++---- src/Discord.Net/Models/Server.cs | 8 ++------ 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/Discord.Net/API/Servers.cs b/src/Discord.Net/API/Servers.cs index 925d5c923..8abea6fca 100644 --- a/src/Discord.Net/API/Servers.cs +++ b/src/Discord.Net/API/Servers.cs @@ -69,6 +69,10 @@ namespace Discord.API public string Region; [JsonProperty("icon", NullValueHandling = NullValueHandling.Ignore)] public string Icon; + [JsonProperty("afk_channel_id", NullValueHandling = NullValueHandling.Ignore)] + public string AFKChannelId; + [JsonProperty("afk_timeout", NullValueHandling = NullValueHandling.Ignore)] + public int AFKTimeout; } public sealed class EditServerResponse : GuildInfo { } diff --git a/src/Discord.Net/Collections/Roles.cs b/src/Discord.Net/Collections/Roles.cs index 5a3d1d41b..502c9b8d7 100644 --- a/src/Discord.Net/Collections/Roles.cs +++ b/src/Discord.Net/Collections/Roles.cs @@ -9,7 +9,7 @@ namespace Discord.Collections internal Roles(DiscordClient client, object writerLock) : base(client, writerLock) { } - internal Role GetOrAdd(string id, string serverId, bool isEveryone) => GetOrAdd(id, () => new Role(_client, id, serverId, isEveryone)); + internal Role GetOrAdd(string id, string serverId) => GetOrAdd(id, () => new Role(_client, id, serverId)); internal new Role TryRemove(string id) => base.TryRemove(id); protected override void OnCreated(Role item) diff --git a/src/Discord.Net/DiscordClient.API.cs b/src/Discord.Net/DiscordClient.API.cs index d26c4405d..e99561ebd 100644 --- a/src/Discord.Net/DiscordClient.API.cs +++ b/src/Discord.Net/DiscordClient.API.cs @@ -632,7 +632,7 @@ namespace Discord if (serverId == null) throw new NullReferenceException(nameof(serverId)); var response = await _api.CreateRole(serverId).ConfigureAwait(false); - var role = _roles.GetOrAdd(response.Id, serverId, false); + var role = _roles.GetOrAdd(response.Id, serverId); role.Update(response); await EditRole(role, name: name); diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 183b1a54b..21f8db3ec 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -508,7 +508,7 @@ namespace Discord case "GUILD_ROLE_CREATE": { var data = e.Payload.ToObject(_serializer); - var role = _roles.GetOrAdd(data.Data.Id, data.GuildId, false); + var role = _roles.GetOrAdd(data.Data.Id, data.GuildId); role.Update(data.Data); var server = _servers[data.GuildId]; if (server != null) diff --git a/src/Discord.Net/Models/Role.cs b/src/Discord.Net/Models/Role.cs index ebd40a146..43215b8f8 100644 --- a/src/Discord.Net/Models/Role.cs +++ b/src/Discord.Net/Models/Role.cs @@ -32,7 +32,7 @@ namespace Discord public Server Server => _client.Servers[ServerId]; /// Returns true if this is the role representing all users in a server. - public bool IsEveryone { get; } + public bool IsEveryone => Id == ServerId; /// Returns a list of the ids of all members in this role. [JsonIgnore] public IEnumerable MemberIds => IsEveryone ? Server.UserIds : Server.Members.Where(x => x.RoleIds.Contains(Id)).Select(x => x.UserId); @@ -40,18 +40,17 @@ namespace Discord [JsonIgnore] public IEnumerable Members => IsEveryone ? Server.Members : Server.Members.Where(x => x.RoleIds.Contains(Id)); - internal Role(DiscordClient client, string id, string serverId, bool isEveryone) + internal Role(DiscordClient client, string id, string serverId) { _client = client; Id = id; ServerId = serverId; - IsEveryone = isEveryone; Permissions = new PackedServerPermissions(0); Permissions.Lock(); Color = new PackedColor(0); Color.Lock(); - if (isEveryone) + if (IsEveryone) Position = int.MinValue; } diff --git a/src/Discord.Net/Models/Server.cs b/src/Discord.Net/Models/Server.cs index c5dbff92c..aada16b20 100644 --- a/src/Discord.Net/Models/Server.cs +++ b/src/Discord.Net/Models/Server.cs @@ -83,7 +83,7 @@ namespace Discord public IEnumerable Users => _members.Select(x => _client.Users[x.Key]); /// Return the id of the role representing all users in a server. - public string EveryoneRoleId { get; private set; } + public string EveryoneRoleId => Id; /// Return the the role representing all users in a server. [JsonIgnore] public Role EveryoneRole => _client.Roles[EveryoneRoleId]; @@ -116,14 +116,10 @@ namespace Discord Region = model.Region; var roles = _client.Roles; - bool isEveryone = true; //Assumes first role is always everyone foreach (var subModel in model.Roles) { - var role = roles.GetOrAdd(subModel.Id, Id, isEveryone); + var role = roles.GetOrAdd(subModel.Id, Id); role.Update(subModel); - if (isEveryone) - EveryoneRoleId = subModel.Id; - isEveryone = false; } } internal void Update(ExtendedGuildInfo model)