chore: refactor TwitchIrcServer (#5421)
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include "messages/MessageColor.hpp"
|
||||
#include "messages/MessageElement.hpp"
|
||||
#include "messages/MessageThread.hpp"
|
||||
#include "providers/irc/AbstractIrcServer.hpp"
|
||||
#include "providers/twitch/ChannelPointReward.hpp"
|
||||
#include "providers/twitch/TwitchAccount.hpp"
|
||||
#include "providers/twitch/TwitchAccountManager.hpp"
|
||||
@@ -169,7 +170,7 @@ void updateReplyParticipatedStatus(const QVariantMap &tags,
|
||||
}
|
||||
|
||||
ChannelPtr channelOrEmptyByTarget(const QString &target,
|
||||
TwitchIrcServer &server)
|
||||
IAbstractIrcServer &server)
|
||||
{
|
||||
QString channelName;
|
||||
if (!trimChannelName(target, channelName))
|
||||
@@ -677,9 +678,10 @@ std::vector<MessagePtr> IrcMessageHandler::parseMessageWithReply(
|
||||
}
|
||||
|
||||
void IrcMessageHandler::handlePrivMessage(Communi::IrcPrivateMessage *message,
|
||||
TwitchIrcServer &server)
|
||||
ITwitchIrcServer &twitchServer,
|
||||
IAbstractIrcServer &abstractIrcServer)
|
||||
{
|
||||
auto chan = channelOrEmptyByTarget(message->target(), server);
|
||||
auto chan = channelOrEmptyByTarget(message->target(), abstractIrcServer);
|
||||
if (chan->isEmpty())
|
||||
{
|
||||
return;
|
||||
@@ -710,8 +712,8 @@ void IrcMessageHandler::handlePrivMessage(Communi::IrcPrivateMessage *message,
|
||||
// https://mm2pl.github.io/emoji_rfc.pdf for more details
|
||||
this->addMessage(
|
||||
message, chan,
|
||||
message->content().replace(COMBINED_FIXER, ZERO_WIDTH_JOINER), server,
|
||||
false, message->isAction());
|
||||
message->content().replace(COMBINED_FIXER, ZERO_WIDTH_JOINER),
|
||||
twitchServer, false, message->isAction());
|
||||
|
||||
if (message->tags().contains(u"pinned-chat-paid-amount"_s))
|
||||
{
|
||||
@@ -733,7 +735,7 @@ void IrcMessageHandler::handleRoomStateMessage(Communi::IrcMessage *message)
|
||||
{
|
||||
return;
|
||||
}
|
||||
auto chan = getApp()->twitch->getChannelOrEmpty(chanName);
|
||||
auto chan = getIApp()->getTwitchAbstract()->getChannelOrEmpty(chanName);
|
||||
|
||||
auto *twitchChannel = dynamic_cast<TwitchChannel *>(chan.get());
|
||||
if (!twitchChannel)
|
||||
@@ -795,7 +797,7 @@ void IrcMessageHandler::handleClearChatMessage(Communi::IrcMessage *message)
|
||||
}
|
||||
|
||||
// get channel
|
||||
auto chan = getApp()->twitch->getChannelOrEmpty(chanName);
|
||||
auto chan = getIApp()->getTwitchAbstract()->getChannelOrEmpty(chanName);
|
||||
|
||||
if (chan->isEmpty())
|
||||
{
|
||||
@@ -839,7 +841,7 @@ void IrcMessageHandler::handleClearMessageMessage(Communi::IrcMessage *message)
|
||||
}
|
||||
|
||||
// get channel
|
||||
auto chan = getApp()->twitch->getChannelOrEmpty(chanName);
|
||||
auto chan = getIApp()->getTwitchAbstract()->getChannelOrEmpty(chanName);
|
||||
|
||||
if (chan->isEmpty())
|
||||
{
|
||||
@@ -888,7 +890,7 @@ void IrcMessageHandler::handleUserStateMessage(Communi::IrcMessage *message)
|
||||
return;
|
||||
}
|
||||
|
||||
auto c = getApp()->twitch->getChannelOrEmpty(channelName);
|
||||
auto c = getIApp()->getTwitchAbstract()->getChannelOrEmpty(channelName);
|
||||
if (c->isEmpty())
|
||||
{
|
||||
return;
|
||||
@@ -943,7 +945,7 @@ void IrcMessageHandler::handleWhisperMessage(Communi::IrcMessage *ircMessage)
|
||||
|
||||
args.isReceivedWhisper = true;
|
||||
|
||||
auto *c = getApp()->twitch->whispersChannel.get();
|
||||
auto *c = getIApp()->getTwitch()->getWhispersChannel().get();
|
||||
|
||||
TwitchMessageBuilder builder(
|
||||
c, ircMessage, args,
|
||||
@@ -959,11 +961,11 @@ void IrcMessageHandler::handleWhisperMessage(Communi::IrcMessage *ircMessage)
|
||||
MessagePtr message = builder.build();
|
||||
builder.triggerHighlights();
|
||||
|
||||
getApp()->twitch->lastUserThatWhisperedMe.set(builder.userName);
|
||||
getIApp()->getTwitch()->setLastUserThatWhisperedMe(builder.userName);
|
||||
|
||||
if (message->flags.has(MessageFlag::ShowInMentions))
|
||||
{
|
||||
getApp()->twitch->mentionsChannel->addMessage(message);
|
||||
getIApp()->getTwitch()->getMentionsChannel()->addMessage(message);
|
||||
}
|
||||
|
||||
c->addMessage(message);
|
||||
@@ -976,15 +978,16 @@ void IrcMessageHandler::handleWhisperMessage(Communi::IrcMessage *ircMessage)
|
||||
!(getSettings()->streamerModeSuppressInlineWhispers &&
|
||||
getIApp()->getStreamerMode()->isEnabled()))
|
||||
{
|
||||
getApp()->twitch->forEachChannel(
|
||||
getIApp()->getTwitchAbstract()->forEachChannel(
|
||||
[&message, overrideFlags](ChannelPtr channel) {
|
||||
channel->addMessage(message, overrideFlags);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void IrcMessageHandler::handleUserNoticeMessage(Communi::IrcMessage *message,
|
||||
TwitchIrcServer &server)
|
||||
void IrcMessageHandler::handleUserNoticeMessage(
|
||||
Communi::IrcMessage *message, ITwitchIrcServer &twitchServer,
|
||||
IAbstractIrcServer &abstractIrcServer)
|
||||
{
|
||||
auto tags = message->tags();
|
||||
auto parameters = message->parameters();
|
||||
@@ -997,7 +1000,7 @@ void IrcMessageHandler::handleUserNoticeMessage(Communi::IrcMessage *message,
|
||||
content = parameters[1];
|
||||
}
|
||||
|
||||
auto chn = server.getChannelOrEmpty(target);
|
||||
auto chn = abstractIrcServer.getChannelOrEmpty(target);
|
||||
if (isIgnoredMessage({
|
||||
.message = content,
|
||||
.twitchUserID = tags.value("user-id").toString(),
|
||||
@@ -1013,7 +1016,7 @@ void IrcMessageHandler::handleUserNoticeMessage(Communi::IrcMessage *message,
|
||||
// Messages are not required, so they might be empty
|
||||
if (!content.isEmpty())
|
||||
{
|
||||
this->addMessage(message, chn, content, server, true, false);
|
||||
this->addMessage(message, chn, content, twitchServer, true, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1090,7 +1093,7 @@ void IrcMessageHandler::handleUserNoticeMessage(Communi::IrcMessage *message,
|
||||
return;
|
||||
}
|
||||
|
||||
auto chan = server.getChannelOrEmpty(channelName);
|
||||
auto chan = abstractIrcServer.getChannelOrEmpty(channelName);
|
||||
|
||||
if (!chan->isEmpty())
|
||||
{
|
||||
@@ -1111,7 +1114,7 @@ void IrcMessageHandler::handleNoticeMessage(Communi::IrcNoticeMessage *message)
|
||||
{
|
||||
// Notice wasn't targeted at a single channel, send to all twitch
|
||||
// channels
|
||||
getApp()->twitch->forEachChannelAndSpecialChannels(
|
||||
getIApp()->getTwitch()->forEachChannelAndSpecialChannels(
|
||||
[msg](const auto &c) {
|
||||
c->addMessage(msg);
|
||||
});
|
||||
@@ -1119,7 +1122,8 @@ void IrcMessageHandler::handleNoticeMessage(Communi::IrcNoticeMessage *message)
|
||||
return;
|
||||
}
|
||||
|
||||
auto channel = getApp()->twitch->getChannelOrEmpty(channelName);
|
||||
auto channel =
|
||||
getIApp()->getTwitchAbstract()->getChannelOrEmpty(channelName);
|
||||
|
||||
if (channel->isEmpty())
|
||||
{
|
||||
@@ -1202,8 +1206,8 @@ void IrcMessageHandler::handleNoticeMessage(Communi::IrcNoticeMessage *message)
|
||||
|
||||
void IrcMessageHandler::handleJoinMessage(Communi::IrcMessage *message)
|
||||
{
|
||||
auto channel =
|
||||
getApp()->twitch->getChannelOrEmpty(message->parameter(0).remove(0, 1));
|
||||
auto channel = getIApp()->getTwitchAbstract()->getChannelOrEmpty(
|
||||
message->parameter(0).remove(0, 1));
|
||||
|
||||
auto *twitchChannel = dynamic_cast<TwitchChannel *>(channel.get());
|
||||
if (!twitchChannel)
|
||||
@@ -1225,8 +1229,8 @@ void IrcMessageHandler::handleJoinMessage(Communi::IrcMessage *message)
|
||||
|
||||
void IrcMessageHandler::handlePartMessage(Communi::IrcMessage *message)
|
||||
{
|
||||
auto channel =
|
||||
getApp()->twitch->getChannelOrEmpty(message->parameter(0).remove(0, 1));
|
||||
auto channel = getIApp()->getTwitchAbstract()->getChannelOrEmpty(
|
||||
message->parameter(0).remove(0, 1));
|
||||
|
||||
auto *twitchChannel = dynamic_cast<TwitchChannel *>(channel.get());
|
||||
if (!twitchChannel)
|
||||
@@ -1311,7 +1315,7 @@ void IrcMessageHandler::setSimilarityFlags(const MessagePtr &message,
|
||||
void IrcMessageHandler::addMessage(Communi::IrcMessage *message,
|
||||
const ChannelPtr &chan,
|
||||
const QString &originalContent,
|
||||
TwitchIrcServer &server, bool isSub,
|
||||
ITwitchIrcServer &server, bool isSub,
|
||||
bool isAction)
|
||||
{
|
||||
if (chan->isEmpty())
|
||||
@@ -1446,7 +1450,7 @@ void IrcMessageHandler::addMessage(Communi::IrcMessage *message,
|
||||
|
||||
if (highlighted && showInMentions)
|
||||
{
|
||||
server.mentionsChannel->addMessage(msg);
|
||||
server.getMentionsChannel()->addMessage(msg);
|
||||
}
|
||||
|
||||
chan->addMessage(msg);
|
||||
|
||||
Reference in New Issue
Block a user