#include "messages/MessageThread.hpp" #include "messages/Message.hpp" #include "util/DebugCount.hpp" #include namespace chatterino { MessageThread::MessageThread(std::shared_ptr rootMessage) : rootMessageId_(rootMessage->id) , rootMessage_(std::move(rootMessage)) { DebugCount::increase("message threads"); } MessageThread::~MessageThread() { DebugCount::decrease("message threads"); } void MessageThread::addToThread(const std::shared_ptr &message) { this->replies_.emplace_back(message); } void MessageThread::addToThread(const std::weak_ptr &message) { this->replies_.push_back(message); } size_t MessageThread::liveCount() const { size_t count = 0; for (auto reply : this->replies_) { if (!reply.expired()) { ++count; } } return count; } size_t MessageThread::liveCount( const std::shared_ptr &exclude) const { size_t count = 0; for (auto reply : this->replies_) { if (!reply.expired() && reply.lock() != exclude) { ++count; } } return count; } void MessageThread::markSubscribed() { if (this->subscription_ == Subscription::Subscribed) { return; } this->subscription_ = Subscription::Subscribed; this->subscriptionUpdated(); } void MessageThread::markUnsubscribed() { if (this->subscription_ == Subscription::Unsubscribed) { return; } this->subscription_ = Subscription::Unsubscribed; this->subscriptionUpdated(); } } // namespace chatterino