There was always supposed to be a failed state for events

This commit is contained in:
Nicolas Werner 2023-01-12 23:51:22 +01:00
parent 3507698ea5
commit ba56c9f408
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
2 changed files with 11 additions and 4 deletions

View file

@ -698,7 +698,8 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r
return QVariant(QString::fromStdString(event_id(event)));
}
case State: {
auto id = QString::fromStdString(event_id(event));
auto idstr = event_id(event);
auto id = QString::fromStdString(idstr);
auto containsOthers = [](const auto &vec) {
for (const auto &e : vec)
if (e.second != http::client()->user_id().to_string())
@ -709,9 +710,13 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r
// only show read receipts for messages not from us
if (acc::sender(event) != http::client()->user_id().to_string())
return qml_mtx_events::Empty;
else if (!id.isEmpty() && id[0] == 'm')
return qml_mtx_events::Sent;
else if (read.contains(id) || containsOthers(cache::readReceipts(id, room_id_)))
else if (!id.isEmpty() && id[0] == 'm') {
auto pending = cache::client()->pendingEvents(this->room_id_.toStdString());
if (std::find(pending.begin(), pending.end(), idstr) != pending.end())
return qml_mtx_events::Sent;
else
return qml_mtx_events::Failed;
} else if (read.contains(id) || containsOthers(cache::readReceipts(id, room_id_)))
return qml_mtx_events::Read;
else
return qml_mtx_events::Received;

View file

@ -149,6 +149,8 @@ enum EventState
Read,
//! The client sent the message. Not yet received.
Sent,
//! The client sent the message, but it failed.
Failed,
//! When the message is loaded from cache or backfill.
Empty,
};