diff options
author | Peter Powell <petpow@saberuk.com> | 2017-12-11 19:42:52 +0000 |
---|---|---|
committer | Peter Powell <petpow@saberuk.com> | 2018-01-06 14:18:21 +0000 |
commit | 2fcb5ff4389a9a82d253acdff02a388ddcf14653 (patch) | |
tree | 96feee81599adb7ef02bc35293daccba7071a6de /src/modules/m_spanningtree | |
parent | 40514d0ba8279309f350a47652fffef745662926 (diff) |
Rework message handling.
- Move all message-related types to their own header to make moving
them to a cross-module events easier.
- Rename OnUserMessage to OnUserPostMessage.
- Rename OnText to OnUserMessage.
- Replace the dest, target_type, and status parameters with the
MessageTarget class.
- Replace the text, exempt_list, and msgtype parameters with the
MessageDetails struct.
- Add echooriginal and originaltext to the MessageDetails struct
to allow spam filtering to not be broken by cap echo-message.
Diffstat (limited to 'src/modules/m_spanningtree')
-rw-r--r-- | src/modules/m_spanningtree/main.cpp | 22 | ||||
-rw-r--r-- | src/modules/m_spanningtree/main.h | 2 |
2 files changed, 12 insertions, 12 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index c244629c1..1a77237bd 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -386,33 +386,33 @@ void ModuleSpanningTree::OnPostTopicChange(User* user, Channel* chan, const std: CommandFTopic::Builder(user, chan).Broadcast(); } -void ModuleSpanningTree::OnUserMessage(User* user, void* dest, int target_type, const std::string& text, char status, const CUList& exempt_list, MessageType msgtype) +void ModuleSpanningTree::OnUserPostMessage(User* user, const MessageTarget& target, const MessageDetails& details) { if (!IS_LOCAL(user)) return; - const char* message_type = (msgtype == MSG_PRIVMSG ? "PRIVMSG" : "NOTICE"); - if (target_type == TYPE_USER) + const char* message_type = (details.type == MSG_PRIVMSG ? "PRIVMSG" : "NOTICE"); + if (target.type == MessageTarget::TYPE_USER) { - User* d = (User*) dest; + User* d = target.Get<User>(); if (!IS_LOCAL(d)) { CmdBuilder params(user, message_type); params.push_back(d->uuid); - params.push_last(text); + params.push_last(details.text); params.Unicast(d); } } - else if (target_type == TYPE_CHANNEL) + else if (target.type == MessageTarget::TYPE_CHANNEL) { - Utils->SendChannelMessage(user->uuid, (Channel*)dest, text, status, exempt_list, message_type); + Utils->SendChannelMessage(user->uuid, target.Get<Channel>(), details.text, target.status, details.exemptions, message_type); } - else if (target_type == TYPE_SERVER) + else if (target.type == MessageTarget::TYPE_SERVER) { - char* target = (char*) dest; + const std::string* serverglob = target.Get<std::string>(); CmdBuilder par(user, message_type); - par.push_back(target); - par.push_last(text); + par.push_back(*serverglob); + par.push_last(details.text); par.Broadcast(); } } diff --git a/src/modules/m_spanningtree/main.h b/src/modules/m_spanningtree/main.h index 13bab4cff..4eefb01a0 100644 --- a/src/modules/m_spanningtree/main.h +++ b/src/modules/m_spanningtree/main.h @@ -147,7 +147,7 @@ class ModuleSpanningTree : public Module void OnUserInvite(User* source, User* dest, Channel* channel, time_t timeout, unsigned int notifyrank, CUList& notifyexcepts) CXX11_OVERRIDE; ModResult OnPreTopicChange(User* user, Channel* chan, const std::string& topic) CXX11_OVERRIDE; void OnPostTopicChange(User* user, Channel* chan, const std::string &topic) CXX11_OVERRIDE; - void OnUserMessage(User* user, void* dest, int target_type, const std::string& text, char status, const CUList& exempt_list, MessageType msgtype) CXX11_OVERRIDE; + void OnUserPostMessage(User* user, const MessageTarget& target, const MessageDetails& details) CXX11_OVERRIDE; void OnBackgroundTimer(time_t curtime) CXX11_OVERRIDE; void OnUserJoin(Membership* memb, bool sync, bool created, CUList& excepts) CXX11_OVERRIDE; void OnChangeHost(User* user, const std::string &newhost) CXX11_OVERRIDE; |