aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_watch.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2023-08-04 13:09:06 +0100
committerGravatar Sadie Powell2023-08-04 13:14:49 +0100
commit635feb1a9a3ece8f06e1ad620b7b5a1eb21f8a44 (patch)
treead84709d188e70bf3e8aab74d85c59e40a711e12 /src/modules/m_watch.cpp
parentFix an inverted condition in the DNSBL module. (diff)
downloadinspircd++-635feb1a9a3ece8f06e1ad620b7b5a1eb21f8a44.tar.gz
inspircd++-635feb1a9a3ece8f06e1ad620b7b5a1eb21f8a44.tar.bz2
inspircd++-635feb1a9a3ece8f06e1ad620b7b5a1eb21f8a44.zip
Rework how away state is stored internally.
This will be necessary for implementing pre-away as well as some changes for WATCH compatibility with Unreal.
Diffstat (limited to 'src/modules/m_watch.cpp')
-rw-r--r--src/modules/m_watch.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/modules/m_watch.cpp b/src/modules/m_watch.cpp
index 20d31aadd..fe2aaf0d1 100644
--- a/src/modules/m_watch.cpp
+++ b/src/modules/m_watch.cpp
@@ -59,7 +59,7 @@ class CommandWatch final
{
// The away state should only be sent if the client requests away notifications for a nick but 2.0 always sends them so we do that too
if (target->IsAway())
- user->WriteNumeric(RPL_NOWISAWAY, target->nick, target->GetDisplayedHost(), target->GetDisplayedHost(), target->awaytime, "is away");
+ user->WriteNumeric(RPL_NOWISAWAY, target->nick, target->GetDisplayedHost(), target->GetDisplayedHost(), target->away->time, "is away");
else
user->WriteNumeric(RPL_NOWON, target->nick, target->GetDisplayedHost(), target->GetDisplayedHost(), target->nickchanged, "is online");
}
@@ -199,8 +199,8 @@ private:
void Online(User* user)
{
SendAlert(user, user->nick, RPL_LOGON, "arrived online", user->nickchanged);
- if (!user->awaymsg.empty())
- OnUserAway(user);
+ if (user->IsAway())
+ OnUserAway(user, std::nullopt);
}
void Offline(User* user, const std::string& nick)
@@ -247,12 +247,12 @@ public:
Offline(user, user->nick);
}
- void OnUserAway(User* user) override
+ void OnUserAway(User* user, const std::optional<AwayState>& prevstate) override
{
- SendAlert(user, user->nick, RPL_GONEAWAY, user->awaymsg.c_str(), user->awaytime);
+ SendAlert(user, user->nick, RPL_GONEAWAY, user->away->message.c_str(), user->away->time);
}
- void OnUserBack(User* user, const std::string& message) override
+ void OnUserBack(User* user, const std::optional<AwayState>& prevstate) override
{
SendAlert(user, user->nick, RPL_NOTAWAY, "is no longer away", ServerInstance->Time());
}