Skip to content

Commit

Permalink
Merge branch 'main' into feature/shared-chat-badge
Browse files Browse the repository at this point in the history
  • Loading branch information
iProdigy committed Oct 21, 2024
2 parents de40d42 + 2ec8fa8 commit d80dd6d
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 47 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@
- Dev: Emojis now use flags instead of a set of strings for capabilities. (#5616)
- Dev: Move plugins to Sol2. (#5622)
- Dev: Refactored static `MessageBuilder` helpers to standalone functions. (#5652)
- Dev: Decoupled reply parsing from `MessageBuilder`. (#5660)
- Dev: Decoupled reply parsing from `MessageBuilder`. (#5660, #5668)
- Dev: Refactored IRC message building. (#5663)

## 2.5.1
Expand Down
5 changes: 5 additions & 0 deletions src/messages/MessageBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2393,6 +2393,11 @@ void MessageBuilder::parseThread(const QString &messageContent,
this->message().replyParent = parent;
thread->addToThread(std::weak_ptr{this->message_});

if (thread->subscribed())
{
this->message().flags.set(MessageFlag::SubscribedThread);
}

// enable reply flag
this->message().flags.set(MessageFlag::ReplyMessage);

Expand Down
66 changes: 20 additions & 46 deletions src/providers/twitch/IrcMessageHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,47 +123,34 @@ int stripLeadingReplyMention(const QVariantMap &tags, QString &content)
return 0;
}

[[nodiscard]] bool shouldHighlightReplyThread(
const QVariantMap &tags, const QString &senderLogin,
std::shared_ptr<MessageThread> &thread, bool isNew)
void checkThreadSubscription(const QVariantMap &tags,
const QString &senderLogin,
std::shared_ptr<MessageThread> &thread)
{
const auto &currentLogin =
getApp()->getAccounts()->twitch.getCurrent()->getUserName();

if (thread->subscribed())
{
return true;
}

if (thread->unsubscribed())
if (thread->subscribed() || thread->unsubscribed())
{
return false;
return;
}

if (getSettings()->autoSubToParticipatedThreads)
{
if (isNew)
{
if (const auto it = tags.find("reply-parent-user-login");
it != tags.end())
{
auto name = it.value().toString();
if (name == currentLogin)
{
thread->markSubscribed();
return true; // already marked as participated
}
}
}
const auto &currentLogin =
getApp()->getAccounts()->twitch.getCurrent()->getUserName();

if (senderLogin == currentLogin)
{
thread->markSubscribed();
// don't set the highlight here
}
else if (const auto it = tags.find("reply-parent-user-login");
it != tags.end())
{
auto name = it.value().toString();
if (name == currentLogin)
{
thread->markSubscribed();
}
}
}

return false;
}

ChannelPtr channelOrEmptyByTarget(const QString &target,
Expand Down Expand Up @@ -243,7 +230,6 @@ QMap<QString, QString> parseBadges(const QString &badgesString)
struct ReplyContext {
std::shared_ptr<MessageThread> thread;
MessagePtr parent;
bool highlight = false;
};

[[nodiscard]] ReplyContext getReplyContext(
Expand All @@ -265,8 +251,7 @@ struct ReplyContext {
if (owned)
{
// Thread already exists (has a reply)
ctx.highlight = shouldHighlightReplyThread(
tags, message->nick(), owned, false);
checkThreadSubscription(tags, message->nick(), owned);
ctx.thread = owned;
rootThread = owned;
}
Expand Down Expand Up @@ -301,8 +286,7 @@ struct ReplyContext {
{
std::shared_ptr<MessageThread> newThread =
std::make_shared<MessageThread>(foundMessage);
ctx.highlight = shouldHighlightReplyThread(
tags, message->nick(), newThread, true);
checkThreadSubscription(tags, message->nick(), newThread);

ctx.thread = newThread;
rootThread = newThread;
Expand Down Expand Up @@ -724,10 +708,6 @@ std::vector<MessagePtr> IrcMessageHandler::parseMessageWithReply(

if (built)
{
if (replyCtx.highlight)
{
built->flags.set(MessageFlag::SubscribedThread);
}
builtMessages.emplace_back(built);
MessageBuilder::triggerHighlights(channel, alert);
}
Expand Down Expand Up @@ -1552,8 +1532,7 @@ void IrcMessageHandler::addMessage(Communi::IrcMessage *message,
{
// Thread already exists (has a reply)
auto thread = threadIt->second.lock();
replyCtx.highlight = shouldHighlightReplyThread(
tags, message->nick(), thread, false);
checkThreadSubscription(tags, message->nick(), thread);
replyCtx.thread = thread;
rootThread = thread;
}
Expand All @@ -1565,8 +1544,7 @@ void IrcMessageHandler::addMessage(Communi::IrcMessage *message,
{
// Found root reply message
auto newThread = std::make_shared<MessageThread>(root);
replyCtx.highlight = shouldHighlightReplyThread(
tags, message->nick(), newThread, true);
checkThreadSubscription(tags, message->nick(), newThread);

replyCtx.thread = newThread;
rootThread = newThread;
Expand Down Expand Up @@ -1621,10 +1599,6 @@ void IrcMessageHandler::addMessage(Communi::IrcMessage *message,
msg->flags.set(MessageFlag::Subscription);
msg->flags.unset(MessageFlag::Highlighted);
}
if (replyCtx.highlight)
{
msg->flags.set(MessageFlag::SubscribedThread);
}

IrcMessageHandler::setSimilarityFlags(msg, chan);

Expand Down

0 comments on commit d80dd6d

Please sign in to comment.