summaryrefslogtreecommitdiff
path: root/windows/guildsettings
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-03-17 02:19:15 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2021-03-17 02:19:15 -0400
commit65943b4bd74ae52e6f6ffbff0e9ba619053172d6 (patch)
tree2dccda0581fab9379bde1586aa1c63079f555099 /windows/guildsettings
parent72d771d88b625cf29913ab02497aa8f331c247e5 (diff)
downloadabaddon-portaudio-65943b4bd74ae52e6f6ffbff0e9ba619053172d6.tar.gz
abaddon-portaudio-65943b4bd74ae52e6f6ffbff0e9ba619053172d6.zip
reduce concurrent requests in guild settings + profile
disable gtk's treeview search in bans+invites
Diffstat (limited to 'windows/guildsettings')
-rw-r--r--windows/guildsettings/auditlogpane.cpp13
-rw-r--r--windows/guildsettings/auditlogpane.hpp7
-rw-r--r--windows/guildsettings/banspane.cpp18
-rw-r--r--windows/guildsettings/banspane.hpp7
-rw-r--r--windows/guildsettings/invitespane.cpp16
-rw-r--r--windows/guildsettings/invitespane.hpp7
6 files changed, 54 insertions, 14 deletions
diff --git a/windows/guildsettings/auditlogpane.cpp b/windows/guildsettings/auditlogpane.cpp
index d6b6fee..cd82425 100644
--- a/windows/guildsettings/auditlogpane.cpp
+++ b/windows/guildsettings/auditlogpane.cpp
@@ -9,15 +9,20 @@ GuildSettingsAuditLogPane::GuildSettingsAuditLogPane(Snowflake id)
set_hexpand(true);
set_vexpand(true);
+ m_list.set_selection_mode(Gtk::SELECTION_NONE);
+ m_list.show();
+ add(m_list);
+}
+
+void GuildSettingsAuditLogPane::on_switched_to() {
+ if (m_requested) return;
+ m_requested = true;
+
auto &discord = Abaddon::Get().GetDiscordClient();
const auto self_id = discord.GetUserData().ID;
if (discord.HasGuildPermission(self_id, GuildID, Permission::VIEW_AUDIT_LOG))
discord.FetchAuditLog(GuildID, sigc::mem_fun(*this, &GuildSettingsAuditLogPane::OnAuditLogFetch));
-
- m_list.set_selection_mode(Gtk::SELECTION_NONE);
- m_list.show();
- add(m_list);
}
void GuildSettingsAuditLogPane::OnAuditLogFetch(const AuditLogData &data) {
diff --git a/windows/guildsettings/auditlogpane.hpp b/windows/guildsettings/auditlogpane.hpp
index caa5af6..9421e22 100644
--- a/windows/guildsettings/auditlogpane.hpp
+++ b/windows/guildsettings/auditlogpane.hpp
@@ -1,12 +1,17 @@
#pragma once
#include <gtkmm.h>
+#include "../../components//inotifyswitched.hpp"
#include "../../discord/objects.hpp"
-class GuildSettingsAuditLogPane : public Gtk::ScrolledWindow {
+class GuildSettingsAuditLogPane : public Gtk::ScrolledWindow, public INotifySwitched {
public:
GuildSettingsAuditLogPane(Snowflake id);
private:
+ void on_switched_to() override;
+
+ bool m_requested = false;
+
Gtk::ListBox m_list;
void OnAuditLogFetch(const AuditLogData &data);
diff --git a/windows/guildsettings/banspane.cpp b/windows/guildsettings/banspane.cpp
index 517ae09..3ea71bb 100644
--- a/windows/guildsettings/banspane.cpp
+++ b/windows/guildsettings/banspane.cpp
@@ -22,9 +22,7 @@ GuildSettingsBansPane::GuildSettingsBansPane(Snowflake id)
const auto self_id = discord.GetUserData().ID;
const auto can_ban = discord.HasGuildPermission(self_id, GuildID, Permission::BAN_MEMBERS);
- if (can_ban) {
- discord.FetchGuildBans(id, sigc::mem_fun(*this, &GuildSettingsBansPane::OnGuildBansFetch));
- } else {
+ if (!can_ban) {
for (const auto &ban : discord.GetBansInGuild(id))
OnGuildBanFetch(ban);
@@ -50,11 +48,25 @@ GuildSettingsBansPane::GuildSettingsBansPane(Snowflake id)
add(m_scroll);
show_all_children();
+ m_view.set_enable_search(false);
m_view.set_model(m_model);
m_view.append_column("User", m_columns.m_col_user);
m_view.append_column("Reason", m_columns.m_col_reason);
}
+void GuildSettingsBansPane::on_switched_to() {
+ if (m_requested) return;
+ m_requested = true;
+
+ auto &discord = Abaddon::Get().GetDiscordClient();
+
+ const auto self_id = discord.GetUserData().ID;
+ const auto can_ban = discord.HasGuildPermission(self_id, GuildID, Permission::BAN_MEMBERS);
+
+ if (can_ban)
+ discord.FetchGuildBans(GuildID, sigc::mem_fun(*this, &GuildSettingsBansPane::OnGuildBansFetch));
+}
+
void GuildSettingsBansPane::OnGuildBanFetch(const BanData &ban) {
const auto user = Abaddon::Get().GetDiscordClient().GetUser(ban.User.ID);
auto &row = *m_model->append();
diff --git a/windows/guildsettings/banspane.hpp b/windows/guildsettings/banspane.hpp
index f492226..39fef78 100644
--- a/windows/guildsettings/banspane.hpp
+++ b/windows/guildsettings/banspane.hpp
@@ -1,13 +1,18 @@
#pragma once
#include <gtkmm.h>
+#include "../../components/inotifyswitched.hpp"
#include "../../discord/snowflake.hpp"
#include "../../discord/ban.hpp"
-class GuildSettingsBansPane : public Gtk::Box {
+class GuildSettingsBansPane : public Gtk::Box, public INotifySwitched {
public:
GuildSettingsBansPane(Snowflake id);
private:
+ void on_switched_to() override;
+
+ bool m_requested = false;
+
void OnGuildBanFetch(const BanData &ban);
void OnGuildBansFetch(const std::vector<BanData> &bans);
void OnMenuUnban();
diff --git a/windows/guildsettings/invitespane.cpp b/windows/guildsettings/invitespane.cpp
index a47460f..8e91bf6 100644
--- a/windows/guildsettings/invitespane.cpp
+++ b/windows/guildsettings/invitespane.cpp
@@ -16,10 +16,6 @@ GuildSettingsInvitesPane::GuildSettingsInvitesPane(Snowflake id)
m_menu.show_all();
auto &discord = Abaddon::Get().GetDiscordClient();
- const auto self_id = discord.GetUserData().ID;
-
- if (discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_GUILD))
- discord.FetchGuildInvites(GuildID, sigc::mem_fun(*this, &GuildSettingsInvitesPane::OnInvitesFetch));
discord.signal_invite_create().connect(sigc::mem_fun(*this, &GuildSettingsInvitesPane::OnInviteCreate));
discord.signal_invite_delete().connect(sigc::mem_fun(*this, &GuildSettingsInvitesPane::OnInviteDelete));
@@ -27,6 +23,7 @@ GuildSettingsInvitesPane::GuildSettingsInvitesPane(Snowflake id)
m_view.show();
add(m_view);
+ m_view.set_enable_search(false);
m_view.set_model(m_model);
m_view.append_column("Code", m_columns.m_col_code);
m_view.append_column("Expires", m_columns.m_col_expires);
@@ -39,6 +36,17 @@ GuildSettingsInvitesPane::GuildSettingsInvitesPane(Snowflake id)
column->set_resizable(true);
}
+void GuildSettingsInvitesPane::on_switched_to() {
+ if (m_requested) return;
+ m_requested = true;
+
+ auto &discord = Abaddon::Get().GetDiscordClient();
+ const auto self_id = discord.GetUserData().ID;
+
+ if (discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_GUILD))
+ discord.FetchGuildInvites(GuildID, sigc::mem_fun(*this, &GuildSettingsInvitesPane::OnInvitesFetch));
+}
+
void GuildSettingsInvitesPane::AppendInvite(const InviteData &invite) {
auto &discord = Abaddon::Get().GetDiscordClient();
auto &row = *m_model->append();
diff --git a/windows/guildsettings/invitespane.hpp b/windows/guildsettings/invitespane.hpp
index c32f194..b9d1255 100644
--- a/windows/guildsettings/invitespane.hpp
+++ b/windows/guildsettings/invitespane.hpp
@@ -1,12 +1,17 @@
#pragma once
#include <gtkmm.h>
+#include "../../components/inotifyswitched.hpp"
#include "../../discord/objects.hpp"
-class GuildSettingsInvitesPane : public Gtk::ScrolledWindow {
+class GuildSettingsInvitesPane : public Gtk::ScrolledWindow, public INotifySwitched {
public:
GuildSettingsInvitesPane(Snowflake id);
private:
+ void on_switched_to() override;
+
+ bool m_requested = false;
+
void AppendInvite(const InviteData &invite);
void OnInviteFetch(const std::optional<InviteData> &invite);
void OnInvitesFetch(const std::vector<InviteData> &invites);