From fba0afb3df0da211d30290bd19652fc26266dcf3 Mon Sep 17 00:00:00 2001 From: acetone Date: Fri, 17 Dec 2021 02:15:39 -0500 Subject: [PATCH] online counter fix (op/owners/etc nick reading) --- httpserver.cpp | 4 +++- ircclient.cpp | 5 +++++ ircclient.h | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/httpserver.cpp b/httpserver.cpp index 56dd61a..9d10e18 100644 --- a/httpserver.cpp +++ b/httpserver.cpp @@ -548,8 +548,10 @@ void HttpServer::writeMainPage(QTcpSocket *socket, QString &urlPath, bool isHead replaceTag(page, "ONLINE", QString::number(currentOnline)); QString onlineUserS; + std::sort(m_onlineUsers[originalServerName][originalChannelName].begin(), + m_onlineUsers[originalServerName][originalChannelName].end()); for (const auto &user: m_onlineUsers[originalServerName][originalChannelName]) { - if (QRegularExpression("^.?"+m_botsNick[originalServerName]+"$").match(user).hasMatch()) { + if (QRegularExpression("^(@|\\&|\\+|~)?"+m_botsNick[originalServerName]+"$").match(user).hasMatch()) { continue; } QString onlineUser = HTML_ONLINE_POINT; diff --git a/ircclient.cpp b/ircclient.cpp index 1d5a501..dc815e2 100644 --- a/ircclient.cpp +++ b/ircclient.cpp @@ -450,8 +450,13 @@ void IrcClient::process(const QString &message) } } else if (m_rgxQuit.match(message).hasMatch()) { + const std::array prefixes {'~' /*admin*/, '@' /*operator*/, + '%' /*half-op*/, '+' /*voiced*/}; for (auto &ch: m_online) { ch.second.removeAll(nickname); + for (const auto& p: prefixes) { + ch.second.removeAll(p+nickname); + } emit userOnline(m_connectionData.displayName, ch.first, ch.second); } consoleLog("QUIT " + nickname); diff --git a/ircclient.h b/ircclient.h index 144be1e..b86176d 100644 --- a/ircclient.h +++ b/ircclient.h @@ -42,7 +42,7 @@ private: ConnectionData m_connectionData; QTimer m_timerToJoin; QTimer m_nickRecover; - QTimer m_usersActualize; // really need it? + QTimer m_usersActualize; // to get all users status (op, owner, etc) QTimer m_pingTimeout; const QRegularExpression m_rgxPrivmsg {"^[^\\s]*\\sPRIVMSG"};