fix: Add signature to chat history

This commit is contained in:
Petr Mironychev
2025-11-28 12:24:47 +01:00
parent 1f9c60ffb2
commit f6d647d5c8
5 changed files with 81 additions and 37 deletions

View File

@ -131,7 +131,9 @@ void ChatModel::addMessage(
ChatRole role,
const QString &id,
const QList<Context::ContentFile> &attachments,
const QList<ImageAttachment> &images)
const QList<ImageAttachment> &images,
bool isRedacted,
const QString &signature)
{
QString fullContent = content;
if (!attachments.isEmpty()) {
@ -148,12 +150,16 @@ void ChatModel::addMessage(
lastMessage.content = content;
lastMessage.attachments = attachments;
lastMessage.images = images;
lastMessage.isRedacted = isRedacted;
lastMessage.signature = signature;
emit dataChanged(index(m_messages.size() - 1), index(m_messages.size() - 1));
} else {
beginInsertRows(QModelIndex(), m_messages.size(), m_messages.size());
Message newMessage{role, content, id};
newMessage.attachments = attachments;
newMessage.images = images;
newMessage.isRedacted = isRedacted;
newMessage.signature = signature;
m_messages.append(newMessage);
endInsertRows();

View File

@ -73,7 +73,9 @@ public:
ChatRole role,
const QString &id,
const QList<Context::ContentFile> &attachments = {},
const QList<ImageAttachment> &images = {});
const QList<ImageAttachment> &images = {},
bool isRedacted = false,
const QString &signature = QString());
Q_INVOKABLE void clear();
Q_INVOKABLE QList<MessagePart> processMessageContent(const QString &content) const;

View File

@ -94,7 +94,11 @@ QJsonObject ChatSerializer::serializeMessage(const ChatModel::Message &message,
messageObj["role"] = static_cast<int>(message.role);
messageObj["content"] = message.content;
messageObj["id"] = message.id;
messageObj["isRedacted"] = message.isRedacted;
if (message.isRedacted) {
messageObj["isRedacted"] = true;
}
if (!message.signature.isEmpty()) {
messageObj["signature"] = message.signature;
}
@ -167,8 +171,11 @@ bool ChatSerializer::deserializeChat(ChatModel *model, const QJsonObject &json,
model->setLoadingFromHistory(true);
for (const auto &message : messages) {
model->addMessage(message.content, message.role, message.id, message.attachments, message.images);
LOG_MESSAGE(QString("Loaded message with %1 image(s)").arg(message.images.size()));
model->addMessage(message.content, message.role, message.id, message.attachments, message.images, message.isRedacted, message.signature);
LOG_MESSAGE(QString("Loaded message with %1 image(s), isRedacted=%2, signature length=%3")
.arg(message.images.size())
.arg(message.isRedacted)
.arg(message.signature.length()));
}
model->setLoadingFromHistory(false);