#pragma once #include "common/FlagsEnum.hpp" #include "common/UniqueAccess.hpp" #include "controllers/highlights/HighlightCheck.hpp" #include "singletons/Settings.hpp" #include #include #include #include #include #include #include #include #include namespace chatterino { class TwitchBadge; struct MessageParseArgs; class AccountController; enum class MessageFlag : std::int64_t; using MessageFlags = FlagsEnum; class HighlightController final { public: HighlightController(Settings &settings, AccountController *accounts); /** * @brief Checks the given message parameters if it matches our internal checks, and returns a result **/ [[nodiscard]] std::pair check( const MessageParseArgs &args, const std::vector &twitchBadges, const QString &senderName, const QString &originalMessage, const MessageFlags &messageFlags) const; private: /** * @brief rebuildChecks is called whenever some outside variable has been changed and our checks need to be updated * * rebuilds are always full, so if something changes we throw away all checks and build them all up from scratch **/ void rebuildChecks(Settings &settings); UniqueAccess> checks_; pajlada::SettingListener rebuildListener_; pajlada::Signals::SignalHolder signalHolder_; std::vector bConnections; }; } // namespace chatterino