diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-08-28 02:28:41 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-08-28 02:28:41 -0400 |
commit | 8ed2cd65b6b49ad6bd4d91c0de71b4be863456b2 (patch) | |
tree | a964f4fce906537e3ce9d1247b3d8f681e8d65c5 /discord | |
parent | 3977159415fe8162f4dc68a4d16fc999af927b58 (diff) | |
download | abaddon-portaudio-8ed2cd65b6b49ad6bd4d91c0de71b4be863456b2.tar.gz abaddon-portaudio-8ed2cd65b6b49ad6bd4d91c0de71b4be863456b2.zip |
archive/unarchive from channel list
Diffstat (limited to 'discord')
-rw-r--r-- | discord/discord.cpp | 24 | ||||
-rw-r--r-- | discord/discord.hpp | 2 | ||||
-rw-r--r-- | discord/objects.cpp | 5 | ||||
-rw-r--r-- | discord/objects.hpp | 7 |
4 files changed, 38 insertions, 0 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp index d30e57d..445cb65 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -824,6 +824,30 @@ void DiscordClient::LeaveThread(Snowflake channel_id, const std::string &locatio }); } +void DiscordClient::ArchiveThread(Snowflake channel_id, sigc::slot<void(DiscordError code)> callback) { + ModifyChannelObject obj; + obj.Archived = true; + obj.Locked = true; + m_http.MakePATCH("/channels/" + std::to_string(channel_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); + }); +} + +void DiscordClient::UnArchiveThread(Snowflake channel_id, sigc::slot<void(DiscordError code)> callback) { + ModifyChannelObject obj; + obj.Archived = false; + obj.Locked = false; + m_http.MakePATCH("/channels/" + std::to_string(channel_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); + }); +} + void DiscordClient::FetchPinned(Snowflake id, sigc::slot<void(std::vector<Message>, DiscordError code)> callback) { // return from db if we know the pins have already been requested if (m_channels_pinned_requested.find(id) != m_channels_pinned_requested.end()) { diff --git a/discord/discord.hpp b/discord/discord.hpp index f80d264..4c3b365 100644 --- a/discord/discord.hpp +++ b/discord/discord.hpp @@ -143,6 +143,8 @@ public: void Pin(Snowflake channel_id, Snowflake message_id, sigc::slot<void(DiscordError code)> callback); void Unpin(Snowflake channel_id, Snowflake message_id, sigc::slot<void(DiscordError code)> callback); void LeaveThread(Snowflake channel_id, const std::string &location, sigc::slot<void(DiscordError code)> callback); + void ArchiveThread(Snowflake channel_id, sigc::slot<void(DiscordError code)> callback); + void UnArchiveThread(Snowflake channel_id, sigc::slot<void(DiscordError code)> callback); bool CanModifyRole(Snowflake guild_id, Snowflake role_id) const; bool CanModifyRole(Snowflake guild_id, Snowflake role_id, Snowflake user_id) const; diff --git a/discord/objects.cpp b/discord/objects.cpp index 725cba5..c6de2ce 100644 --- a/discord/objects.cpp +++ b/discord/objects.cpp @@ -527,3 +527,8 @@ void from_json(const nlohmann::json &j, ThreadMemberListUpdateData &m) { JS_D("guild_id", m.GuildID); JS_D("members", m.Members); } + +void to_json(nlohmann::json &j, const ModifyChannelObject &m) { + JS_IF("archived", m.Archived); + JS_IF("locked", m.Locked); +} diff --git a/discord/objects.hpp b/discord/objects.hpp index 4613a85..7084efb 100644 --- a/discord/objects.hpp +++ b/discord/objects.hpp @@ -738,3 +738,10 @@ struct ThreadMemberListUpdateData { friend void from_json(const nlohmann::json &j, ThreadMemberListUpdateData &m); }; + +struct ModifyChannelObject { + std::optional<bool> Archived; + std::optional<bool> Locked; + + friend void to_json(nlohmann::json &j, const ModifyChannelObject &m); +}; |