mirror of
https://github.com/celisej567/abaddon.git
synced 2026-09-13 20:18:50 +03:00
join guild -> accept invite, handle group dm invites
This commit is contained in:
@@ -65,6 +65,8 @@ void JoinGuildDialog::CheckCode() {
|
||||
m_info.set_text(invite->Guild->Name + " (" + std::to_string(*invite->MemberCount) + " members)");
|
||||
else
|
||||
m_info.set_text(invite->Guild->Name);
|
||||
} else {
|
||||
m_info.set_text("Group DM (" + std::to_string(*invite->MemberCount) + " members)");
|
||||
}
|
||||
} else {
|
||||
m_ok.set_sensitive(false);
|
||||
|
||||
@@ -1186,7 +1186,6 @@ void DiscordClient::HandleGatewayInviteCreate(const GatewayMessage &msg) {
|
||||
invite.Code = std::move(data.Code);
|
||||
invite.CreatedAt = std::move(data.CreatedAt);
|
||||
invite.Channel = *m_store.GetChannel(data.ChannelID);
|
||||
invite.Guild = *m_store.GetGuild(*invite.Channel->GuildID);
|
||||
invite.Inviter = std::move(data.Inviter);
|
||||
invite.IsTemporary = std::move(data.IsTemporary);
|
||||
invite.MaxAge = std::move(data.MaxAge);
|
||||
@@ -1194,6 +1193,8 @@ void DiscordClient::HandleGatewayInviteCreate(const GatewayMessage &msg) {
|
||||
invite.TargetUser = std::move(data.TargetUser);
|
||||
invite.TargetUserType = std::move(data.TargetUserType);
|
||||
invite.Uses = std::move(data.Uses);
|
||||
if (data.GuildID.has_value())
|
||||
invite.Guild = m_store.GetGuild(*data.GuildID);
|
||||
m_signal_invite_create.emit(invite);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
#include "invite.hpp"
|
||||
|
||||
void from_json(const nlohmann::json &j, InviteChannelData &m) {
|
||||
JS_D("id", m.ID);
|
||||
JS_D("type", m.Type);
|
||||
JS_ON("name", m.Name);
|
||||
if (j.contains("recipients") && j.at("recipients").is_null()) {
|
||||
m.RecipientUsernames.emplace();
|
||||
for (const auto &x : j.at("recipients"))
|
||||
m.RecipientUsernames->push_back(x.at("username").get<std::string>());
|
||||
}
|
||||
}
|
||||
|
||||
void from_json(const nlohmann::json &j, InviteData &m) {
|
||||
JS_D("code", m.Code);
|
||||
JS_O("guild", m.Guild);
|
||||
@@ -15,3 +26,14 @@ void from_json(const nlohmann::json &j, InviteData &m) {
|
||||
JS_O("temporary", m.IsTemporary);
|
||||
JS_O("created_at", m.CreatedAt);
|
||||
}
|
||||
|
||||
InviteChannelData::InviteChannelData(const ChannelData &c) {
|
||||
ID = c.ID;
|
||||
Type = c.Type;
|
||||
Name = c.Name;
|
||||
if (Type == ChannelType::GROUP_DM) {
|
||||
RecipientUsernames.emplace();
|
||||
for (const auto &r : c.GetDMRecipients())
|
||||
RecipientUsernames->push_back(r.Username);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,25 @@ enum class ETargetUserType {
|
||||
STREAM = 1
|
||||
};
|
||||
|
||||
class InviteChannelData {
|
||||
public:
|
||||
InviteChannelData() = default;
|
||||
InviteChannelData(const ChannelData &c);
|
||||
|
||||
Snowflake ID;
|
||||
ChannelType Type;
|
||||
std::optional<std::string> Name;
|
||||
std::optional<std::vector<std::string>> RecipientUsernames;
|
||||
// std::optional<??> Icon;
|
||||
|
||||
friend void from_json(const nlohmann::json &j, InviteChannelData &m);
|
||||
};
|
||||
|
||||
class InviteData {
|
||||
public:
|
||||
std::string Code;
|
||||
std::optional<GuildData> Guild;
|
||||
std::optional<ChannelData> Channel;
|
||||
std::optional<InviteChannelData> Channel;
|
||||
std::optional<UserData> Inviter;
|
||||
std::optional<UserData> TargetUser;
|
||||
std::optional<ETargetUserType> TargetUserType;
|
||||
|
||||
@@ -16,7 +16,7 @@ MainWindow::MainWindow()
|
||||
m_menu_discord_disconnect.set_label("Disconnect");
|
||||
m_menu_discord_disconnect.set_sensitive(false);
|
||||
m_menu_discord_set_token.set_label("Set Token");
|
||||
m_menu_discord_join_guild.set_label("Join Guild");
|
||||
m_menu_discord_join_guild.set_label("Accept Invite");
|
||||
m_menu_discord_join_guild.set_sensitive(false);
|
||||
m_menu_discord_set_status.set_label("Set Status");
|
||||
m_menu_discord_set_status.set_sensitive(false);
|
||||
|
||||
Reference in New Issue
Block a user