Browse Source

Implemented IComparable<IRole> on IGuildUser

tags/1.0-rc
james7132 8 years ago
parent
commit
50d1aa0689
4 changed files with 8 additions and 1 deletions
  1. +1
    -1
      src/Discord.Net.Core/Entities/Users/IGuildUser.cs
  2. +5
    -0
      src/Discord.Net.Core/Extensions/GuildUserExtensions.cs
  3. +1
    -0
      src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs
  4. +1
    -0
      src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs

+ 1
- 1
src/Discord.Net.Core/Entities/Users/IGuildUser.cs View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Discord
{
/// <summary> A Guild-User pairing. </summary>
public interface IGuildUser : IUser, IVoiceState, IComparable<IGuildUser>
public interface IGuildUser : IUser, IVoiceState, IComparable<IGuildUser>, IComparable<IRole>
{
/// <summary> Gets when this user joined this guild. </summary>
DateTimeOffset? JoinedAt { get; }


+ 5
- 0
src/Discord.Net.Core/Extensions/GuildUserExtensions.cs View File

@@ -22,10 +22,15 @@ namespace Discord
}

internal static int Compare(this IGuildUser u1, IGuildUser u2) {
// These should never be empty since the everyone role is always present
var r1 = u1.GetRoles().Max();
var r2 = u2.GetRoles().Max();
var result = r1.CompareTo(r2);
return result != 0 ? result : u1.Id.CompareTo(u2.Id);
}

internal static int Compare(this IGuildUser user, IRole role) {
return user.GetRoles().Max().CompareTo(role);
}
}
}

+ 1
- 0
src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs View File

@@ -98,6 +98,7 @@ namespace Discord.Rest
}
public int CompareTo(IGuildUser user) => this.Compare(user);
public int CompareTo(IRole role) => this.Compare(role);

//IVoiceState
bool IVoiceState.IsSelfDeafened => false;


+ 1
- 0
src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs View File

@@ -97,6 +97,7 @@ namespace Discord.WebSocket
ulong IGuildUser.GuildId => Guild.Id;
IReadOnlyCollection<ulong> IGuildUser.RoleIds => RoleIds;
public int CompareTo(IGuildUser user) => this.Compare(user);
public int CompareTo(IRole role) => this.Compare(role);

//IUser
Task<IDMChannel> IUser.GetDMChannelAsync(CacheMode mode, RequestOptions options)


Loading…
Cancel
Save