diff options
-rw-r--r-- | abaddon.cpp | 8 | ||||
-rw-r--r-- | components/friendslist.cpp | 12 | ||||
-rw-r--r-- | discord/discord.cpp | 118 | ||||
-rw-r--r-- | discord/discord.hpp | 43 | ||||
-rw-r--r-- | windows/guildsettings/banspane.cpp | 4 | ||||
-rw-r--r-- | windows/guildsettings/emojispane.cpp | 8 | ||||
-rw-r--r-- | windows/guildsettings/infopane.cpp | 8 | ||||
-rw-r--r-- | windows/guildsettings/invitespane.cpp | 4 | ||||
-rw-r--r-- | windows/guildsettings/memberspane.cpp | 2 | ||||
-rw-r--r-- | windows/guildsettings/rolespane.cpp | 14 | ||||
-rw-r--r-- | windows/profile/userinfopane.cpp | 4 |
11 files changed, 129 insertions, 96 deletions
diff --git a/abaddon.cpp b/abaddon.cpp index eea2840..4e900dc 100644 --- a/abaddon.cpp +++ b/abaddon.cpp @@ -326,8 +326,8 @@ void Abaddon::ShowUserMenu(const GdkEvent *event, Snowflake id, Snowflake guild_ void Abaddon::ShowGuildVerificationGateDialog(Snowflake guild_id) { VerificationGateDialog dlg(*m_main_window, guild_id); if (dlg.run() == Gtk::RESPONSE_OK) { - const auto cb = [this](bool success) { - if (!success) { + const auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg(*m_main_window, "Failed to accept the verification gate.", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); @@ -411,8 +411,8 @@ void Abaddon::on_user_menu_open_dm() { if (existing.has_value()) ActionChannelOpened(*existing); else - m_discord.CreateDM(m_shown_user_menu_id, [this](bool success, Snowflake channel_id) { - if (success) { + m_discord.CreateDM(m_shown_user_menu_id, [this](DiscordError code, Snowflake channel_id) { + if (code == DiscordError::NONE) { // give the gateway a little window to send CHANNEL_CREATE auto cb = [this, channel_id] { ActionChannelOpened(channel_id); diff --git a/components/friendslist.cpp b/components/friendslist.cpp index f31cc00..6541b0c 100644 --- a/components/friendslist.cpp +++ b/components/friendslist.cpp @@ -101,8 +101,8 @@ void FriendsList::OnRelationshipRemove(Snowflake id, RelationshipType type) { } void FriendsList::OnActionAccept(Snowflake id) { - const auto cb = [this](bool success, DiscordError code) { - if (!success) { + const auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg(*dynamic_cast<Gtk::Window *>(get_toplevel()), "Failed to accept", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); @@ -133,8 +133,8 @@ void FriendsList::OnActionRemove(Snowflake id) { break; } if (Abaddon::Get().ShowConfirm(str, window)) { - const auto cb = [this, window](bool success) { - if (success) return; + const auto cb = [this, window](DiscordError code) { + if (code == DiscordError::NONE) return; Gtk::MessageDialog dlg(*window, "Failed to remove user", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); @@ -221,9 +221,9 @@ void FriendsListAddComponent::Submit() { m_requesting = true; m_label.set_text("Hang on..."); - const auto cb = [this](bool success, DiscordError code) { + const auto cb = [this](DiscordError code) { m_requesting = false; - if (success) { + if (code == DiscordError::NONE) { m_label.set_text("Success!"); } else { m_label.set_text("Failed: "s + GetDiscordErrorDisplayString(code)); diff --git a/discord/discord.cpp b/discord/discord.cpp index 3641cb5..78036ad 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -474,16 +474,16 @@ void DiscordClient::CreateDM(Snowflake user_id) { CreateDM(user_id, [](...) {}); } -void DiscordClient::CreateDM(Snowflake user_id, sigc::slot<void(bool success, Snowflake channel_id)> callback) { +void DiscordClient::CreateDM(Snowflake user_id, sigc::slot<void(DiscordError code, Snowflake channel_id)> callback) { CreateDMObject obj; obj.Recipients.push_back(user_id); m_http.MakePOST("/users/@me/channels", nlohmann::json(obj).dump(), [this, callback](const http::response &response) { if (!CheckCode(response)) { - callback(false, Snowflake::Invalid); + callback(DiscordError::NONE, Snowflake::Invalid); return; } auto channel = nlohmann::json::parse(response.text).get<ChannelData>(); - callback(response.status_code == 200, channel.ID); + callback(GetCodeFromResponse(response), channel.ID); }); } @@ -537,12 +537,14 @@ void DiscordClient::SetGuildName(Snowflake id, const Glib::ustring &name) { SetGuildName(id, name, [](auto) {}); } -void DiscordClient::SetGuildName(Snowflake id, const Glib::ustring &name, sigc::slot<void(bool success)> callback) { +void DiscordClient::SetGuildName(Snowflake id, const Glib::ustring &name, sigc::slot<void(DiscordError code)> callback) { ModifyGuildObject obj; obj.Name = name; m_http.MakePATCH("/guilds/" + std::to_string(id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &r) { - const auto success = r.status_code == 200; - callback(success); + if (CheckCode(r)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(r)); }); } @@ -550,12 +552,14 @@ void DiscordClient::SetGuildIcon(Snowflake id, const std::string &data) { SetGuildIcon(id, data, [](auto) {}); } -void DiscordClient::SetGuildIcon(Snowflake id, const std::string &data, sigc::slot<void(bool success)> callback) { +void DiscordClient::SetGuildIcon(Snowflake id, const std::string &data, sigc::slot<void(DiscordError code)> callback) { ModifyGuildObject obj; obj.IconData = data; m_http.MakePATCH("/guilds/" + std::to_string(id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &r) { - const auto success = r.status_code == 200; - callback(success); + if (CheckCode(r)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(r)); }); } @@ -563,9 +567,12 @@ void DiscordClient::UnbanUser(Snowflake guild_id, Snowflake user_id) { UnbanUser(guild_id, user_id, [](const auto) {}); } -void DiscordClient::UnbanUser(Snowflake guild_id, Snowflake user_id, sigc::slot<void(bool success)> callback) { +void DiscordClient::UnbanUser(Snowflake guild_id, Snowflake user_id, sigc::slot<void(DiscordError code)> callback) { m_http.MakeDELETE("/guilds/" + std::to_string(guild_id) + "/bans/" + std::to_string(user_id), [this, callback](const http::response_type &response) { - callback(response.status_code == 204); + if (CheckCode(response, 204)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } @@ -573,9 +580,12 @@ void DiscordClient::DeleteInvite(const std::string &code) { DeleteInvite(code, [](const auto) {}); } -void DiscordClient::DeleteInvite(const std::string &code, sigc::slot<void(bool success)> callback) { +void DiscordClient::DeleteInvite(const std::string &code, sigc::slot<void(DiscordError code)> callback) { m_http.MakeDELETE("/invites/" + code, [this, callback](const http::response_type &response) { - callback(CheckCode(response)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } @@ -591,31 +601,40 @@ void DiscordClient::RemoveGroupDMRecipient(Snowflake channel_id, Snowflake user_ }); } -void DiscordClient::ModifyRolePermissions(Snowflake guild_id, Snowflake role_id, Permission permissions, sigc::slot<void(bool success)> callback) { +void DiscordClient::ModifyRolePermissions(Snowflake guild_id, Snowflake role_id, Permission permissions, sigc::slot<void(DiscordError code)> callback) { ModifyGuildRoleObject obj; obj.Permissions = permissions; m_http.MakePATCH("/guilds/" + std::to_string(guild_id) + "/roles/" + std::to_string(role_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { - callback(CheckCode(response)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } -void DiscordClient::ModifyRoleName(Snowflake guild_id, Snowflake role_id, const Glib::ustring &name, sigc::slot<void(bool success)> callback) { +void DiscordClient::ModifyRoleName(Snowflake guild_id, Snowflake role_id, const Glib::ustring &name, sigc::slot<void(DiscordError code)> callback) { ModifyGuildRoleObject obj; obj.Name = name; m_http.MakePATCH("/guilds/" + std::to_string(guild_id) + "/roles/" + std::to_string(role_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { - callback(CheckCode(response)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } -void DiscordClient::ModifyRoleColor(Snowflake guild_id, Snowflake role_id, uint32_t color, sigc::slot<void(bool success)> callback) { +void DiscordClient::ModifyRoleColor(Snowflake guild_id, Snowflake role_id, uint32_t color, sigc::slot<void(DiscordError code)> callback) { ModifyGuildRoleObject obj; obj.Color = color; m_http.MakePATCH("/guilds/" + std::to_string(guild_id) + "/roles/" + std::to_string(role_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { - callback(CheckCode(response)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } -void DiscordClient::ModifyRoleColor(Snowflake guild_id, Snowflake role_id, Gdk::RGBA color, sigc::slot<void(bool success)> callback) { +void DiscordClient::ModifyRoleColor(Snowflake guild_id, Snowflake role_id, Gdk::RGBA color, sigc::slot<void(DiscordError code)> callback) { uint32_t int_color = 0; int_color |= static_cast<uint32_t>(color.get_blue() * 255.0) << 0; int_color |= static_cast<uint32_t>(color.get_green() * 255.0) << 8; @@ -623,7 +642,7 @@ void DiscordClient::ModifyRoleColor(Snowflake guild_id, Snowflake role_id, Gdk:: ModifyRoleColor(guild_id, role_id, int_color, callback); } -void DiscordClient::ModifyRolePosition(Snowflake guild_id, Snowflake role_id, int position, sigc::slot<void(bool success)> callback) { +void DiscordClient::ModifyRolePosition(Snowflake guild_id, Snowflake role_id, int position, sigc::slot<void(DiscordError code)> callback) { const auto roles = GetGuild(guild_id)->FetchRoles(); if (position > roles.size()) return; // gay and makes you send every role in between new and old position @@ -658,22 +677,31 @@ void DiscordClient::ModifyRolePosition(Snowflake guild_id, Snowflake role_id, in obj.Positions.push_back({ roles[i].ID, roles[i].Position + dir }); m_http.MakePATCH("/guilds/" + std::to_string(guild_id) + "/roles", nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { - callback(CheckCode(response)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } -void DiscordClient::ModifyEmojiName(Snowflake guild_id, Snowflake emoji_id, const Glib::ustring &name, sigc::slot<void(bool success)> callback) { +void DiscordClient::ModifyEmojiName(Snowflake guild_id, Snowflake emoji_id, const Glib::ustring &name, sigc::slot<void(DiscordError code)> callback) { ModifyGuildEmojiObject obj; obj.Name = name; m_http.MakePATCH("/guilds/" + std::to_string(guild_id) + "/emojis/" + std::to_string(emoji_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { - callback(CheckCode(response)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } -void DiscordClient::DeleteEmoji(Snowflake guild_id, Snowflake emoji_id, sigc::slot<void(bool success)> callback) { +void DiscordClient::DeleteEmoji(Snowflake guild_id, Snowflake emoji_id, sigc::slot<void(DiscordError code)> callback) { m_http.MakeDELETE("/guilds/" + std::to_string(guild_id) + "/emojis/" + std::to_string(emoji_id), [this, callback](const http::response_type &response) { - callback(CheckCode(response, 204)); + if (CheckCode(response, 204)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } @@ -683,30 +711,33 @@ std::optional<GuildApplicationData> DiscordClient::GetGuildApplication(Snowflake return it->second; } -void DiscordClient::RemoveRelationship(Snowflake id, sigc::slot<void(bool success)> callback) { +void DiscordClient::RemoveRelationship(Snowflake id, sigc::slot<void(DiscordError Code)> callback) { m_http.MakeDELETE("/users/@me/relationships/" + std::to_string(id), [this, callback](const http::response_type &response) { - callback(CheckCode(response)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } -void DiscordClient::SendFriendRequest(const Glib::ustring &username, int discriminator, sigc::slot<void(bool success, DiscordError code)> callback) { +void DiscordClient::SendFriendRequest(const Glib::ustring &username, int discriminator, sigc::slot<void(DiscordError code)> callback) { FriendRequestObject obj; obj.Username = username; obj.Discriminator = discriminator; m_http.MakePOST("/users/@me/relationships", nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { if (CheckCode(response, 204)) - callback(true, DiscordError::NONE); + callback(DiscordError::NONE); else - callback(false, GetCodeFromResponse(response)); + callback(GetCodeFromResponse(response)); }); } -void DiscordClient::PutRelationship(Snowflake id, sigc::slot<void(bool success, DiscordError code)> callback) { +void DiscordClient::PutRelationship(Snowflake id, sigc::slot<void(DiscordError code)> callback) { m_http.MakePUT("/users/@me/relationships/" + std::to_string(id), "{}", [this, callback](const http::response_type &response) { if (CheckCode(response, 204)) - callback(true, DiscordError::NONE); + callback(DiscordError::NONE); else - callback(false, GetCodeFromResponse(response)); + callback(GetCodeFromResponse(response)); }); } @@ -854,11 +885,14 @@ void DiscordClient::SetUserNote(Snowflake user_id, std::string note) { SetUserNote(user_id, note, [](auto) {}); } -void DiscordClient::SetUserNote(Snowflake user_id, std::string note, sigc::slot<void(bool success)> callback) { +void DiscordClient::SetUserNote(Snowflake user_id, std::string note, sigc::slot<void(DiscordError code)> callback) { UserSetNoteObject obj; obj.Note = note; m_http.MakePUT("/users/@me/notes/" + std::to_string(user_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { - callback(response.status_code == 204); + if (CheckCode(response, 204)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } @@ -887,12 +921,15 @@ void DiscordClient::GetVerificationGateInfo(Snowflake guild_id, sigc::slot<void( }); } -void DiscordClient::AcceptVerificationGate(Snowflake guild_id, VerificationGateInfoObject info, sigc::slot<void(bool success)> callback) { +void DiscordClient::AcceptVerificationGate(Snowflake guild_id, VerificationGateInfoObject info, sigc::slot<void(DiscordError code)> callback) { if (info.VerificationFields.has_value()) for (auto &field : *info.VerificationFields) field.Response = true; m_http.MakePUT("/guilds/" + std::to_string(guild_id) + "/requests/@me", nlohmann::json(info).dump(), [this, callback](const http::response_type &response) { - callback(CheckCode(response)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } @@ -1191,11 +1228,6 @@ void DiscordClient::ProcessNewGuild(GuildData &guild) { } void DiscordClient::HandleGatewayReady(const GatewayMessage &msg) { - auto fp = std::fopen("ready.json", "w"); - auto cum = msg.Data.dump(4); - std::fwrite(cum.c_str(), 1, cum.size(), fp); - std::fclose(fp); - m_ready_received = true; ReadyEventData data = msg.Data; for (auto &g : data.Guilds) diff --git a/discord/discord.hpp b/discord/discord.hpp index adfef93..cfce016 100644 --- a/discord/discord.hpp +++ b/discord/discord.hpp @@ -14,12 +14,10 @@ #include <glibmm.h> #include <queue> -// bruh #ifdef GetMessage #undef GetMessage #endif -// https://stackoverflow.com/questions/29775153/stopping-long-sleep-threads/29775639#29775639 class HeartbeatWaiter { public: template<class R, class P> @@ -112,32 +110,32 @@ public: void UpdateStatus(PresenceStatus status, bool is_afk); void UpdateStatus(PresenceStatus status, bool is_afk, const ActivityData &obj); void CreateDM(Snowflake user_id); - void CreateDM(Snowflake user_id, sigc::slot<void(bool success, Snowflake channel_id)> callback); + void CreateDM(Snowflake user_id, sigc::slot<void(DiscordError code, Snowflake channel_id)> callback); void CloseDM(Snowflake channel_id); std::optional<Snowflake> FindDM(Snowflake user_id); // wont find group dms void AddReaction(Snowflake id, Glib::ustring param); void RemoveReaction(Snowflake id, Glib::ustring param); void SetGuildName(Snowflake id, const Glib::ustring &name); - void SetGuildName(Snowflake id, const Glib::ustring &name, sigc::slot<void(bool success)> callback); + void SetGuildName(Snowflake id, const Glib::ustring &name, sigc::slot<void(DiscordError code)> callback); void SetGuildIcon(Snowflake id, const std::string &data); - void SetGuildIcon(Snowflake id, const std::string &data, sigc::slot<void(bool success)> callback); + void SetGuildIcon(Snowflake id, const std::string &data, sigc::slot<void(DiscordError code)> callback); void UnbanUser(Snowflake guild_id, Snowflake user_id); - void UnbanUser(Snowflake guild_id, Snowflake user_id, sigc::slot<void(bool success)> callback); + void UnbanUser(Snowflake guild_id, Snowflake user_id, sigc::slot<void(DiscordError code)> callback); void DeleteInvite(const std::string &code); - void DeleteInvite(const std::string &code, sigc::slot<void(bool success)> callback); + void DeleteInvite(const std::string &code, sigc::slot<void(DiscordError code)> callback); void AddGroupDMRecipient(Snowflake channel_id, Snowflake user_id); void RemoveGroupDMRecipient(Snowflake channel_id, Snowflake user_id); - void ModifyRolePermissions(Snowflake guild_id, Snowflake role_id, Permission permissions, sigc::slot<void(bool success)> callback); - void ModifyRoleName(Snowflake guild_id, Snowflake role_id, const Glib::ustring &name, sigc::slot<void(bool success)> callback); - void ModifyRoleColor(Snowflake guild_id, Snowflake role_id, uint32_t color, sigc::slot<void(bool success)> callback); - void ModifyRoleColor(Snowflake guild_id, Snowflake role_id, Gdk::RGBA color, sigc::slot<void(bool success)> callback); - void ModifyRolePosition(Snowflake guild_id, Snowflake role_id, int position, sigc::slot<void(bool success)> callback); - void ModifyEmojiName(Snowflake guild_id, Snowflake emoji_id, const Glib::ustring &name, sigc::slot<void(bool success)> callback); - void DeleteEmoji(Snowflake guild_id, Snowflake emoji_id, sigc::slot<void(bool success)> callback); + void ModifyRolePermissions(Snowflake guild_id, Snowflake role_id, Permission permissions, sigc::slot<void(DiscordError code)> callback); + void ModifyRoleName(Snowflake guild_id, Snowflake role_id, const Glib::ustring &name, sigc::slot<void(DiscordError code)> callback); + void ModifyRoleColor(Snowflake guild_id, Snowflake role_id, uint32_t color, sigc::slot<void(DiscordError code)> callback); + void ModifyRoleColor(Snowflake guild_id, Snowflake role_id, Gdk::RGBA color, sigc::slot<void(DiscordError code)> callback); + void ModifyRolePosition(Snowflake guild_id, Snowflake role_id, int position, sigc::slot<void(DiscordError code)> callback); + void ModifyEmojiName(Snowflake guild_id, Snowflake emoji_id, const Glib::ustring &name, sigc::slot<void(DiscordError code)> callback); + void DeleteEmoji(Snowflake guild_id, Snowflake emoji_id, sigc::slot<void(DiscordError code)> callback); std::optional<GuildApplicationData> GetGuildApplication(Snowflake guild_id) const; - void RemoveRelationship(Snowflake id, sigc::slot<void(bool success)> callback); - void SendFriendRequest(const Glib::ustring &username, int discriminator, sigc::slot<void(bool success, DiscordError code)> callback); - void PutRelationship(Snowflake id, sigc::slot<void(bool success, DiscordError code)> callback); // send fr by id, accept incoming + void RemoveRelationship(Snowflake id, sigc::slot<void(DiscordError code)> callback); + void SendFriendRequest(const Glib::ustring &username, int discriminator, sigc::slot<void(DiscordError code)> callback); + void PutRelationship(Snowflake id, sigc::slot<void(DiscordError code)> callback); // send fr by id, accept incoming 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); @@ -146,11 +144,14 @@ public: // real client doesn't seem to use the single role endpoints so neither do we template<typename Iter> - auto SetMemberRoles(Snowflake guild_id, Snowflake user_id, Iter begin, Iter end, sigc::slot<void(bool success)> callback) { + auto SetMemberRoles(Snowflake guild_id, Snowflake user_id, Iter begin, Iter end, sigc::slot<void(DiscordError code)> callback) { ModifyGuildMemberObject obj; obj.Roles = { begin, end }; m_http.MakePATCH("/guilds/" + std::to_string(guild_id) + "/members/" + std::to_string(user_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { - callback(CheckCode(response, 200)); + if (CheckCode(response)) + callback(DiscordError::NONE); + else + callback(GetCodeFromResponse(response)); }); } @@ -169,14 +170,14 @@ public: void FetchUserProfile(Snowflake user_id, sigc::slot<void(UserProfileData)> callback); void FetchUserNote(Snowflake user_id, sigc::slot<void(std::string note)> callback); void SetUserNote(Snowflake user_id, std::string note); - void SetUserNote(Snowflake user_id, std::string note, sigc::slot<void(bool success)> callback); + void SetUserNote(Snowflake user_id, std::string note, sigc::slot<void(DiscordError code)> callback); void FetchUserRelationships(Snowflake user_id, sigc::slot<void(std::vector<UserData>)> callback); void FetchPinned(Snowflake id, sigc::slot<void(std::vector<Message>, DiscordError code)> callback); bool IsVerificationRequired(Snowflake guild_id); void GetVerificationGateInfo(Snowflake guild_id, sigc::slot<void(std::optional<VerificationGateInfoObject>)> callback); - void AcceptVerificationGate(Snowflake guild_id, VerificationGateInfoObject info, sigc::slot<void(bool success)> callback); + void AcceptVerificationGate(Snowflake guild_id, VerificationGateInfoObject info, sigc::slot<void(DiscordError code)> callback); void UpdateToken(std::string token); void SetUserAgent(std::string agent); diff --git a/windows/guildsettings/banspane.cpp b/windows/guildsettings/banspane.cpp index 65366b4..4c3d52f 100644 --- a/windows/guildsettings/banspane.cpp +++ b/windows/guildsettings/banspane.cpp @@ -94,8 +94,8 @@ void GuildSettingsBansPane::OnMenuUnban() { auto selected_row = *m_view.get_selection()->get_selected(); if (selected_row) { Snowflake id = selected_row[m_columns.m_col_id]; - auto cb = [this](bool success) { - if (!success) { + auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg("Failed to unban user", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); diff --git a/windows/guildsettings/emojispane.cpp b/windows/guildsettings/emojispane.cpp index 7a88938..94a4d0a 100644 --- a/windows/guildsettings/emojispane.cpp +++ b/windows/guildsettings/emojispane.cpp @@ -176,8 +176,8 @@ void GuildSettingsEmojisPane::OnFetchEmojis(std::vector<EmojiData> emojis) { } void GuildSettingsEmojisPane::OnEditName(Snowflake id, const std::string &name) { - const auto cb = [this](bool success) { - if (!success) { + const auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg("Failed to set emoji name", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); @@ -199,8 +199,8 @@ void GuildSettingsEmojisPane::OnMenuDelete() { const auto id = static_cast<Snowflake>(selected_row[m_columns.m_col_id]); if (auto *window = dynamic_cast<Gtk::Window *>(get_toplevel())) if (Abaddon::Get().ShowConfirm("Are you sure you want to delete " + name + "?", window)) { - const auto cb = [this](bool success) { - if (!success) { + const auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg("Failed to delete emoji", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); diff --git a/windows/guildsettings/infopane.cpp b/windows/guildsettings/infopane.cpp index 07c0318..85aabe1 100644 --- a/windows/guildsettings/infopane.cpp +++ b/windows/guildsettings/infopane.cpp @@ -99,8 +99,8 @@ void GuildSettingsInfoPane::UpdateGuildName() { auto &discord = Abaddon::Get().GetDiscordClient(); if (discord.GetGuild(GuildID)->Name == m_guild_name.get_text()) return; - auto cb = [this](bool success) { - if (!success) { + auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { m_guild_name.set_text(Abaddon::Get().GetDiscordClient().GetGuild(GuildID)->Name); Gtk::MessageDialog dlg("Failed to set guild name", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); @@ -114,8 +114,8 @@ void GuildSettingsInfoPane::UpdateGuildIconFromData(const std::vector<uint8_t> & auto encoded = "data:" + mime + ";base64," + Glib::Base64::encode(std::string(data.begin(), data.end())); auto &discord = Abaddon::Get().GetDiscordClient(); - auto cb = [this](bool success) { - if (!success) { + auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg("Failed to set guild icon", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); diff --git a/windows/guildsettings/invitespane.cpp b/windows/guildsettings/invitespane.cpp index 9b23377..707a6d6 100644 --- a/windows/guildsettings/invitespane.cpp +++ b/windows/guildsettings/invitespane.cpp @@ -98,8 +98,8 @@ void GuildSettingsInvitesPane::OnMenuDelete() { auto selected_row = *m_view.get_selection()->get_selected(); if (selected_row) { auto code = static_cast<Glib::ustring>(selected_row[m_columns.m_col_code]); - auto cb = [this](const bool success) { - if (!success) { + auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg("Failed to delete invite", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); diff --git a/windows/guildsettings/memberspane.cpp b/windows/guildsettings/memberspane.cpp index 01d7a81..12655ca 100644 --- a/windows/guildsettings/memberspane.cpp +++ b/windows/guildsettings/memberspane.cpp @@ -319,7 +319,7 @@ void GuildSettingsMembersPaneRoles::OnRoleToggle(Snowflake role_id, bool new_set // hack to prevent cb from being called if SetRoles is called before callback completion sigc::signal<void, bool> tmp; m_update_connection.push_back(tmp.connect(std::move(cb))); - const auto tmp_cb = [this, tmp = std::move(tmp)](bool success) { tmp.emit(success); }; + const auto tmp_cb = [this, tmp = std::move(tmp)](DiscordError code) { tmp.emit(code == DiscordError::NONE); }; discord.SetMemberRoles(GuildID, UserID, m_set_role_ids.begin(), m_set_role_ids.end(), sigc::track_obj(tmp_cb, *this)); } diff --git a/windows/guildsettings/rolespane.cpp b/windows/guildsettings/rolespane.cpp index e60a540..871e1cf 100644 --- a/windows/guildsettings/rolespane.cpp +++ b/windows/guildsettings/rolespane.cpp @@ -61,8 +61,8 @@ GuildSettingsRolesPaneRoles::GuildSettingsRolesPaneRoles(Snowflake guild_id) if (new_index == num_rows) return true; // trying to move row below @everyone // make sure it wont modify a neighbor role u dont have perms to modify if (!discord.CanModifyRole(GuildID, row->RoleID)) return false; - const auto cb = [this](bool success) { - if (!success) { + const auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg("Failed to set role position", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER_ON_PARENT); dlg.run(); @@ -223,8 +223,8 @@ GuildSettingsRolesPaneInfo::GuildSettingsRolesPaneInfo(Snowflake guild_id) m_color_button.signal_color_set().connect([this, &discord]() { const auto color = m_color_button.get_rgba(); - const auto cb = [this, &discord](bool success) { - if (!success) { + const auto cb = [this, &discord](DiscordError code) { + if (code != DiscordError::NONE) { m_color_button.set_rgba(IntToRGBA(discord.GetRole(RoleID)->Color)); Gtk::MessageDialog dlg("Failed to set role color", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER_ON_PARENT); @@ -379,7 +379,7 @@ void GuildSettingsRolesPaneInfo::OnPermissionToggle(Permission perm, bool new_se sigc::signal<void, bool> tmp; m_update_connections.push_back(tmp.connect(std::move(cb))); - const auto tmp_cb = [this, tmp = std::move(tmp)](bool success) { tmp.emit(success); }; + const auto tmp_cb = [this, tmp = std::move(tmp)](DiscordError code) { tmp.emit(code == DiscordError::NONE); }; discord.ModifyRolePermissions(GuildID, RoleID, m_perms, sigc::track_obj(tmp_cb, *this)); } @@ -387,8 +387,8 @@ void GuildSettingsRolesPaneInfo::UpdateRoleName() { auto &discord = Abaddon::Get().GetDiscordClient(); if (discord.GetRole(RoleID)->Name == m_role_name.get_text()) return; - const auto cb = [this, &discord](bool success) { - if (!success) { + const auto cb = [this, &discord](DiscordError code) { + if (code != DiscordError::NONE) { m_role_name.set_text(discord.GetRole(RoleID)->Name); Gtk::MessageDialog dlg("Failed to set role name", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER_ON_PARENT); diff --git a/windows/profile/userinfopane.cpp b/windows/profile/userinfopane.cpp index e9309d6..f510f4a 100644 --- a/windows/profile/userinfopane.cpp +++ b/windows/profile/userinfopane.cpp @@ -184,8 +184,8 @@ ProfileUserInfoPane::ProfileUserInfoPane(Snowflake ID) m_created.get_style_context()->add_class("profile-info-created"); m_note.signal_update_note().connect([this](const Glib::ustring ¬e) { - auto cb = [this](bool success) { - if (!success) { + auto cb = [this](DiscordError code) { + if (code != DiscordError::NONE) { Gtk::MessageDialog dlg("Failed to set note", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); |