encrypted messages now are displayed in the feed

This commit is contained in:
Blue 2023-11-06 20:57:08 -03:00
parent 637eb702a8
commit 0a530bfa93
Signed by: blue
GPG key ID: 9B203B252A63EE38
34 changed files with 439 additions and 245 deletions

View file

@ -29,6 +29,7 @@ const QHash<int, QByteArray> Models::MessageFeed::roles = {
{Sender, "sender"},
{Date, "date"},
{DeliveryState, "deliveryState"},
{Encryption, "encryption"},
{Correction, "correction"},
{SentByMe,"sentByMe"},
{Avatar, "avatar"},
@ -51,20 +52,16 @@ Models::MessageFeed::MessageFeed(const Element* ri, QObject* parent):
failedUploads(),
unreadMessages(new std::set<QString>()),
observersAmount(0)
{
}
{}
Models::MessageFeed::~MessageFeed()
{
Models::MessageFeed::~MessageFeed() {
delete unreadMessages;
for (Shared::Message* message : storage) {
for (Shared::Message* message : storage)
delete message;
}
}
void Models::MessageFeed::addMessage(const Shared::Message& msg)
{
void Models::MessageFeed::addMessage(const Shared::Message& msg) {
QString id = msg.getId();
StorageById::const_iterator itr = indexById.find(id);
if (itr != indexById.end()) {
@ -75,11 +72,11 @@ void Models::MessageFeed::addMessage(const Shared::Message& msg)
Shared::Message* copy = new Shared::Message(msg);
StorageByTime::const_iterator tItr = indexByTime.upper_bound(msg.getTime());
int position;
if (tItr == indexByTime.end()) {
if (tItr == indexByTime.end())
position = storage.size();
} else {
else
position = indexByTime.rank(tItr);
}
beginInsertRows(QModelIndex(), position, position);
storage.insert(copy);
endInsertRows();
@ -93,8 +90,7 @@ void Models::MessageFeed::addMessage(const Shared::Message& msg)
}
}
void Models::MessageFeed::changeMessage(const QString& id, const QMap<QString, QVariant>& data)
{
void Models::MessageFeed::changeMessage(const QString& id, const QMap<QString, QVariant>& data) {
StorageById::iterator itr = indexById.find(id);
if (itr == indexById.end()) {
qDebug() << "received a command to change a message, but the message couldn't be found, skipping";
@ -159,9 +155,8 @@ void Models::MessageFeed::changeMessage(const QString& id, const QMap<QString, Q
}
QVector<int> cr;
for (MessageRoles role : changeRoles) {
for (MessageRoles role : changeRoles)
cr.push_back(role);
}
emit dataChanged(index, index, cr);
@ -173,14 +168,15 @@ void Models::MessageFeed::changeMessage(const QString& id, const QMap<QString, Q
}
}
std::set<Models::MessageFeed::MessageRoles> Models::MessageFeed::detectChanges(const Shared::Message& msg, const QMap<QString, QVariant>& data) const
{
std::set<Models::MessageFeed::MessageRoles> Models::MessageFeed::detectChanges(
const Shared::Message& msg,
const QMap<QString, QVariant>& data
) const {
std::set<MessageRoles> roles;
Shared::Message::State state = msg.getState();
QMap<QString, QVariant>::const_iterator itr = data.find("state");
if (itr != data.end() && static_cast<Shared::Message::State>(itr.value().toUInt()) != state) {
if (itr != data.end() && static_cast<Shared::Message::State>(itr.value().toUInt()) != state)
roles.insert(MessageRoles::DeliveryState);
}
itr = data.find("outOfBandUrl");
bool att = false;
@ -255,9 +251,8 @@ QVariant Models::MessageFeed::data(const QModelIndex& index, int role) const {
case Qt::DisplayRole:
case Text: {
QString body = msg->getBody();
if (body != msg->getOutOfBandUrl()) {
if (body != msg->getOutOfBandUrl())
answer = body;
}
}
break;
case Sender:
@ -276,6 +271,9 @@ QVariant Models::MessageFeed::data(const QModelIndex& index, int role) const {
case DeliveryState:
answer = static_cast<unsigned int>(msg->getState());
break;
case Encryption:
answer = QVariant::fromValue(msg->getEncryption());
break;
case Correction:
answer.setValue(fillCorrection(*msg));;
break;
@ -318,13 +316,13 @@ QVariant Models::MessageFeed::data(const QModelIndex& index, int role) const {
item.sentByMe = sentByMe(*msg);
item.date = msg->getTime();
item.state = msg->getState();
item.encryption = msg->getEncryption();
item.error = msg->getErrorText();
item.correction = fillCorrection(*msg);
QString body = msg->getBody();
if (body != msg->getOutOfBandUrl()) {
if (body != msg->getOutOfBandUrl())
item.text = body;
}
item.avatar.clear();
if (item.sentByMe) {
@ -419,13 +417,11 @@ QModelIndex Models::MessageFeed::index(int row, int column, const QModelIndex& p
return QModelIndex();
StorageByTime::iterator itr = indexByTime.nth(row);
if (itr != indexByTime.end()) {
Shared::Message* msg = *itr;
return createIndex(row, column, msg);
} else {
if (itr == indexByTime.end())
return QModelIndex();
}
Shared::Message* msg = *itr;
return createIndex(row, column, msg);
}
QHash<int, QByteArray> Models::MessageFeed::roleNames() const {return roles;}