mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 02:59:01 -04:00
Extract the logic for tags that need message-tags to its own type.
This commit is contained in:
parent
f9ef385b89
commit
d5759d1de2
@ -27,6 +27,7 @@ namespace CTCTags
|
||||
class EventListener;
|
||||
class TagMessage;
|
||||
class TagMessageDetails;
|
||||
class TagProvider;
|
||||
}
|
||||
|
||||
class CTCTags::CapReference final
|
||||
@ -163,3 +164,26 @@ public:
|
||||
*/
|
||||
virtual void OnUserTagMessageBlocked(User* user, const MessageTarget& target, const TagMessageDetails& details) { }
|
||||
};
|
||||
|
||||
class CTCTags::TagProvider
|
||||
: public ClientProtocol::MessageTagProvider
|
||||
{
|
||||
private:
|
||||
CapReference ctctagcap;
|
||||
|
||||
public:
|
||||
TagProvider(Module* mod)
|
||||
: ClientProtocol::MessageTagProvider(mod)
|
||||
, ctctagcap(mod)
|
||||
{
|
||||
}
|
||||
|
||||
/** Retrieves the underlying message-tags capability. */
|
||||
const CapReference& GetCap() const { return ctctagcap; }
|
||||
|
||||
/** @copydoc ClientProtocol::MessageTagProvider::ShouldSendTag */
|
||||
bool ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTagData& tagdata) override
|
||||
{
|
||||
return ctctagcap.IsEnabled(user);
|
||||
}
|
||||
};
|
||||
|
@ -30,17 +30,15 @@
|
||||
#include "modules/whois.h"
|
||||
|
||||
class BotTag final
|
||||
: public ClientProtocol::MessageTagProvider
|
||||
: public CTCTags::TagProvider
|
||||
{
|
||||
private:
|
||||
SimpleUserMode& botmode;
|
||||
CTCTags::CapReference ctctagcap;
|
||||
|
||||
public:
|
||||
BotTag(Module* mod, SimpleUserMode& bm)
|
||||
: ClientProtocol::MessageTagProvider(mod)
|
||||
: CTCTags::TagProvider(mod)
|
||||
, botmode(bm)
|
||||
, ctctagcap(mod)
|
||||
{
|
||||
}
|
||||
|
||||
@ -50,11 +48,6 @@ public:
|
||||
if (user && user->IsModeSet(botmode))
|
||||
msg.AddTag("bot", this, "");
|
||||
}
|
||||
|
||||
bool ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTagData& tagdata) override
|
||||
{
|
||||
return ctctagcap.IsEnabled(user);
|
||||
}
|
||||
};
|
||||
|
||||
class ModuleBotMode final
|
||||
|
@ -21,15 +21,11 @@
|
||||
#include "modules/ctctags.h"
|
||||
|
||||
class MsgIdTag final
|
||||
: public ClientProtocol::MessageTagProvider
|
||||
: public CTCTags::TagProvider
|
||||
{
|
||||
private:
|
||||
CTCTags::CapReference ctctagcap;
|
||||
|
||||
public:
|
||||
MsgIdTag(Module* mod)
|
||||
: ClientProtocol::MessageTagProvider(mod)
|
||||
, ctctagcap(mod)
|
||||
: CTCTags::TagProvider(mod)
|
||||
{
|
||||
}
|
||||
|
||||
@ -41,11 +37,6 @@ public:
|
||||
// We should only allow this tag if it is added by a remote server.
|
||||
return IS_LOCAL(user) ? MOD_RES_DENY : MOD_RES_ALLOW;
|
||||
}
|
||||
|
||||
bool ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTagData& tagdata) override
|
||||
{
|
||||
return ctctagcap.IsEnabled(user);
|
||||
}
|
||||
};
|
||||
|
||||
class MsgIdGenerator final
|
||||
|
@ -40,8 +40,7 @@ bool ServerTags::ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTag
|
||||
}
|
||||
|
||||
ServiceTag::ServiceTag(Module* mod)
|
||||
: ClientProtocol::MessageTagProvider(mod)
|
||||
, ctctagcap(mod)
|
||||
: CTCTags::TagProvider(mod)
|
||||
{
|
||||
}
|
||||
|
||||
@ -51,8 +50,3 @@ void ServiceTag::OnPopulateTags(ClientProtocol::Message& msg)
|
||||
if (user && user->server->IsService())
|
||||
msg.AddTag("inspircd.org/service", this, "");
|
||||
}
|
||||
|
||||
bool ServiceTag::ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTagData& tagdata)
|
||||
{
|
||||
return ctctagcap.IsEnabled(user);
|
||||
}
|
||||
|
@ -31,13 +31,9 @@ public:
|
||||
};
|
||||
|
||||
class ServiceTag final
|
||||
: public ClientProtocol::MessageTagProvider
|
||||
: public CTCTags::TagProvider
|
||||
{
|
||||
private:
|
||||
CTCTags::CapReference ctctagcap;
|
||||
|
||||
public:
|
||||
ServiceTag(Module* mod);
|
||||
void OnPopulateTags(ClientProtocol::Message& msg) override;
|
||||
bool ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTagData& tagdata) override;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user