mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
move pubsub stuff to the providers/twitch namespace and folder
This commit is contained in:
parent
ebbe8dcfae
commit
0f22d9d002
|
@ -104,6 +104,7 @@ SOURCES += \
|
|||
src/providers/twitch/twitchchannel.cpp \
|
||||
src/providers/twitch/twitchmessagebuilder.cpp \
|
||||
src/providers/twitch/twitchserver.cpp \
|
||||
src/providers/twitch/pubsub.cpp \
|
||||
src/singletons/accountmanager.cpp \
|
||||
src/singletons/commandmanager.cpp \
|
||||
src/singletons/emotemanager.cpp \
|
||||
|
@ -175,10 +176,9 @@ SOURCES += \
|
|||
src/widgets/helper/debugpopup.cpp \
|
||||
src/util/debugcount.cpp \
|
||||
src/singletons/nativemessagingmanager.cpp \
|
||||
src/singletons/pubsubmanager.cpp \
|
||||
src/util/rapidjson-helpers.cpp \
|
||||
src/singletons/helper/pubsubhelpers.cpp \
|
||||
src/singletons/helper/pubsubactions.cpp \
|
||||
src/providers/twitch/pubsubhelpers.cpp \
|
||||
src/providers/twitch/pubsubactions.cpp \
|
||||
src/widgets/selectchanneldialog.cpp \
|
||||
src/singletons/updatemanager.cpp \
|
||||
src/widgets/lastruncrashdialog.cpp \
|
||||
|
@ -213,6 +213,7 @@ HEADERS += \
|
|||
src/providers/twitch/twitchchannel.hpp \
|
||||
src/providers/twitch/twitchmessagebuilder.hpp \
|
||||
src/providers/twitch/twitchserver.hpp \
|
||||
src/providers/twitch/pubsub.hpp \
|
||||
src/singletons/accountmanager.hpp \
|
||||
src/singletons/commandmanager.hpp \
|
||||
src/singletons/emotemanager.hpp \
|
||||
|
@ -304,8 +305,8 @@ HEADERS += \
|
|||
src/singletons/nativemessagingmanager.hpp \
|
||||
src/singletons/pubsubmanager.hpp \
|
||||
src/util/rapidjson-helpers.hpp \
|
||||
src/singletons/helper/pubsubhelpers.hpp \
|
||||
src/singletons/helper/pubsubactions.hpp \
|
||||
src/providers/twitch/pubsubhelpers.hpp \
|
||||
src/providers/twitch/pubsubactions.hpp \
|
||||
src/widgets/selectchanneldialog.hpp \
|
||||
src/singletons/updatemanager.hpp \
|
||||
src/widgets/lastruncrashdialog.hpp \
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "application.hpp"
|
||||
|
||||
#include "providers/twitch/pubsub.hpp"
|
||||
#include "providers/twitch/twitchserver.hpp"
|
||||
#include "singletons/accountmanager.hpp"
|
||||
#include "singletons/commandmanager.hpp"
|
||||
|
@ -8,7 +9,6 @@
|
|||
#include "singletons/loggingmanager.hpp"
|
||||
#include "singletons/nativemessagingmanager.hpp"
|
||||
#include "singletons/pathmanager.hpp"
|
||||
#include "singletons/pubsubmanager.hpp"
|
||||
#include "singletons/resourcemanager.hpp"
|
||||
#include "singletons/settingsmanager.hpp"
|
||||
#include "singletons/thememanager.hpp"
|
||||
|
@ -66,12 +66,12 @@ void Application::construct()
|
|||
this->commands = new singletons::CommandManager;
|
||||
this->accounts = new singletons::AccountManager;
|
||||
this->emotes = new singletons::EmoteManager;
|
||||
this->pubsub = new singletons::PubSubManager;
|
||||
this->settings = new singletons::SettingManager;
|
||||
this->fonts = new singletons::FontManager;
|
||||
this->resources = new singletons::ResourceManager;
|
||||
|
||||
this->twitch.server = new providers::twitch::TwitchServer;
|
||||
this->twitch.pubsub = new providers::twitch::PubSub;
|
||||
}
|
||||
|
||||
void Application::instantiate(int argc, char **argv)
|
||||
|
@ -106,29 +106,29 @@ void Application::initialize()
|
|||
|
||||
this->nativeMessaging->openGuiMessageQueue();
|
||||
|
||||
this->pubsub->sig.whisper.sent.connect([](const auto &msg) {
|
||||
this->twitch.pubsub->sig.whisper.sent.connect([](const auto &msg) {
|
||||
debug::Log("WHISPER SENT LOL"); //
|
||||
});
|
||||
|
||||
this->pubsub->sig.whisper.received.connect([](const auto &msg) {
|
||||
this->twitch.pubsub->sig.whisper.received.connect([](const auto &msg) {
|
||||
debug::Log("WHISPER RECEIVED LOL"); //
|
||||
});
|
||||
|
||||
this->pubsub->sig.moderation.chatCleared.connect([&](const auto &action) {
|
||||
this->twitch.pubsub->sig.moderation.chatCleared.connect([&](const auto &action) {
|
||||
debug::Log("Chat cleared by {}", action.source.name); //
|
||||
});
|
||||
|
||||
this->pubsub->sig.moderation.modeChanged.connect([&](const auto &action) {
|
||||
this->twitch.pubsub->sig.moderation.modeChanged.connect([&](const auto &action) {
|
||||
debug::Log("Mode {} was turned {} by {} (duration {})", (int &)action.mode,
|
||||
(bool &)action.state, action.source.name, action.args.duration);
|
||||
});
|
||||
|
||||
this->pubsub->sig.moderation.moderationStateChanged.connect([&](const auto &action) {
|
||||
this->twitch.pubsub->sig.moderation.moderationStateChanged.connect([&](const auto &action) {
|
||||
debug::Log("User {} was {} by {}", action.target.id, action.modded ? "modded" : "unmodded",
|
||||
action.source.name);
|
||||
});
|
||||
|
||||
this->pubsub->sig.moderation.userBanned.connect([&](const auto &action) {
|
||||
this->twitch.pubsub->sig.moderation.userBanned.connect([&](const auto &action) {
|
||||
auto chan = this->twitch.server->getChannelOrEmptyByID(action.roomID);
|
||||
|
||||
if (chan->isEmpty()) {
|
||||
|
@ -140,7 +140,7 @@ void Application::initialize()
|
|||
util::postToThread([chan, msg] { chan->addMessage(msg); });
|
||||
});
|
||||
|
||||
this->pubsub->sig.moderation.userUnbanned.connect([&](const auto &action) {
|
||||
this->twitch.pubsub->sig.moderation.userUnbanned.connect([&](const auto &action) {
|
||||
auto chan = this->twitch.server->getChannelOrEmptyByID(action.roomID);
|
||||
|
||||
if (chan->isEmpty()) {
|
||||
|
@ -152,14 +152,14 @@ void Application::initialize()
|
|||
util::postToThread([chan, msg] { chan->addMessage(msg); });
|
||||
});
|
||||
|
||||
this->pubsub->Start();
|
||||
this->twitch.pubsub->Start();
|
||||
|
||||
auto RequestModerationActions = [=]() {
|
||||
this->pubsub->UnlistenAllModerationActions();
|
||||
this->twitch.pubsub->UnlistenAllModerationActions();
|
||||
// TODO(pajlada): Unlisten to all authed topics instead of only moderation topics
|
||||
// this->pubsub->UnlistenAllAuthedTopics();
|
||||
// this->twitch.pubsub->UnlistenAllAuthedTopics();
|
||||
|
||||
this->pubsub->ListenToWhispers(this->accounts->Twitch.getCurrent()); //
|
||||
this->twitch.pubsub->ListenToWhispers(this->accounts->Twitch.getCurrent()); //
|
||||
};
|
||||
|
||||
this->accounts->Twitch.userChanged.connect(RequestModerationActions);
|
||||
|
|
|
@ -11,6 +11,7 @@ namespace providers {
|
|||
namespace twitch {
|
||||
|
||||
class TwitchServer;
|
||||
class PubSub;
|
||||
|
||||
} // namespace twitch
|
||||
} // namespace providers
|
||||
|
@ -24,7 +25,6 @@ class PathManager;
|
|||
class CommandManager;
|
||||
class AccountManager;
|
||||
class EmoteManager;
|
||||
class PubSubManager;
|
||||
class NativeMessagingManager;
|
||||
class SettingManager;
|
||||
class FontManager;
|
||||
|
@ -56,7 +56,6 @@ public:
|
|||
singletons::CommandManager *commands = nullptr;
|
||||
singletons::AccountManager *accounts = nullptr;
|
||||
singletons::EmoteManager *emotes = nullptr;
|
||||
singletons::PubSubManager *pubsub = nullptr;
|
||||
singletons::NativeMessagingManager *nativeMessaging = nullptr;
|
||||
singletons::SettingManager *settings = nullptr;
|
||||
singletons::FontManager *fonts = nullptr;
|
||||
|
@ -64,7 +63,8 @@ public:
|
|||
|
||||
/// Provider-specific
|
||||
struct {
|
||||
providers::twitch::TwitchServer *server;
|
||||
providers::twitch::TwitchServer *server = nullptr;
|
||||
providers::twitch::PubSub *pubsub = nullptr;
|
||||
} twitch;
|
||||
|
||||
void save();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include "messages/message.hpp"
|
||||
#include "messageelement.hpp"
|
||||
#include "singletons/helper/pubsubactions.hpp"
|
||||
#include "providers/twitch/pubsubactions.hpp"
|
||||
#include "util/irchelpers.hpp"
|
||||
|
||||
using SBHighlight = chatterino::widgets::ScrollbarHighlight;
|
||||
|
@ -79,7 +79,7 @@ MessagePtr Message::createTimeoutMessage(const QString &username, const QString
|
|||
return message;
|
||||
}
|
||||
|
||||
MessagePtr Message::createTimeoutMessage(const singletons::BanAction &action, uint32_t count)
|
||||
MessagePtr Message::createTimeoutMessage(const providers::twitch::BanAction &action, uint32_t count)
|
||||
{
|
||||
MessagePtr msg(new Message);
|
||||
|
||||
|
@ -89,7 +89,7 @@ MessagePtr Message::createTimeoutMessage(const singletons::BanAction &action, ui
|
|||
|
||||
msg->timeoutUser = action.target.name;
|
||||
msg->count = count;
|
||||
msg->banAction.reset(new singletons::BanAction(action));
|
||||
msg->banAction.reset(new providers::twitch::BanAction(action));
|
||||
|
||||
QString text;
|
||||
|
||||
|
@ -130,7 +130,7 @@ MessagePtr Message::createTimeoutMessage(const singletons::BanAction &action, ui
|
|||
return msg;
|
||||
}
|
||||
|
||||
MessagePtr Message::createUntimeoutMessage(const singletons::UnbanAction &action)
|
||||
MessagePtr Message::createUntimeoutMessage(const providers::twitch::UnbanAction &action)
|
||||
{
|
||||
MessagePtr msg(new Message);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "messages/messageelement.hpp"
|
||||
#include "singletons/helper/pubsubactions.hpp"
|
||||
#include "providers/twitch/pubsubactions.hpp"
|
||||
#include "util/flagsenum.hpp"
|
||||
#include "widgets/helper/scrollbarhighlight.hpp"
|
||||
|
||||
|
@ -50,7 +50,7 @@ struct Message {
|
|||
QString localizedName;
|
||||
QString timeoutUser;
|
||||
|
||||
std::unique_ptr<singletons::BanAction> banAction;
|
||||
std::unique_ptr<providers::twitch::BanAction> banAction;
|
||||
uint32_t count = 1;
|
||||
|
||||
// Messages should not be added after the message is done initializing.
|
||||
|
@ -70,9 +70,10 @@ public:
|
|||
const QString &durationInSeconds,
|
||||
const QString &reason, bool multipleTimes);
|
||||
|
||||
static std::shared_ptr<Message> createTimeoutMessage(const singletons::BanAction &action,
|
||||
static std::shared_ptr<Message> createTimeoutMessage(const providers::twitch::BanAction &action,
|
||||
uint32_t count = 1);
|
||||
static std::shared_ptr<Message> createUntimeoutMessage(const singletons::UnbanAction &action);
|
||||
static std::shared_ptr<Message> createUntimeoutMessage(
|
||||
const providers::twitch::UnbanAction &action);
|
||||
};
|
||||
|
||||
using MessagePtr = std::shared_ptr<Message>;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include "singletons/pubsubmanager.hpp"
|
||||
#include "providers/twitch/pubsub.hpp"
|
||||
|
||||
#include "debug/log.hpp"
|
||||
#include "providers/twitch/pubsubactions.hpp"
|
||||
#include "providers/twitch/pubsubhelpers.hpp"
|
||||
#include "singletons/accountmanager.hpp"
|
||||
#include "singletons/helper/pubsubactions.hpp"
|
||||
#include "singletons/helper/pubsubhelpers.hpp"
|
||||
#include "util/rapidjson-helpers.hpp"
|
||||
|
||||
#include <rapidjson/error/en.h>
|
||||
|
@ -18,12 +18,15 @@ using websocketpp::lib::placeholders::_1;
|
|||
using websocketpp::lib::placeholders::_2;
|
||||
|
||||
namespace chatterino {
|
||||
namespace singletons {
|
||||
namespace providers {
|
||||
namespace twitch {
|
||||
|
||||
static const char *pingPayload = "{\"type\":\"PING\"}";
|
||||
|
||||
static std::map<std::string, std::string> sentMessages;
|
||||
|
||||
namespace detail {
|
||||
|
||||
PubSubClient::PubSubClient(WebsocketClient &_websocketClient, WebsocketHandle _handle)
|
||||
: websocketClient(_websocketClient)
|
||||
, handle(_handle)
|
||||
|
@ -170,9 +173,11 @@ bool PubSubClient::Send(const char *payload)
|
|||
return true;
|
||||
}
|
||||
|
||||
PubSubManager::PubSubManager()
|
||||
} // namespace detail
|
||||
|
||||
PubSub::PubSub()
|
||||
{
|
||||
qDebug() << "init PubSubManager";
|
||||
qDebug() << "init PubSub";
|
||||
|
||||
this->moderationActionHandlers["clear"] = [this](const auto &data, const auto &roomID) {
|
||||
ClearChatAction action(data, roomID);
|
||||
|
@ -420,17 +425,17 @@ PubSubManager::PubSubManager()
|
|||
this->websocketClient.init_asio();
|
||||
|
||||
// SSL Handshake
|
||||
this->websocketClient.set_tls_init_handler(bind(&PubSubManager::OnTLSInit, this, ::_1));
|
||||
this->websocketClient.set_tls_init_handler(bind(&PubSub::OnTLSInit, this, ::_1));
|
||||
|
||||
this->websocketClient.set_message_handler(bind(&PubSubManager::OnMessage, this, ::_1, ::_2));
|
||||
this->websocketClient.set_open_handler(bind(&PubSubManager::OnConnectionOpen, this, ::_1));
|
||||
this->websocketClient.set_close_handler(bind(&PubSubManager::OnConnectionClose, this, ::_1));
|
||||
this->websocketClient.set_message_handler(bind(&PubSub::OnMessage, this, ::_1, ::_2));
|
||||
this->websocketClient.set_open_handler(bind(&PubSub::OnConnectionOpen, this, ::_1));
|
||||
this->websocketClient.set_close_handler(bind(&PubSub::OnConnectionClose, this, ::_1));
|
||||
|
||||
// Add an initial client
|
||||
this->AddClient();
|
||||
}
|
||||
|
||||
void PubSubManager::AddClient()
|
||||
void PubSub::AddClient()
|
||||
{
|
||||
websocketpp::lib::error_code ec;
|
||||
auto con = this->websocketClient.get_connection(TWITCH_PUBSUB_URL, ec);
|
||||
|
@ -443,12 +448,12 @@ void PubSubManager::AddClient()
|
|||
this->websocketClient.connect(con);
|
||||
}
|
||||
|
||||
void PubSubManager::Start()
|
||||
void PubSub::Start()
|
||||
{
|
||||
this->mainThread.reset(new std::thread(std::bind(&PubSubManager::RunThread, this)));
|
||||
this->mainThread.reset(new std::thread(std::bind(&PubSub::RunThread, this)));
|
||||
}
|
||||
|
||||
void PubSubManager::ListenToWhispers(std::shared_ptr<providers::twitch::TwitchAccount> account)
|
||||
void PubSub::ListenToWhispers(std::shared_ptr<providers::twitch::TwitchAccount> account)
|
||||
{
|
||||
assert(account != nullptr);
|
||||
|
||||
|
@ -467,7 +472,7 @@ void PubSubManager::ListenToWhispers(std::shared_ptr<providers::twitch::TwitchAc
|
|||
}
|
||||
}
|
||||
|
||||
void PubSubManager::UnlistenAllModerationActions()
|
||||
void PubSub::UnlistenAllModerationActions()
|
||||
{
|
||||
for (const auto &p : this->clients) {
|
||||
const auto &client = p.second;
|
||||
|
@ -475,7 +480,7 @@ void PubSubManager::UnlistenAllModerationActions()
|
|||
}
|
||||
}
|
||||
|
||||
void PubSubManager::ListenToChannelModerationActions(
|
||||
void PubSub::ListenToChannelModerationActions(
|
||||
const QString &channelID, std::shared_ptr<providers::twitch::TwitchAccount> account)
|
||||
{
|
||||
assert(!channelID.isEmpty());
|
||||
|
@ -495,7 +500,7 @@ void PubSubManager::ListenToChannelModerationActions(
|
|||
this->listenToTopic(topic, account);
|
||||
}
|
||||
|
||||
void PubSubManager::listenToTopic(const std::string &topic,
|
||||
void PubSub::listenToTopic(const std::string &topic,
|
||||
std::shared_ptr<providers::twitch::TwitchAccount> account)
|
||||
{
|
||||
auto message = CreateListenMessage({topic}, account);
|
||||
|
@ -503,7 +508,7 @@ void PubSubManager::listenToTopic(const std::string &topic,
|
|||
this->Listen(std::move(message));
|
||||
}
|
||||
|
||||
void PubSubManager::Listen(rapidjson::Document &&msg)
|
||||
void PubSub::Listen(rapidjson::Document &&msg)
|
||||
{
|
||||
if (this->TryListen(msg)) {
|
||||
debug::Log("Successfully listened!");
|
||||
|
@ -514,7 +519,7 @@ void PubSubManager::Listen(rapidjson::Document &&msg)
|
|||
this->requests.emplace_back(std::make_unique<rapidjson::Document>(std::move(msg)));
|
||||
}
|
||||
|
||||
bool PubSubManager::TryListen(rapidjson::Document &msg)
|
||||
bool PubSub::TryListen(rapidjson::Document &msg)
|
||||
{
|
||||
debug::Log("TryListen with {} clients", this->clients.size());
|
||||
for (const auto &p : this->clients) {
|
||||
|
@ -527,7 +532,7 @@ bool PubSubManager::TryListen(rapidjson::Document &msg)
|
|||
return false;
|
||||
}
|
||||
|
||||
bool PubSubManager::isListeningToTopic(const std::string &topic)
|
||||
bool PubSub::isListeningToTopic(const std::string &topic)
|
||||
{
|
||||
for (const auto &p : this->clients) {
|
||||
const auto &client = p.second;
|
||||
|
@ -539,7 +544,7 @@ bool PubSubManager::isListeningToTopic(const std::string &topic)
|
|||
return false;
|
||||
}
|
||||
|
||||
void PubSubManager::OnMessage(websocketpp::connection_hdl hdl, WebsocketMessagePtr websocketMessage)
|
||||
void PubSub::OnMessage(websocketpp::connection_hdl hdl, WebsocketMessagePtr websocketMessage)
|
||||
{
|
||||
const std::string &payload = websocketMessage->get_payload();
|
||||
|
||||
|
@ -596,9 +601,9 @@ void PubSubManager::OnMessage(websocketpp::connection_hdl hdl, WebsocketMessageP
|
|||
}
|
||||
}
|
||||
|
||||
void PubSubManager::OnConnectionOpen(WebsocketHandle hdl)
|
||||
void PubSub::OnConnectionOpen(WebsocketHandle hdl)
|
||||
{
|
||||
auto client = std::make_shared<PubSubClient>(this->websocketClient, hdl);
|
||||
auto client = std::make_shared<detail::PubSubClient>(this->websocketClient, hdl);
|
||||
|
||||
// We separate the starting from the constructor because we will want to use shared_from_this
|
||||
client->Start();
|
||||
|
@ -608,7 +613,7 @@ void PubSubManager::OnConnectionOpen(WebsocketHandle hdl)
|
|||
this->connected.invoke();
|
||||
}
|
||||
|
||||
void PubSubManager::OnConnectionClose(WebsocketHandle hdl)
|
||||
void PubSub::OnConnectionClose(WebsocketHandle hdl)
|
||||
{
|
||||
auto clientIt = this->clients.find(hdl);
|
||||
|
||||
|
@ -625,7 +630,7 @@ void PubSubManager::OnConnectionClose(WebsocketHandle hdl)
|
|||
this->connected.invoke();
|
||||
}
|
||||
|
||||
PubSubManager::WebsocketContextPtr PubSubManager::OnTLSInit(websocketpp::connection_hdl hdl)
|
||||
PubSub::WebsocketContextPtr PubSub::OnTLSInit(websocketpp::connection_hdl hdl)
|
||||
{
|
||||
WebsocketContextPtr ctx(new boost::asio::ssl::context(boost::asio::ssl::context::tlsv1));
|
||||
|
||||
|
@ -640,7 +645,7 @@ PubSubManager::WebsocketContextPtr PubSubManager::OnTLSInit(websocketpp::connect
|
|||
return ctx;
|
||||
}
|
||||
|
||||
void PubSubManager::HandleListenResponse(const rapidjson::Document &msg)
|
||||
void PubSub::HandleListenResponse(const rapidjson::Document &msg)
|
||||
{
|
||||
std::string error;
|
||||
|
||||
|
@ -661,7 +666,7 @@ void PubSubManager::HandleListenResponse(const rapidjson::Document &msg)
|
|||
}
|
||||
}
|
||||
|
||||
void PubSubManager::HandleMessageResponse(const rapidjson::Value &outerData)
|
||||
void PubSub::HandleMessageResponse(const rapidjson::Value &outerData)
|
||||
{
|
||||
QString topic;
|
||||
|
||||
|
@ -733,12 +738,13 @@ void PubSubManager::HandleMessageResponse(const rapidjson::Value &outerData)
|
|||
}
|
||||
}
|
||||
|
||||
void PubSubManager::RunThread()
|
||||
void PubSub::RunThread()
|
||||
{
|
||||
debug::Log("Start pubsub manager thread");
|
||||
this->websocketClient.run();
|
||||
debug::Log("Done with pubsub manager thread");
|
||||
}
|
||||
|
||||
} // namespace singletons
|
||||
} // namespace twitch
|
||||
} // namespace providers
|
||||
} // namespace chatterino
|
|
@ -1,8 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include "providers/twitch/pubsubactions.hpp"
|
||||
#include "providers/twitch/twitchaccount.hpp"
|
||||
#include "providers/twitch/twitchserver.hpp"
|
||||
#include "singletons/helper/pubsubactions.hpp"
|
||||
|
||||
#include <rapidjson/document.h>
|
||||
#include <QString>
|
||||
|
@ -21,7 +21,8 @@
|
|||
#include <vector>
|
||||
|
||||
namespace chatterino {
|
||||
namespace singletons {
|
||||
namespace providers {
|
||||
namespace twitch {
|
||||
|
||||
using WebsocketClient = websocketpp::client<websocketpp::config::asio_tls_client>;
|
||||
using WebsocketHandle = websocketpp::connection_hdl;
|
||||
|
@ -30,6 +31,8 @@ using WebsocketErrorCode = websocketpp::lib::error_code;
|
|||
#define MAX_PUBSUB_LISTENS 50
|
||||
#define MAX_PUBSUB_CONNECTIONS 10
|
||||
|
||||
namespace detail {
|
||||
|
||||
struct Listener {
|
||||
std::string topic;
|
||||
bool authed;
|
||||
|
@ -66,7 +69,9 @@ private:
|
|||
bool Send(const char *payload);
|
||||
};
|
||||
|
||||
class PubSubManager
|
||||
} // namespace detail
|
||||
|
||||
class PubSub
|
||||
{
|
||||
using WebsocketMessagePtr = websocketpp::config::asio_tls_client::message_type::ptr;
|
||||
using WebsocketContextPtr = websocketpp::lib::shared_ptr<boost::asio::ssl::context>;
|
||||
|
@ -78,9 +83,9 @@ class PubSubManager
|
|||
std::unique_ptr<std::thread> mainThread;
|
||||
|
||||
public:
|
||||
PubSubManager();
|
||||
PubSub();
|
||||
|
||||
~PubSubManager() = delete;
|
||||
~PubSub() = delete;
|
||||
|
||||
enum class State {
|
||||
Connected,
|
||||
|
@ -136,7 +141,8 @@ private:
|
|||
|
||||
State state = State::Connected;
|
||||
|
||||
std::map<WebsocketHandle, std::shared_ptr<PubSubClient>, std::owner_less<WebsocketHandle>>
|
||||
std::map<WebsocketHandle, std::shared_ptr<detail::PubSubClient>,
|
||||
std::owner_less<WebsocketHandle>>
|
||||
clients;
|
||||
|
||||
std::unordered_map<std::string, std::function<void(const rapidjson::Value &, const QString &)>>
|
||||
|
@ -153,5 +159,6 @@ private:
|
|||
void RunThread();
|
||||
};
|
||||
|
||||
} // namespace singletons
|
||||
} // namespace twitch
|
||||
} // namespace providers
|
||||
} // namespace chatterino
|
|
@ -1,9 +1,10 @@
|
|||
#include "singletons/helper/pubsubactions.hpp"
|
||||
#include "providers/twitch/pubsubactions.hpp"
|
||||
|
||||
#include "singletons/helper/pubsubhelpers.hpp"
|
||||
#include "providers/twitch/pubsubhelpers.hpp"
|
||||
|
||||
namespace chatterino {
|
||||
namespace singletons {
|
||||
namespace providers {
|
||||
namespace twitch {
|
||||
|
||||
PubSubAction::PubSubAction(const rapidjson::Value &data, const QString &_roomID)
|
||||
: timestamp(std::chrono::steady_clock::now())
|
||||
|
@ -12,5 +13,6 @@ PubSubAction::PubSubAction(const rapidjson::Value &data, const QString &_roomID)
|
|||
getCreatedByUser(data, this->source);
|
||||
}
|
||||
|
||||
} // namespace singletons
|
||||
} // namespace twitch
|
||||
} // namespace providers
|
||||
} // namespace chatterino
|
|
@ -1,14 +1,14 @@
|
|||
#pragma once
|
||||
|
||||
#include <rapidjson/document.h>
|
||||
|
||||
#include <QString>
|
||||
|
||||
#include <chrono>
|
||||
#include <cinttypes>
|
||||
|
||||
namespace chatterino {
|
||||
namespace singletons {
|
||||
namespace providers {
|
||||
namespace twitch {
|
||||
|
||||
struct ActionUser {
|
||||
QString id;
|
||||
|
@ -91,5 +91,6 @@ struct ModerationStateAction : PubSubAction {
|
|||
bool modded;
|
||||
};
|
||||
|
||||
} // namespace singletons
|
||||
} // namespace twitch
|
||||
} // namespace providers
|
||||
} // namespace chatterino
|
|
@ -1,11 +1,12 @@
|
|||
#include "singletons/helper/pubsubhelpers.hpp"
|
||||
#include "providers/twitch/pubsubhelpers.hpp"
|
||||
|
||||
#include "providers/twitch/pubsubactions.hpp"
|
||||
#include "singletons/accountmanager.hpp"
|
||||
#include "singletons/helper/pubsubactions.hpp"
|
||||
#include "util/rapidjson-helpers.hpp"
|
||||
|
||||
namespace chatterino {
|
||||
namespace singletons {
|
||||
namespace providers {
|
||||
namespace twitch {
|
||||
|
||||
const rapidjson::Value &getArgs(const rapidjson::Value &data)
|
||||
{
|
||||
|
@ -85,5 +86,6 @@ rapidjson::Document CreateUnlistenMessage(const std::vector<std::string> &topics
|
|||
return msg;
|
||||
}
|
||||
|
||||
} // namespace singletons
|
||||
} // namespace twitch
|
||||
} // namespace providers
|
||||
} // namespace chatterino
|
|
@ -10,7 +10,8 @@
|
|||
#include <memory>
|
||||
|
||||
namespace chatterino {
|
||||
namespace singletons {
|
||||
namespace providers {
|
||||
namespace twitch {
|
||||
|
||||
struct ActionUser;
|
||||
|
||||
|
@ -59,5 +60,6 @@ void RunAfter(std::shared_ptr<boost::asio::steady_timer> timer, Duration duratio
|
|||
});
|
||||
}
|
||||
|
||||
} // namespace singletons
|
||||
} // namespace twitch
|
||||
} // namespace providers
|
||||
} // namespace chatterino
|
|
@ -1,12 +1,13 @@
|
|||
#include "providers/twitch/twitchchannel.hpp"
|
||||
|
||||
#include "common.hpp"
|
||||
#include "debug/log.hpp"
|
||||
#include "messages/message.hpp"
|
||||
#include "providers/twitch/pubsub.hpp"
|
||||
#include "providers/twitch/twitchmessagebuilder.hpp"
|
||||
#include "singletons/accountmanager.hpp"
|
||||
#include "singletons/emotemanager.hpp"
|
||||
#include "singletons/ircmanager.hpp"
|
||||
#include "singletons/pubsubmanager.hpp"
|
||||
#include "singletons/settingsmanager.hpp"
|
||||
#include "util/posttothread.hpp"
|
||||
#include "util/urlfetch.hpp"
|
||||
|
@ -57,7 +58,7 @@ TwitchChannel::TwitchChannel(const QString &channelName, Communi::IrcConnection
|
|||
|
||||
auto account = app->accounts->Twitch.getCurrent();
|
||||
if (account && !account->getUserId().isEmpty()) {
|
||||
app->pubsub->ListenToChannelModerationActions(this->roomID, account);
|
||||
app->twitch.pubsub->ListenToChannelModerationActions(this->roomID, account);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue