From 0b4c521c9b2fa43a117ebfb5044057c6a51ee213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82?= Date: Sat, 5 Jun 2021 16:27:14 +0200 Subject: [PATCH] Refactored system message received upon trying to send a message while anonymous (#2862) Co-authored-by: pajlada --- CHANGELOG.md | 1 + src/providers/twitch/TwitchChannel.cpp | 32 ++++++++++++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54483089..74cba16d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Minor: Limit the number of recent chatters to improve memory usage and reduce freezes. (#2796, #2814) - Minor: Added `/popout` command. Usage: `/popout [channel]`. It opens browser chat for the provided channel. Can also be used without arguments to open current channels browser chat. (#2556, #2812) - Minor: Improved matching of game names when using `/setgame` command (#2636) +- Minor: Added a link to accounts page in settings to "You need to be logged in to send messages" message. (#2862) - Minor: Switch to Twitch v2 emote API for animated emote support. (#2863) - Bugfix: Fixed FFZ emote links for global emotes (#2807, #2808) diff --git a/src/providers/twitch/TwitchChannel.cpp b/src/providers/twitch/TwitchChannel.cpp index de6a1b5e..fefd048b 100644 --- a/src/providers/twitch/TwitchChannel.cpp +++ b/src/providers/twitch/TwitchChannel.cpp @@ -328,11 +328,33 @@ void TwitchChannel::sendMessage(const QString &message) if (!app->accounts->twitch.isLoggedIn()) { - // XXX: It would be nice if we could add a link here somehow that opened - // the "account manager" dialog - this->addMessage( - makeSystemMessage("You need to log in to send messages. You can " - "link your Twitch account in the settings.")); + if (message.isEmpty()) + { + return; + } + + const auto linkColor = MessageColor(MessageColor::Link); + const auto accountsLink = Link(Link::OpenAccountsPage, QString()); + const auto currentUser = getApp()->accounts->twitch.getCurrent(); + const auto expirationText = + QString("You need to log in to send messages. You can link your " + "Twitch account"); + const auto loginPromptText = QString("in the settings."); + + auto builder = MessageBuilder(); + builder.message().flags.set(MessageFlag::System); + builder.message().flags.set(MessageFlag::DoNotTriggerNotification); + + builder.emplace(); + builder.emplace(expirationText, MessageElementFlag::Text, + MessageColor::System); + builder + .emplace(loginPromptText, MessageElementFlag::Text, + linkColor) + ->setLink(accountsLink); + + this->addMessage(builder.release()); + return; }