summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Cache.cpp12
-rw-r--r--src/timeline/TimelineModel.cpp12
2 files changed, 19 insertions, 5 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index 016ba371..8cfc4b55 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -960,9 +960,15 @@ Cache::saveState(const mtx::responses::Sync &res) for (const auto &room : res.rooms.join) { if (!room.second.ephemeral.receipts.empty()) { std::vector<QString> receipts; - for (const auto &receipt : room.second.ephemeral.receipts) - if (receipt.first != user_id) - receipts.push_back(QString::fromStdString(receipt.first)); + for (const auto &receipt : room.second.ephemeral.receipts) { + for (const auto &receiptUsersTs : receipt.second) { + if (receiptUsersTs.first != user_id) { + receipts.push_back( + QString::fromStdString(receipt.first)); + break; + } + } + } if (!receipts.empty()) emit newReadReceipts(QString::fromStdString(room.first), receipts); } diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 1c0abd17..df2051e6 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp
@@ -321,16 +321,24 @@ TimelineModel::data(const QString &id, int role) const } case Id: return id; - case State: + case State: { + auto containsOthers = [](const auto &vec) { + for (const auto &e : vec) + if (e.second != http::client()->user_id().to_string()) + return true; + return false; + }; + // 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 (pending.contains(id)) return qml_mtx_events::Sent; - else if (read.contains(id) || cache::readReceipts(id, room_id_).size() > 1) + else if (read.contains(id) || containsOthers(cache::readReceipts(id, room_id_))) return qml_mtx_events::Read; else return qml_mtx_events::Received; + } case IsEncrypted: { return std::holds_alternative< mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>>(events[id]);