Remove dead code to calculate last message

This commit is contained in:
Nicolas Werner 2021-07-01 12:45:47 +02:00
parent 568ec845da
commit 5b016cbc68
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
4 changed files with 3 additions and 98 deletions

View file

@ -1794,8 +1794,6 @@ Cache::roomInfo(bool withInvites)
while (roomsCursor.get(room_id, room_data, MDB_NEXT)) {
RoomInfo tmp = json::parse(std::move(room_data));
tmp.member_count = getMembersDb(txn, std::string(room_id)).size(txn);
tmp.msgInfo = getLastMessageInfo(txn, std::string(room_id));
result.insert(QString::fromStdString(std::string(room_id)), std::move(tmp));
}
roomsCursor.close();
@ -2022,96 +2020,6 @@ Cache::getTimelineEventId(const std::string &room_id, uint64_t index)
return std::string(val);
}
DescInfo
Cache::getLastMessageInfo(lmdb::txn &txn, const std::string &room_id)
{
lmdb::dbi orderDb;
try {
orderDb = getOrderToMessageDb(txn, room_id);
} catch (lmdb::runtime_error &e) {
nhlog::db()->error("Can't open db for room '{}', probably doesn't exist yet. ({})",
room_id,
e.what());
return {};
}
lmdb::dbi eventsDb;
try {
eventsDb = getEventsDb(txn, room_id);
} catch (lmdb::runtime_error &e) {
nhlog::db()->error("Can't open db for room '{}', probably doesn't exist yet. ({})",
room_id,
e.what());
return {};
}
lmdb::dbi membersdb;
try {
membersdb = getMembersDb(txn, room_id);
} catch (lmdb::runtime_error &e) {
nhlog::db()->error("Can't open db for room '{}', probably doesn't exist yet. ({})",
room_id,
e.what());
return {};
}
if (orderDb.size(txn) == 0)
return DescInfo{};
const auto local_user = utils::localUser();
DescInfo fallbackDesc{};
std::string_view indexVal, event_id;
auto cursor = lmdb::cursor::open(txn, orderDb);
bool first = true;
while (cursor.get(indexVal, event_id, first ? MDB_LAST : MDB_PREV)) {
first = false;
std::string_view event;
bool success = eventsDb.get(txn, event_id, event);
if (!success)
continue;
auto obj = json::parse(event);
if (fallbackDesc.event_id.isEmpty() && obj["type"] == "m.room.member" &&
obj["state_key"] == local_user.toStdString() &&
obj["content"]["membership"] == "join") {
uint64_t ts = obj["origin_server_ts"];
auto time = QDateTime::fromMSecsSinceEpoch(ts);
fallbackDesc = DescInfo{QString::fromStdString(obj["event_id"]),
local_user,
tr("You joined this room."),
utils::descriptiveTime(time),
ts,
time};
}
if (!(obj["type"] == "m.room.message" || obj["type"] == "m.sticker" ||
obj["type"] == "m.call.invite" || obj["type"] == "m.call.answer" ||
obj["type"] == "m.call.hangup" || obj["type"] == "m.room.encrypted"))
continue;
mtx::events::collections::TimelineEvent te;
mtx::events::collections::from_json(obj, te);
std::string_view info;
MemberInfo m;
if (membersdb.get(txn, obj["sender"].get<std::string>(), info)) {
m = json::parse(std::string_view(info.data(), info.size()));
}
cursor.close();
return utils::getMessageDescription(
te.data, local_user, QString::fromStdString(m.name));
}
cursor.close();
return fallbackDesc;
}
QHash<QString, RoomInfo>
Cache::invites()
{

View file

@ -83,8 +83,6 @@ struct RoomInfo
//! Who can access to the room.
mtx::events::state::JoinRule join_rule = mtx::events::state::JoinRule::Public;
bool guest_access = false;
//! Metadata describing the last message in the timeline.
DescInfo msgInfo;
//! The list of tags associated with this room
std::vector<std::string> tags;
};

View file

@ -334,7 +334,6 @@ private:
std::optional<MemberInfo> getMember(const std::string &room_id, const std::string &user_id);
std::string getLastEventId(lmdb::txn &txn, const std::string &room_id);
DescInfo getLastMessageInfo(lmdb::txn &txn, const std::string &room_id);
void saveTimelineMessages(lmdb::txn &txn,
lmdb::dbi &eventsDb,
const std::string &room_id,

View file

@ -116,11 +116,11 @@ RoomlistModel::data(const QModelIndex &index, int role) const
case Roles::RoomId:
return roomid;
case Roles::LastMessage:
return room.msgInfo.body;
return QString();
case Roles::Time:
return room.msgInfo.descriptiveTime;
return QString();
case Roles::Timestamp:
return QVariant(static_cast<quint64>(room.msgInfo.timestamp));
return QVariant(static_cast<quint64>(0));
case Roles::HasUnreadMessages:
case Roles::HasLoudNotification:
return false;