added basic keyword ignore setting

This commit is contained in:
fourtf
2018-01-23 21:33:49 +01:00
parent 91d45214d9
commit dd05ea28fe
13 changed files with 195 additions and 7 deletions
+3 -1
View File
@@ -255,7 +255,9 @@ void IrcManager::privateMessageReceived(Communi::IrcPrivateMessage *message)
twitch::TwitchMessageBuilder builder(c.get(), message, args);
c->addMessage(builder.parse());
if (!builder.isIgnored()) {
c->addMessage(builder.parse());
}
}
void IrcManager::messageReceived(Communi::IrcMessage *message)
+20
View File
@@ -17,6 +17,7 @@ void _registerSetting(std::weak_ptr<pajlada::Settings::ISettingData> setting)
SettingManager::SettingManager()
: snapshot(nullptr)
, _ignoredKeywords(new std::vector<QString>)
{
this->wordFlagsListener.addSetting(this->showTimestamps);
this->wordFlagsListener.addSetting(this->showBadges);
@@ -29,6 +30,7 @@ SettingManager::SettingManager()
};
this->moderationActions.connect([this](auto, auto) { this->updateModerationActions(); });
this->ignoredKeywords.connect([this](auto, auto) { this->updateIgnoredKeywords(); });
}
MessageElement::Flags SettingManager::getWordFlags()
@@ -135,6 +137,11 @@ std::vector<ModerationAction> SettingManager::getModerationActions() const
return this->_moderationActions;
}
const std::shared_ptr<std::vector<QString>> SettingManager::getIgnoredKeywords() const
{
return this->_ignoredKeywords;
}
void SettingManager::updateModerationActions()
{
auto &resources = singletons::ResourceManager::getInstance();
@@ -202,5 +209,18 @@ void SettingManager::updateModerationActions()
}
}
}
void SettingManager::updateIgnoredKeywords()
{
static QRegularExpression newLineRegex("(\r\n?|\n)+");
auto items = new std::vector<QString>();
for (QString line : this->ignoredKeywords.getValue().split(newLineRegex)) {
items->push_back(line);
}
this->_ignoredKeywords = std::shared_ptr<std::vector<QString>>(items);
}
} // namespace singletons
} // namespace chatterino
+7
View File
@@ -75,6 +75,10 @@ public:
/// Links
BoolSetting linksDoubleClickOnly = {"/links/doubleClickToOpen", false};
/// Ingored Users
BoolSetting enableTwitchIgnoredUsers = {"/ignore/enableTwitchIgnoredUsers", true};
QStringSetting ignoredKeywords = {"/ignore/ignoredKeywords", ""};
/// Moderation
QStringSetting moderationActions = {"/moderation/actions", "/ban {user}\n/timeout {user} 300"};
@@ -107,6 +111,7 @@ public:
void recallSnapshot();
std::vector<ModerationAction> getModerationActions() const;
const std::shared_ptr<std::vector<QString>> getIgnoredKeywords() const;
signals:
void wordFlagsChanged();
@@ -114,10 +119,12 @@ signals:
private:
std::vector<ModerationAction> _moderationActions;
std::unique_ptr<rapidjson::Document> snapshot;
std::shared_ptr<std::vector<QString>> _ignoredKeywords;
SettingManager();
void updateModerationActions();
void updateIgnoredKeywords();
messages::MessageElement::Flags wordFlags = messages::MessageElement::Default;