feat: include more data when copying messages as JSON (#5600)

This commit is contained in:
nerix
2024-09-28 12:40:15 +02:00
committed by GitHub
parent edf18a7a0f
commit e149be3820
16 changed files with 504 additions and 33 deletions
+33
View File
@@ -1,12 +1,20 @@
#include "messages/MessageThread.hpp"
#include "common/Literals.hpp"
#include "messages/Message.hpp"
#include "util/DebugCount.hpp"
#include "util/QMagicEnum.hpp"
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonValue>
#include <utility>
namespace chatterino {
using namespace literals;
MessageThread::MessageThread(std::shared_ptr<const Message> rootMessage)
: rootMessageId_(rootMessage->id)
, rootMessage_(std::move(rootMessage))
@@ -80,4 +88,29 @@ void MessageThread::markUnsubscribed()
this->subscriptionUpdated();
}
QJsonObject MessageThread::toJson() const
{
QJsonObject obj{
{"rootId"_L1, this->rootMessageId_},
{"subscription"_L1, qmagicenum::enumNameString(this->subscription_)},
};
QJsonArray replies;
for (const auto &msg : this->replies_)
{
auto locked = msg.lock();
if (locked)
{
replies.append(locked->id);
}
else
{
replies.append(QJsonValue::Null);
}
}
obj["replies"_L1] = replies;
return obj;
}
} // namespace chatterino