diff --git a/CHANGELOG.md b/CHANGELOG.md index eb0576fef47..8b9039a483a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unversioned - Minor: Fixed usercard resizing improperly without recent messages. (#6496) +- Minor: Added setting for character limit of deleted messages. (#6491) - Dev: Update release documentation. (#6498) - Dev: Make code sanitizers opt in with the `CHATTERINO_SANITIZER_SUPPORT` CMake option. After that's enabled, use the `SANITIZE_*` flag to enable individual sanitizers. (#6493) - Dev: Remove unused QTextCodec includes. (#6487) diff --git a/src/messages/MessageBuilder.cpp b/src/messages/MessageBuilder.cpp index 05123f2eef3..4a68cda8ac0 100644 --- a/src/messages/MessageBuilder.cpp +++ b/src/messages/MessageBuilder.cpp @@ -1257,9 +1257,10 @@ MessagePtr MessageBuilder::makeDeletionMessageFromIRC( MessageColor::System); auto deletedMessageText = originalMessage->messageText; - if (deletedMessageText.length() > 50) + auto limit = getSettings()->deletedMessageLengthLimit.getValue(); + if (limit > 0 && deletedMessageText.length() > limit) { - deletedMessageText = deletedMessageText.left(50) + "…"; + deletedMessageText = deletedMessageText.left(limit) + "…"; } builder diff --git a/src/providers/twitch/eventsub/MessageBuilder.cpp b/src/providers/twitch/eventsub/MessageBuilder.cpp index 984838c98c5..3a692cf71d1 100644 --- a/src/providers/twitch/eventsub/MessageBuilder.cpp +++ b/src/providers/twitch/eventsub/MessageBuilder.cpp @@ -331,14 +331,15 @@ void makeModerateMessage( builder.emplaceSystemTextAndUpdate("saying:", text); - if (action.messageBody.view().length() > 50) + auto limit = getSettings()->deletedMessageLengthLimit.getValue(); + if (limit > 0 && action.messageBody.view().length() > limit) { builder - .emplace(action.messageBody.qt().left(50) + "…", + .emplace(action.messageBody.qt().left(limit) + "…", MessageElementFlag::Text, MessageColor::Text) ->setLink({Link::JumpToMessage, action.messageID.qt()}); - text.append(action.messageBody.qt().left(50) + "…"); + text.append(action.messageBody.qt().left(limit) + "…"); } else { diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index aeff2d6f28e..aa4eea5b039 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -320,6 +320,13 @@ class Settings true, }; + /// The maximum length the contents of a deleted message can be + /// before we truncate it in the chat + IntSetting deletedMessageLengthLimit = { + "/behaviour/deletedMessageLengthLimit", + 50, + }; + // Auto-completion BoolSetting onlyFetchChattersForSmallerStreamers = { "/behaviour/autocompletion/onlyFetchChattersForSmallerStreamers", true}; diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index a9016f4bd22..7778b94660a 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -556,6 +556,22 @@ void GeneralPage::initLayout(GeneralPageView &layout) [](auto args) { return fuzzyToInt(args.value, 0); }); + layout.addDropdown( + "Limit length of deleted messages", + {"No limit", "50 characters", "100 characters", "200 characters", + "300 characters", "400 characters"}, + s.deletedMessageLengthLimit, + [](auto val) { + return val ? QString::number(val) + " characters" + : QString("No limit"); + }, + [](const auto &args) { + return fuzzyToInt(args.value, 0); + }, + true, + {"Limits the amount of characters displayed in deleted messages " + "when announced via system message."}); + layout.addSeparator(); SettingWidget::checkbox("Draw a line below the most recent message before "