1 #include "messages/search/MessageFlagsPredicate.hpp" 2 3 namespace chatterino { 4 MessageFlagsPredicate(const QString & flags)5MessageFlagsPredicate::MessageFlagsPredicate(const QString &flags) 6 : flags_() 7 { 8 // Check if any comma-seperated values were passed and transform those 9 for (const auto &flag : flags.split(',', QString::SkipEmptyParts)) 10 { 11 if (flag == "deleted" || flag == "disabled") 12 { 13 this->flags_.set(MessageFlag::Disabled); 14 } 15 else if (flag == "sub" || flag == "subscription") 16 { 17 this->flags_.set(MessageFlag::Subscription); 18 } 19 else if (flag == "timeout" || flag == "ban") 20 { 21 this->flags_.set(MessageFlag::Timeout); 22 } 23 else if (flag == "highlighted") 24 { 25 this->flags_.set(MessageFlag::Highlighted); 26 } 27 else if (flag == "system") 28 { 29 this->flags_.set(MessageFlag::System); 30 } 31 } 32 } 33 appliesTo(const Message & message)34bool MessageFlagsPredicate::appliesTo(const Message &message) 35 { 36 // Exclude timeout messages from system flag when timeout flag isn't present 37 if (this->flags_.has(MessageFlag::System) && 38 !this->flags_.has(MessageFlag::Timeout)) 39 return message.flags.hasAny(flags_) && 40 !message.flags.has(MessageFlag::Timeout); 41 return message.flags.hasAny(flags_); 42 } 43 44 } // namespace chatterino 45