Added a bunch of stuff, we now collect all the pubsub automod messages and also displays a caught message to a mod

This commit is contained in:
apa420
2019-01-20 01:02:04 +01:00
parent ae18f35dfb
commit 0b2480d715
12 changed files with 249 additions and 79 deletions
+1
View File
@@ -28,6 +28,7 @@ enum class MessageFlag : uint16_t {
PubSub = (1 << 11),
Subscription = (1 << 12),
Notification = (1 << 13),
AutoMod = (1 << 14),
};
using MessageFlags = FlagsEnum<MessageFlag>;
+45
View File
@@ -1,6 +1,8 @@
#include "MessageBuilder.hpp"
//#include "Application.hpp"
#include "common/LinkParser.hpp"
//#include "messages/Image.hpp"
#include "messages/Message.hpp"
#include "messages/MessageElement.hpp"
#include "providers/twitch/PubsubActions.hpp"
@@ -11,6 +13,7 @@
#include "util/IrcHelpers.hpp"
#include <QDateTime>
//#include <QImageReader>
namespace chatterino {
@@ -19,6 +22,48 @@ MessagePtr makeSystemMessage(const QString &text)
return MessageBuilder(systemMessage, text).release();
}
std::pair<MessagePtr, MessagePtr> makeAutomodMessage(
const AutomodAction &action)
{
auto builder = MessageBuilder();
builder.emplace<TimestampElement>();
builder.message().flags.set(MessageFlag::PubSub);
// Crashes the program atm
// builder.emplace<ImageElement>(
// Image::fromPixmap(getApp()->resources->twitch.automod),
// MessageElementFlag::BadgeChannelAuthority)
// ->setTooltip("AutoMod");
builder.emplace<TextElement>(
"AutoMod:", MessageElementFlag::NonBoldUsername,
MessageColor(QColor("green")));
builder.emplace<TextElement>(
("Held a message for reason: " + action.reason +
". Allow will post it in chat."),
MessageElementFlag::Text, MessageColor::Text);
builder.message().flags.set(MessageFlag::AutoMod);
auto message1 = builder.release();
builder = MessageBuilder();
builder.emplace<TimestampElement>();
builder.message().flags.set(MessageFlag::PubSub);
builder
.emplace<TextElement>(action.target.name + ":",
MessageElementFlag::NonBoldUsername,
MessageColor(QColor("red")))
->setLink({Link::UserInfo, action.target.name});
builder.emplace<TextElement>(action.message, MessageElementFlag::Text,
MessageColor::Text);
builder.message().flags.set(MessageFlag::AutoMod);
auto message2 = builder.release();
return std::make_pair(message1, message2);
}
MessageBuilder::MessageBuilder()
: message_(std::make_shared<Message>())
{
+5 -1
View File
@@ -4,10 +4,12 @@
#include <QRegularExpression>
#include <ctime>
#include <utility>
namespace chatterino {
struct BanAction;
struct UnbanAction;
struct AutomodAction;
struct Message;
using MessagePtr = std::shared_ptr<const Message>;
@@ -19,6 +21,8 @@ const SystemMessageTag systemMessage{};
const TimeoutMessageTag timeoutMessage{};
MessagePtr makeSystemMessage(const QString &text);
std::pair<MessagePtr, MessagePtr> makeAutomodMessage(
const AutomodAction &action);
struct MessageParseArgs {
bool disablePingSounds = false;
@@ -29,6 +33,7 @@ struct MessageParseArgs {
};
class MessageBuilder
{
public:
MessageBuilder();
@@ -63,5 +68,4 @@ public:
private:
std::shared_ptr<Message> message_;
};
} // namespace chatterino
+4
View File
@@ -268,6 +268,10 @@ void MessageLayout::updateBuffer(QPixmap *buffer, int /*messageIndex*/,
{
backgroundColor = app->themes->messages.backgrounds.alternate;
}
else if (this->message_->flags.has(MessageFlag::AutoMod))
{
backgroundColor = app->themes->messages.backgrounds.automod;
}
painter.fillRect(buffer->rect(), backgroundColor);