mirror of
https://github.com/celisej567/abaddon.git
synced 2026-09-06 20:15:19 +03:00
THREAD_LIST_SYNC
This commit is contained in:
@@ -1173,6 +1173,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
|
||||
case GatewayEvent::THREAD_DELETE: {
|
||||
HandleGatewayThreadDelete(m);
|
||||
} break;
|
||||
case GatewayEvent::THREAD_LIST_SYNC: {
|
||||
HandleGatewayThreadListSync(m);
|
||||
} break;
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
@@ -1653,6 +1656,8 @@ void DiscordClient::HandleGatewayRelationshipAdd(const GatewayMessage &msg) {
|
||||
m_signal_relationship_add.emit(std::move(data));
|
||||
}
|
||||
|
||||
// remarkably this doesnt actually mean a thread was created
|
||||
// it can also mean you gained access to a thread. yay ...
|
||||
void DiscordClient::HandleGatewayThreadCreate(const GatewayMessage &msg) {
|
||||
ThreadCreateData data = msg.Data;
|
||||
m_store.SetChannel(data.Channel.ID, data.Channel);
|
||||
@@ -1665,6 +1670,16 @@ void DiscordClient::HandleGatewayThreadDelete(const GatewayMessage &msg) {
|
||||
m_signal_thread_delete.emit(data);
|
||||
}
|
||||
|
||||
// this message is received when you load a channel as part of the lazy load request
|
||||
// so the ui will only update thread when you load a channel in some guild
|
||||
// which is rather annoying but oh well
|
||||
void DiscordClient::HandleGatewayThreadListSync(const GatewayMessage &msg) {
|
||||
ThreadListSyncData data = msg.Data;
|
||||
for (const auto &thread : data.Threads)
|
||||
m_store.SetChannel(thread.ID, thread);
|
||||
m_signal_thread_list_sync.emit(data);
|
||||
}
|
||||
|
||||
void DiscordClient::HandleGatewayReadySupplemental(const GatewayMessage &msg) {
|
||||
ReadySupplementalData data = msg.Data;
|
||||
for (const auto &p : data.MergedPresences.Friends) {
|
||||
@@ -2029,6 +2044,7 @@ void DiscordClient::LoadEventMap() {
|
||||
m_event_map["RELATIONSHIP_ADD"] = GatewayEvent::RELATIONSHIP_ADD;
|
||||
m_event_map["THREAD_CREATE"] = GatewayEvent::THREAD_CREATE;
|
||||
m_event_map["THREAD_DELETE"] = GatewayEvent::THREAD_DELETE;
|
||||
m_event_map["THREAD_LIST_SYNC"] = GatewayEvent::THREAD_LIST_SYNC;
|
||||
}
|
||||
|
||||
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
|
||||
@@ -2175,6 +2191,10 @@ DiscordClient::type_signal_thread_delete DiscordClient::signal_thread_delete() {
|
||||
return m_signal_thread_delete;
|
||||
}
|
||||
|
||||
DiscordClient::type_signal_thread_list_sync DiscordClient::signal_thread_list_sync() {
|
||||
return m_signal_thread_list_sync;
|
||||
}
|
||||
|
||||
DiscordClient::type_signal_message_sent DiscordClient::signal_message_sent() {
|
||||
return m_signal_message_sent;
|
||||
}
|
||||
|
||||
@@ -239,6 +239,7 @@ private:
|
||||
void HandleGatewayRelationshipAdd(const GatewayMessage &msg);
|
||||
void HandleGatewayThreadCreate(const GatewayMessage &msg);
|
||||
void HandleGatewayThreadDelete(const GatewayMessage &msg);
|
||||
void HandleGatewayThreadListSync(const GatewayMessage &msg);
|
||||
void HandleGatewayReadySupplemental(const GatewayMessage &msg);
|
||||
void HandleGatewayReconnect(const GatewayMessage &msg);
|
||||
void HandleGatewayInvalidSession(const GatewayMessage &msg);
|
||||
@@ -334,6 +335,7 @@ public:
|
||||
typedef sigc::signal<void, RelationshipAddData> type_signal_relationship_add;
|
||||
typedef sigc::signal<void, ChannelData> type_signal_thread_create;
|
||||
typedef sigc::signal<void, ThreadDeleteData> type_signal_thread_delete;
|
||||
typedef sigc::signal<void, ThreadListSyncData> type_signal_thread_list_sync;
|
||||
typedef sigc::signal<void, Message> type_signal_message_unpinned; // not a real event
|
||||
typedef sigc::signal<void, Message> type_signal_message_pinned; // not a real event either
|
||||
typedef sigc::signal<void, Message> type_signal_message_sent;
|
||||
@@ -375,6 +377,7 @@ public:
|
||||
type_signal_message_pinned signal_message_pinned();
|
||||
type_signal_thread_create signal_thread_create();
|
||||
type_signal_thread_delete signal_thread_delete();
|
||||
type_signal_thread_list_sync signal_thread_list_sync();
|
||||
type_signal_message_sent signal_message_sent();
|
||||
type_signal_message_send_fail signal_message_send_fail();
|
||||
type_signal_disconnected signal_disconnected();
|
||||
@@ -415,6 +418,7 @@ protected:
|
||||
type_signal_message_pinned m_signal_message_pinned;
|
||||
type_signal_thread_create m_signal_thread_create;
|
||||
type_signal_thread_delete m_signal_thread_delete;
|
||||
type_signal_thread_list_sync m_signal_thread_list_sync;
|
||||
type_signal_message_sent m_signal_message_sent;
|
||||
type_signal_message_send_fail m_signal_message_send_fail;
|
||||
type_signal_disconnected m_signal_disconnected;
|
||||
|
||||
@@ -484,3 +484,8 @@ void from_json(const nlohmann::json &j, ThreadDeleteData &m) {
|
||||
JS_D("parent_id", m.ParentID);
|
||||
JS_D("type", m.Type);
|
||||
}
|
||||
|
||||
void from_json(const nlohmann::json &j, ThreadListSyncData &m) {
|
||||
JS_D("threads", m.Threads);
|
||||
JS_D("guild_id", m.GuildID);
|
||||
}
|
||||
|
||||
@@ -681,3 +681,12 @@ struct ThreadDeleteData {
|
||||
|
||||
friend void from_json(const nlohmann::json &j, ThreadDeleteData &m);
|
||||
};
|
||||
|
||||
// pretty different from docs
|
||||
struct ThreadListSyncData {
|
||||
std::vector<ChannelData> Threads;
|
||||
Snowflake GuildID;
|
||||
// std::optional<std::vector<???>> MostRecentMessages;
|
||||
|
||||
friend void from_json(const nlohmann::json &j, ThreadListSyncData &m);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user