summaryrefslogtreecommitdiff
path: root/src/discord
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2023-02-01 23:49:48 -0500
committerouwou <26526779+ouwou@users.noreply.github.com>2023-02-01 23:49:48 -0500
commitecc83036c1522a024e1f5a1efc6fe533b907daf1 (patch)
treeceb75059aec90e01a314e59851beefffa733cdb0 /src/discord
parent5a6f8cac09770d315fe4a3258fa6116e65750f24 (diff)
parent3ed51eb155444859c3aa00119857b602066c9c10 (diff)
downloadabaddon-portaudio-ecc83036c1522a024e1f5a1efc6fe533b907daf1.tar.gz
abaddon-portaudio-ecc83036c1522a024e1f5a1efc6fe533b907daf1.zip
Merge branch 'master' into pch
Diffstat (limited to 'src/discord')
-rw-r--r--src/discord/discord.cpp19
-rw-r--r--src/discord/discord.hpp5
-rw-r--r--src/discord/usersettings.hpp7
3 files changed, 28 insertions, 3 deletions
diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp
index c1b32d9..cd5e2b3 100644
--- a/src/discord/discord.cpp
+++ b/src/discord/discord.cpp
@@ -1200,6 +1200,10 @@ void DiscordClient::SetUserAgent(const std::string &agent) {
m_websocket.SetUserAgent(agent);
}
+void DiscordClient::SetDumpReady(bool dump) {
+ m_dump_ready = dump;
+}
+
bool DiscordClient::IsChannelMuted(Snowflake id) const noexcept {
return m_muted_channels.find(id) != m_muted_channels.end();
}
@@ -1562,6 +1566,17 @@ void DiscordClient::ProcessNewGuild(GuildData &guild) {
void DiscordClient::HandleGatewayReady(const GatewayMessage &msg) {
m_ready_received = true;
+
+ if (m_dump_ready) {
+ const auto name = "./payload_ready-" + Glib::DateTime::create_now_utc().format("%Y-%m-%d_%H-%M-%S") + ".json";
+ auto *fp = std::fopen(name.c_str(), "wb");
+ if (fp != nullptr) {
+ const auto contents = msg.Data.dump(4);
+ std::fwrite(contents.data(), contents.size(), 1, fp);
+ std::fclose(fp);
+ }
+ }
+
ReadyEventData data = msg.Data;
for (auto &g : data.Guilds)
ProcessNewGuild(g);
@@ -2273,6 +2288,10 @@ std::set<Snowflake> DiscordClient::GetPrivateChannels() const {
return {};
}
+const UserSettings &DiscordClient::GetUserSettings() const {
+ return m_user_settings;
+}
+
EPremiumType DiscordClient::GetSelfPremiumType() const {
const auto &data = GetUserData();
if (data.PremiumType.has_value())
diff --git a/src/discord/discord.hpp b/src/discord/discord.hpp
index c2bea7d..6f90659 100644
--- a/src/discord/discord.hpp
+++ b/src/discord/discord.hpp
@@ -60,6 +60,7 @@ public:
std::vector<Message> GetMessagesForChannel(Snowflake id, size_t limit = 50) const;
std::vector<Message> GetMessagesBefore(Snowflake channel_id, Snowflake message_id, size_t limit = 50) const;
std::set<Snowflake> GetPrivateChannels() const;
+ const UserSettings &GetUserSettings() const;
EPremiumType GetSelfPremiumType() const;
@@ -211,6 +212,8 @@ public:
void UpdateToken(const std::string &token);
void SetUserAgent(const std::string &agent);
+ void SetDumpReady(bool dump);
+
bool IsChannelMuted(Snowflake id) const noexcept;
bool IsGuildMuted(Snowflake id) const noexcept;
int GetUnreadStateForChannel(Snowflake id) const noexcept;
@@ -229,6 +232,8 @@ private:
std::vector<uint8_t> m_decompress_buf;
z_stream m_zstream;
+ bool m_dump_ready = false;
+
static std::string GetAPIURL();
static std::string GetGatewayURL();
diff --git a/src/discord/usersettings.hpp b/src/discord/usersettings.hpp
index 2631c45..513390b 100644
--- a/src/discord/usersettings.hpp
+++ b/src/discord/usersettings.hpp
@@ -1,13 +1,14 @@
#pragma once
#include "json.hpp"
#include "snowflake.hpp"
+#include <optional>
#include <string>
struct UserSettingsGuildFoldersEntry {
- int Color = -1; // null
+ std::optional<int> Color;
std::vector<Snowflake> GuildIDs;
- Snowflake ID; // null (this can be a snowflake as a string or an int that isnt a snowflake lol)
- std::string Name; // null
+ std::optional<Snowflake> ID; // (this can be a snowflake as a string or an int that isnt a snowflake lol)
+ std::optional<std::string> Name;
friend void from_json(const nlohmann::json &j, UserSettingsGuildFoldersEntry &m);
};