manually send req, this ensures we send it before JOIN

Fixes #1229
This commit is contained in:
Rasmus Karlsson 2019-08-22 22:04:02 +02:00
parent 0c6760d0ca
commit ab0d70300c
4 changed files with 14 additions and 12 deletions

View file

@ -36,9 +36,9 @@ AbstractIrcServer::AbstractIrcServer()
QObject::connect(this->readConnection_.get(),
&Communi::IrcConnection::privateMessageReceived,
[this](auto msg) { this->privateMessageReceived(msg); });
QObject::connect(this->readConnection_.get(),
&Communi::IrcConnection::connected,
[this] { this->onConnected(); });
QObject::connect(
this->readConnection_.get(), &Communi::IrcConnection::connected,
[this] { this->onConnected(this->readConnection_.get()); });
QObject::connect(this->readConnection_.get(),
&Communi::IrcConnection::disconnected,
[this] { this->onDisconnected(); });
@ -227,7 +227,7 @@ std::shared_ptr<Channel> AbstractIrcServer::getChannelOrEmpty(
return Channel::getEmpty();
}
void AbstractIrcServer::onConnected()
void AbstractIrcServer::onConnected(IrcConnection *connection)
{
std::lock_guard<std::mutex> lock(this->channelMutex);

View file

@ -52,7 +52,7 @@ protected:
virtual void messageReceived(Communi::IrcMessage *message);
virtual void writeConnectionMessageReceived(Communi::IrcMessage *message);
virtual void onConnected();
virtual void onConnected(IrcConnection *connection);
virtual void onDisconnected();
virtual void onSocketError();

View file

@ -90,13 +90,6 @@ void TwitchServer::initializeConnection(IrcConnection *connection, bool isRead,
connection->setPassword(oauthToken);
}
connection->sendCommand(
Communi::IrcCommand::createCapability("REQ", "twitch.tv/membership"));
connection->sendCommand(
Communi::IrcCommand::createCapability("REQ", "twitch.tv/commands"));
connection->sendCommand(
Communi::IrcCommand::createCapability("REQ", "twitch.tv/tags"));
connection->setSecure(true);
// https://dev.twitch.tv/docs/irc/guide/#connecting-to-twitch-irc
@ -206,6 +199,13 @@ void TwitchServer::writeConnectionMessageReceived(Communi::IrcMessage *message)
}
}
void TwitchServer::onConnected(IrcConnection *connection)
{
// connection in thise case is the read connection
connection->sendRaw(
"CAP REQ :twitch.tv/tags twitch.tv/commands twitch.tv/membership");
}
std::shared_ptr<Channel> TwitchServer::getCustomChannel(
const QString &channelName)
{

View file

@ -55,6 +55,8 @@ protected:
virtual void writeConnectionMessageReceived(
Communi::IrcMessage *message) override;
virtual void onConnected(IrcConnection *connection) override;
virtual std::shared_ptr<Channel> getCustomChannel(
const QString &channelname) override;