diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-11-24 20:31:34 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-11-24 20:31:34 -0500 |
commit | 069c22e9cd37158fa50e3fac67d4d6938d173554 (patch) | |
tree | a6237bcf5f068d4c5f752cd8c5f46a343823c834 | |
parent | 8f30bb33a3d79a7207809b35d4a39751e4d53123 (diff) | |
download | abaddon-portaudio-069c22e9cd37158fa50e3fac67d4d6938d173554.tar.gz abaddon-portaudio-069c22e9cd37158fa50e3fac67d4d6938d173554.zip |
add fetching private archived threads
-rw-r--r-- | src/discord/discord.cpp | 13 | ||||
-rw-r--r-- | src/discord/discord.hpp | 1 | ||||
-rw-r--r-- | src/windows/threadswindow.cpp | 5 | ||||
-rw-r--r-- | src/windows/threadswindow.hpp | 2 |
4 files changed, 18 insertions, 3 deletions
diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp index f920099..a90fc50 100644 --- a/src/discord/discord.cpp +++ b/src/discord/discord.cpp @@ -292,6 +292,19 @@ void DiscordClient::GetArchivedPublicThreads(Snowflake channel_id, sigc::slot<vo }); } +void DiscordClient::GetArchivedPrivateThreads(Snowflake channel_id, sigc::slot<void(DiscordError, const ArchivedThreadsResponseData &)> callback) { + m_http.MakeGET("/channels/" + std::to_string(channel_id) + "/users/@me/threads/archived/private", [this, callback](const http::response_type &r) { + if (CheckCode(r)) { + const auto data = nlohmann::json::parse(r.text).get<ArchivedThreadsResponseData>(); + for (const auto &thread : data.Threads) + m_store.SetChannel(thread.ID, thread); + callback(DiscordError::NONE, data); + } else { + callback(GetCodeFromResponse(r), {}); + } + }); +} + bool DiscordClient::IsThreadJoined(Snowflake thread_id) const { return std::find(m_joined_threads.begin(), m_joined_threads.end(), thread_id) != m_joined_threads.end(); } diff --git a/src/discord/discord.hpp b/src/discord/discord.hpp index 4b9bc82..4010977 100644 --- a/src/discord/discord.hpp +++ b/src/discord/discord.hpp @@ -81,6 +81,7 @@ public: std::vector<Snowflake> GetUsersInThread(Snowflake id) const; std::vector<ChannelData> GetActiveThreads(Snowflake channel_id) const; void GetArchivedPublicThreads(Snowflake channel_id, sigc::slot<void(DiscordError, const ArchivedThreadsResponseData &)> callback); + void GetArchivedPrivateThreads(Snowflake channel_id, sigc::slot<void(DiscordError, const ArchivedThreadsResponseData &)> callback); bool IsThreadJoined(Snowflake thread_id) const; bool HasGuildPermission(Snowflake user_id, Snowflake guild_id, Permission perm) const; diff --git a/src/windows/threadswindow.cpp b/src/windows/threadswindow.cpp index 9071d81..c18819b 100644 --- a/src/windows/threadswindow.cpp +++ b/src/windows/threadswindow.cpp @@ -129,14 +129,15 @@ ArchivedThreadsList::ArchivedThreadsList(const ChannelData &channel, const Gtk:: return false; }); - Abaddon::Get().GetDiscordClient().GetArchivedPublicThreads(channel.ID, sigc::mem_fun(*this, &ArchivedThreadsList::OnPublicFetched)); + Abaddon::Get().GetDiscordClient().GetArchivedPublicThreads(channel.ID, sigc::mem_fun(*this, &ArchivedThreadsList::OnThreadsFetched)); + Abaddon::Get().GetDiscordClient().GetArchivedPrivateThreads(channel.ID, sigc::mem_fun(*this, &ArchivedThreadsList::OnThreadsFetched)); } void ArchivedThreadsList::InvalidateFilter() { m_list.invalidate_filter(); } -void ArchivedThreadsList::OnPublicFetched(DiscordError code, const ArchivedThreadsResponseData &data) { +void ArchivedThreadsList::OnThreadsFetched(DiscordError code, const ArchivedThreadsResponseData &data) { for (const auto &thread : data.Threads) { auto row = Gtk::manage(new ThreadListRow(thread)); row->show(); diff --git a/src/windows/threadswindow.hpp b/src/windows/threadswindow.hpp index 0e42414..ebcbd13 100644 --- a/src/windows/threadswindow.hpp +++ b/src/windows/threadswindow.hpp @@ -27,7 +27,7 @@ public: private: Gtk::ListBox m_list; - void OnPublicFetched(DiscordError code, const ArchivedThreadsResponseData &data); + void OnThreadsFetched(DiscordError code, const ArchivedThreadsResponseData &data); using type_signal_thread_open = sigc::signal<void, Snowflake>; type_signal_thread_open m_signal_thread_open; |