* fixes #1495 * keep obsolete properties and return types for compatibility * missing properties for SocketInvite * Restore xml docs and change obsolete message Co-authored-by: Paulo <pnmanjos@hotmail.com>pull/1721/head
@@ -21,6 +21,13 @@ namespace Discord | |||||
string Url { get; } | string Url { get; } | ||||
/// <summary> | /// <summary> | ||||
/// Gets the user that created this invite. | |||||
/// </summary> | |||||
/// <returns> | |||||
/// A user that created this invite. | |||||
/// </returns> | |||||
IUser Inviter { get; } | |||||
/// <summary> | |||||
/// Gets the channel this invite is linked to. | /// Gets the channel this invite is linked to. | ||||
/// </summary> | /// </summary> | ||||
/// <returns> | /// <returns> | ||||
@@ -83,5 +90,19 @@ namespace Discord | |||||
/// invite points to; <c>null</c> if one cannot be obtained. | /// invite points to; <c>null</c> if one cannot be obtained. | ||||
/// </returns> | /// </returns> | ||||
int? MemberCount { get; } | int? MemberCount { get; } | ||||
/// <summary> | |||||
/// Gets the user this invite is linked to via <see cref="TargetUserType"/>. | |||||
/// </summary> | |||||
/// <returns> | |||||
/// A user that is linked to this invite. | |||||
/// </returns> | |||||
IUser TargetUser { get; } | |||||
/// <summary> | |||||
/// Gets the type of the linked <see cref="TargetUser"/> for this invite. | |||||
/// </summary> | |||||
/// <returns> | |||||
/// The type of the linked user that is linked to this invite. | |||||
/// </returns> | |||||
TargetUserType TargetUserType { get; } | |||||
} | } | ||||
} | } |
@@ -8,28 +8,22 @@ namespace Discord | |||||
public interface IInviteMetadata : IInvite | public interface IInviteMetadata : IInvite | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// Gets the user that created this invite. | |||||
/// Gets a value that indicates whether the invite is a temporary one. | |||||
/// </summary> | /// </summary> | ||||
/// <returns> | /// <returns> | ||||
/// A user that created this invite. | |||||
/// <c>true</c> if users accepting this invite will be removed from the guild when they log off; otherwise | |||||
/// <c>false</c>. | |||||
/// </returns> | /// </returns> | ||||
IUser Inviter { get; } | |||||
bool IsTemporary { get; } | |||||
/// <summary> | /// <summary> | ||||
/// Gets a value that indicates whether the invite has been revoked. | /// Gets a value that indicates whether the invite has been revoked. | ||||
/// </summary> | /// </summary> | ||||
/// <returns> | /// <returns> | ||||
/// <c>true</c> if this invite was revoked; otherwise <c>false</c>. | /// <c>true</c> if this invite was revoked; otherwise <c>false</c>. | ||||
/// </returns> | /// </returns> | ||||
[Obsolete("This property doesn't exist anymore and shouldn't be used.")] | |||||
bool IsRevoked { get; } | bool IsRevoked { get; } | ||||
/// <summary> | /// <summary> | ||||
/// Gets a value that indicates whether the invite is a temporary one. | |||||
/// </summary> | |||||
/// <returns> | |||||
/// <c>true</c> if users accepting this invite will be removed from the guild when they log off; otherwise | |||||
/// <c>false</c>. | |||||
/// </returns> | |||||
bool IsTemporary { get; } | |||||
/// <summary> | |||||
/// Gets the time (in seconds) until the invite expires. | /// Gets the time (in seconds) until the invite expires. | ||||
/// </summary> | /// </summary> | ||||
/// <returns> | /// <returns> | ||||
@@ -11,9 +11,15 @@ namespace Discord.API | |||||
public Optional<InviteGuild> Guild { get; set; } | public Optional<InviteGuild> Guild { get; set; } | ||||
[JsonProperty("channel")] | [JsonProperty("channel")] | ||||
public InviteChannel Channel { get; set; } | public InviteChannel Channel { get; set; } | ||||
[JsonProperty("inviter")] | |||||
public Optional<User> Inviter { get; set; } | |||||
[JsonProperty("approximate_presence_count")] | [JsonProperty("approximate_presence_count")] | ||||
public Optional<int?> PresenceCount { get; set; } | public Optional<int?> PresenceCount { get; set; } | ||||
[JsonProperty("approximate_member_count")] | [JsonProperty("approximate_member_count")] | ||||
public Optional<int?> MemberCount { get; set; } | public Optional<int?> MemberCount { get; set; } | ||||
[JsonProperty("target_user")] | |||||
public Optional<User> TargetUser { get; set; } | |||||
[JsonProperty("target_user_type")] | |||||
public Optional<TargetUserType> TargetUserType { get; set; } | |||||
} | } | ||||
} | } |
@@ -6,19 +6,15 @@ namespace Discord.API | |||||
{ | { | ||||
internal class InviteMetadata : Invite | internal class InviteMetadata : Invite | ||||
{ | { | ||||
[JsonProperty("inviter")] | |||||
public User Inviter { get; set; } | |||||
[JsonProperty("uses")] | [JsonProperty("uses")] | ||||
public Optional<int> Uses { get; set; } | |||||
public int Uses { get; set; } | |||||
[JsonProperty("max_uses")] | [JsonProperty("max_uses")] | ||||
public Optional<int> MaxUses { get; set; } | |||||
public int MaxUses { get; set; } | |||||
[JsonProperty("max_age")] | [JsonProperty("max_age")] | ||||
public Optional<int> MaxAge { get; set; } | |||||
public int MaxAge { get; set; } | |||||
[JsonProperty("temporary")] | [JsonProperty("temporary")] | ||||
public bool Temporary { get; set; } | public bool Temporary { get; set; } | ||||
[JsonProperty("created_at")] | [JsonProperty("created_at")] | ||||
public Optional<DateTimeOffset> CreatedAt { get; set; } | |||||
[JsonProperty("revoked")] | |||||
public bool Revoked { get; set; } | |||||
public DateTimeOffset CreatedAt { get; set; } | |||||
} | } | ||||
} | } |
@@ -21,6 +21,12 @@ namespace Discord.Rest | |||||
public ulong ChannelId { get; private set; } | public ulong ChannelId { get; private set; } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public ulong? GuildId { get; private set; } | public ulong? GuildId { get; private set; } | ||||
/// <inheritdoc /> | |||||
public IUser Inviter { get; private set; } | |||||
/// <inheritdoc /> | |||||
public IUser TargetUser { get; private set; } | |||||
/// <inheritdoc /> | |||||
public TargetUserType TargetUserType { get; private set; } | |||||
internal IChannel Channel { get; } | internal IChannel Channel { get; } | ||||
internal IGuild Guild { get; } | internal IGuild Guild { get; } | ||||
@@ -50,6 +56,9 @@ namespace Discord.Rest | |||||
MemberCount = model.MemberCount.IsSpecified ? model.MemberCount.Value : null; | MemberCount = model.MemberCount.IsSpecified ? model.MemberCount.Value : null; | ||||
PresenceCount = model.PresenceCount.IsSpecified ? model.PresenceCount.Value : null; | PresenceCount = model.PresenceCount.IsSpecified ? model.PresenceCount.Value : null; | ||||
ChannelType = (ChannelType)model.Channel.Type; | ChannelType = (ChannelType)model.Channel.Type; | ||||
Inviter = model.Inviter.IsSpecified ? RestUser.Create(Discord, model.Inviter.Value) : null; | |||||
TargetUser = model.TargetUser.IsSpecified ? RestUser.Create(Discord, model.TargetUser.Value) : null; | |||||
TargetUserType = model.TargetUserType.IsSpecified ? model.TargetUserType.Value : TargetUserType.Undefined; | |||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
@@ -6,9 +6,10 @@ namespace Discord.Rest | |||||
/// <summary> Represents additional information regarding the REST-based invite object. </summary> | /// <summary> Represents additional information regarding the REST-based invite object. </summary> | ||||
public class RestInviteMetadata : RestInvite, IInviteMetadata | public class RestInviteMetadata : RestInvite, IInviteMetadata | ||||
{ | { | ||||
private long? _createdAtTicks; | |||||
private long _createdAtTicks; | |||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
[Obsolete("This property doesn't exist anymore and shouldn't be used.")] | |||||
public bool IsRevoked { get; private set; } | public bool IsRevoked { get; private set; } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public bool IsTemporary { get; private set; } | public bool IsTemporary { get; private set; } | ||||
@@ -18,10 +19,6 @@ namespace Discord.Rest | |||||
public int? MaxUses { get; private set; } | public int? MaxUses { get; private set; } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public int? Uses { get; private set; } | public int? Uses { get; private set; } | ||||
/// <summary> | |||||
/// Gets the user that created this invite. | |||||
/// </summary> | |||||
public RestUser Inviter { get; private set; } | |||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public DateTimeOffset? CreatedAt => DateTimeUtils.FromTicks(_createdAtTicks); | public DateTimeOffset? CreatedAt => DateTimeUtils.FromTicks(_createdAtTicks); | ||||
@@ -39,16 +36,11 @@ namespace Discord.Rest | |||||
internal void Update(Model model) | internal void Update(Model model) | ||||
{ | { | ||||
base.Update(model); | base.Update(model); | ||||
Inviter = model.Inviter != null ? RestUser.Create(Discord, model.Inviter) : null; | |||||
IsRevoked = model.Revoked; | |||||
IsTemporary = model.Temporary; | IsTemporary = model.Temporary; | ||||
MaxAge = model.MaxAge.IsSpecified ? model.MaxAge.Value : (int?)null; | |||||
MaxUses = model.MaxUses.IsSpecified ? model.MaxUses.Value : (int?)null; | |||||
Uses = model.Uses.IsSpecified ? model.Uses.Value : (int?)null; | |||||
_createdAtTicks = model.CreatedAt.IsSpecified ? model.CreatedAt.Value.UtcTicks : (long?)null; | |||||
MaxAge = model.MaxAge; | |||||
MaxUses = model.MaxUses; | |||||
Uses = model.Uses; | |||||
_createdAtTicks = model.CreatedAt.UtcTicks; | |||||
} | } | ||||
/// <inheritdoc /> | |||||
IUser IInviteMetadata.Inviter => Inviter; | |||||
} | } | ||||
} | } |
@@ -49,6 +49,7 @@ namespace Discord.WebSocket | |||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
int? IInvite.MemberCount => throw new NotImplementedException(); | int? IInvite.MemberCount => throw new NotImplementedException(); | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
[Obsolete("This property doesn't exist anymore and shouldn't be used.")] | |||||
bool IInviteMetadata.IsRevoked => throw new NotImplementedException(); | bool IInviteMetadata.IsRevoked => throw new NotImplementedException(); | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public bool IsTemporary { get; private set; } | public bool IsTemporary { get; private set; } | ||||
@@ -138,6 +139,8 @@ namespace Discord.WebSocket | |||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
IChannel IInvite.Channel => Channel; | IChannel IInvite.Channel => Channel; | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
IUser IInviteMetadata.Inviter => Inviter; | |||||
IUser IInvite.Inviter => Inviter; | |||||
/// <inheritdoc /> | |||||
IUser IInvite.TargetUser => TargetUser; | |||||
} | } | ||||
} | } |