From 9d8edc4ae02997cda93c360c5fc86e11a9218856 Mon Sep 17 00:00:00 2001 From: fourtf Date: Mon, 22 Jan 2018 15:24:39 +0100 Subject: [PATCH] Fixes #210 aallow duplicate messages behaves weird --- src/singletons/ircmanager.cpp | 7 ------- src/singletons/ircmanager.hpp | 3 --- src/twitch/twitchchannel.cpp | 17 ++++++++++++++++- src/twitch/twitchchannel.hpp | 2 ++ 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/singletons/ircmanager.cpp b/src/singletons/ircmanager.cpp index 5ed5d2fd..d1453076 100644 --- a/src/singletons/ircmanager.cpp +++ b/src/singletons/ircmanager.cpp @@ -34,9 +34,6 @@ IrcManager::IrcManager(ChannelManager &_channelManager, ResourceManager &_resour , resources(_resources) , accountManager(_accountManager) { - this->messageSuffix.append(' '); - this->messageSuffix.append(QChar(0x206D)); - this->account = accountManager.Twitch.getCurrent(); accountManager.Twitch.userChanged.connect([this]() { this->setUser(accountManager.Twitch.getCurrent()); @@ -208,12 +205,8 @@ void IrcManager::sendMessage(const QString &channelName, QString message) } this->connectionMutex.lock(); - static int i = 0; if (this->writeConnection) { - if (singletons::SettingManager::getInstance().allowDuplicateMessages && (++i % 2) == 0) { - trimmedMessage.append(this->messageSuffix); - } this->writeConnection->sendRaw("PRIVMSG #" + channelName + " :" + trimmedMessage); } diff --git a/src/singletons/ircmanager.hpp b/src/singletons/ircmanager.hpp index 8153d10b..da85f2d3 100644 --- a/src/singletons/ircmanager.hpp +++ b/src/singletons/ircmanager.hpp @@ -89,9 +89,6 @@ private: void onConnected(); void onDisconnected(); - -private: - QByteArray messageSuffix; }; } // namespace singletons diff --git a/src/twitch/twitchchannel.cpp b/src/twitch/twitchchannel.cpp index d7853766..96ca281e 100644 --- a/src/twitch/twitchchannel.cpp +++ b/src/twitch/twitchchannel.cpp @@ -41,6 +41,9 @@ TwitchChannel::TwitchChannel(const QString &channelName) this->connectedConnection = singletons::IrcManager::getInstance().connected.connect( [this] { this->userStateChanged(); }); + + this->messageSuffix.append(' '); + this->messageSuffix.append(QChar(0x206D)); } TwitchChannel::~TwitchChannel() @@ -87,6 +90,19 @@ void TwitchChannel::sendMessage(const QString &message) // Do last message processing QString parsedMessage = emoteManager.replaceShortCodes(message); + parsedMessage = parsedMessage.trimmed(); + + if (parsedMessage.isEmpty()) + return; + + if (singletons::SettingManager::getInstance().allowDuplicateMessages) { + if (parsedMessage == this->lastSentMessage) { + parsedMessage.append(this->messageSuffix); + + this->lastSentMessage = ""; + } + } + singletons::IrcManager::getInstance().sendMessage(this->name, parsedMessage); } @@ -228,6 +244,5 @@ void TwitchChannel::fetchRecentMessages() } }); } - } // namespace twitch } // namespace chatterino diff --git a/src/twitch/twitchchannel.hpp b/src/twitch/twitchchannel.hpp index 2c5f4905..18f1e065 100644 --- a/src/twitch/twitchchannel.hpp +++ b/src/twitch/twitchchannel.hpp @@ -57,6 +57,8 @@ private: boost::signals2::connection connectedConnection; bool mod; + QByteArray messageSuffix; + QString lastSentMessage; }; } // namespace twitch