summaryrefslogtreecommitdiff
path: root/discord
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-08-28 02:28:41 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2021-08-28 02:28:41 -0400
commit8ed2cd65b6b49ad6bd4d91c0de71b4be863456b2 (patch)
treea964f4fce906537e3ce9d1247b3d8f681e8d65c5 /discord
parent3977159415fe8162f4dc68a4d16fc999af927b58 (diff)
downloadabaddon-portaudio-8ed2cd65b6b49ad6bd4d91c0de71b4be863456b2.tar.gz
abaddon-portaudio-8ed2cd65b6b49ad6bd4d91c0de71b4be863456b2.zip
archive/unarchive from channel list
Diffstat (limited to 'discord')
-rw-r--r--discord/discord.cpp24
-rw-r--r--discord/discord.hpp2
-rw-r--r--discord/objects.cpp5
-rw-r--r--discord/objects.hpp7
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);
+};