From 3f68aa16e6e0dbf105a259ef786938feb9628849 Mon Sep 17 00:00:00 2001 From: Misha133 Date: Fri, 9 Dec 2022 21:22:28 +0300 Subject: [PATCH] add default forum layout support --- .../Channels/ForumChannelProperties.cs | 5 +++++ .../Entities/Channels/ForumLayout.cs | 22 +++++++++++++++++++ .../Entities/Channels/IForumChannel.cs | 7 +++++- src/Discord.Net.Rest/API/Common/Channel.cs | 3 +++ .../API/Rest/ModifyForumChannelParams.cs | 3 +++ .../Entities/Channels/RestForumChannel.cs | 4 ++++ .../Entities/Channels/SocketForumChannel.cs | 5 +++++ 7 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/Discord.Net.Core/Entities/Channels/ForumLayout.cs diff --git a/src/Discord.Net.Core/Entities/Channels/ForumChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/ForumChannelProperties.cs index e1a123b37..26b985b81 100644 --- a/src/Discord.Net.Core/Entities/Channels/ForumChannelProperties.cs +++ b/src/Discord.Net.Core/Entities/Channels/ForumChannelProperties.cs @@ -57,4 +57,9 @@ public class ForumChannelProperties : TextChannelProperties /// Gets or sets the rule used to order posts in forum channels. /// public Optional DefaultSortOrder { get; set; } + + /// + /// Gets or sets the rule used to display posts in a forum channel. + /// + public Optional DefaultLayout { get; set; } } diff --git a/src/Discord.Net.Core/Entities/Channels/ForumLayout.cs b/src/Discord.Net.Core/Entities/Channels/ForumLayout.cs new file mode 100644 index 000000000..d20a10596 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/ForumLayout.cs @@ -0,0 +1,22 @@ +namespace Discord; + +/// +/// Represents the layout type used to display posts in a forum channel. +/// +public enum ForumLayout +{ + /// + /// A preferred forum layout hasn't been set by a server admin + /// + Default = 0, + + /// + /// List View: display forum posts in a text-focused list + /// + List = 1, + + /// + /// Gallery View: display forum posts in a media-focused gallery + /// + Grid = 2 +} diff --git a/src/Discord.Net.Core/Entities/Channels/IForumChannel.cs b/src/Discord.Net.Core/Entities/Channels/IForumChannel.cs index 55521bade..09fb0fb7e 100644 --- a/src/Discord.Net.Core/Entities/Channels/IForumChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IForumChannel.cs @@ -63,13 +63,18 @@ namespace Discord IEmote DefaultReactionEmoji { get; } /// - /// Gets or sets the rule used to order posts in forum channels. + /// Gets the rule used to order posts in forum channels. /// /// /// Defaults to null, which indicates a preferred sort order hasn't been set /// ForumSortOrder? DefaultSortOrder { get; } + /// + /// Gets the rule used to display posts in a forum channel. + /// + ForumLayout DefaultLayout { get; } + /// /// Modifies this forum channel. /// diff --git a/src/Discord.Net.Rest/API/Common/Channel.cs b/src/Discord.Net.Rest/API/Common/Channel.cs index f9184cd1f..b8bfe1ea5 100644 --- a/src/Discord.Net.Rest/API/Common/Channel.cs +++ b/src/Discord.Net.Rest/API/Common/Channel.cs @@ -89,5 +89,8 @@ namespace Discord.API [JsonProperty("default_reaction_emoji")] public Optional DefaultReactionEmoji { get; set; } + [JsonProperty("default_forum_layout")] + public Optional DefaultForumLayout { get; set; } + } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyForumChannelParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyForumChannelParams.cs index d8733a2bd..ba5da8a3b 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyForumChannelParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyForumChannelParams.cs @@ -20,4 +20,7 @@ internal class ModifyForumChannelParams : ModifyTextChannelParams [JsonProperty("default_sort_order")] public Optional DefaultSortOrder { get; set; } + + [JsonProperty("default_forum_layout")] + public Optional DefaultLayout { get; set; } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs index 5ec81a7fc..1d9addb8e 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs @@ -41,6 +41,9 @@ namespace Discord.Rest /// public ForumSortOrder? DefaultSortOrder { get; private set; } + /// + public ForumLayout DefaultLayout { get; private set; } + /// public string Mention => MentionUtils.MentionChannel(Id); @@ -87,6 +90,7 @@ namespace Discord.Rest } CategoryId = model.CategoryId.GetValueOrDefault(); + DefaultLayout= model.DefaultForumLayout.GetValueOrDefault(); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketForumChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketForumChannel.cs index 9d46bc2aa..9976e5666 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketForumChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketForumChannel.cs @@ -45,6 +45,9 @@ namespace Discord.WebSocket /// public ForumSortOrder? DefaultSortOrder { get; private set; } + /// + public ForumLayout DefaultLayout { get; private set; } + /// /// Gets the parent (category) of this channel in the guild's channel list. /// @@ -93,6 +96,8 @@ namespace Discord.WebSocket } CategoryId = model.CategoryId.GetValueOrDefault(); + + DefaultLayout = model.DefaultForumLayout.GetValueOrDefault(); } ///