summary refs log tree commit diff
path: root/src/Cache.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-05-05 22:40:24 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-05-05 22:40:24 +0300
commit506cf680728bd7f9124354be8ec6112d973fdac6 (patch)
tree1ebe25b2e2bb019e26a8b039e79646567e8c363e /src/Cache.cc
parentAdd support for retrieving the notification events (#33) (diff)
downloadnheko-506cf680728bd7f9124354be8ec6112d973fdac6.tar.xz
Implement desktop notification for mac
Diffstat (limited to 'src/Cache.cc')
-rw-r--r--src/Cache.cc36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/Cache.cc b/src/Cache.cc

index 8b00a828..8964c0e0 100644 --- a/src/Cache.cc +++ b/src/Cache.cc
@@ -528,6 +528,34 @@ Cache::roomsWithStateUpdates(const mtx::responses::Sync &res) return rooms; } +RoomInfo +Cache::singleRoomInfo(const std::string &room_id) +{ + auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY); + + lmdb::val data; + + // Check if the room is joined. + if (lmdb::dbi_get(txn, roomsDb_, lmdb::val(room_id), data)) { + try { + RoomInfo tmp = json::parse(std::string(data.data(), data.size())); + tmp.member_count = getMembersDb(txn, room_id).size(txn); + + txn.commit(); + + return tmp; + } catch (const json::exception &e) { + qWarning() + << "failed to parse room info:" << QString::fromStdString(room_id) + << QString::fromStdString(std::string(data.data(), data.size())); + } + } + + txn.commit(); + + return RoomInfo(); +} + std::map<QString, RoomInfo> Cache::getRoomInfo(const std::vector<std::string> &rooms) { @@ -893,11 +921,17 @@ Cache::getInviteRoomTopic(lmdb::txn &txn, lmdb::dbi &db) QImage Cache::getRoomAvatar(const QString &room_id) { + return getRoomAvatar(room_id.toStdString()); +} + +QImage +Cache::getRoomAvatar(const std::string &room_id) +{ auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY); lmdb::val response; - if (!lmdb::dbi_get(txn, roomsDb_, lmdb::val(room_id.toStdString()), response)) { + if (!lmdb::dbi_get(txn, roomsDb_, lmdb::val(room_id), response)) { txn.commit(); return QImage(); }