mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-25 20:48:52 +03:00
Strip whitespace from room names for QuickSwitcher
This commit is contained in:
parent
7a16e05b14
commit
6d0bc0c05e
3 changed files with 27 additions and 46 deletions
|
@ -136,7 +136,7 @@ public:
|
|||
void populateMembers();
|
||||
std::vector<std::string> joinedRooms();
|
||||
|
||||
QMap<QString, RoomInfo> roomInfo();
|
||||
QMap<QString, RoomInfo> roomInfo(bool withInvites = true);
|
||||
|
||||
//! Calculate & return the name of the room.
|
||||
QString getRoomName(lmdb::txn &txn, lmdb::dbi &statesdb, lmdb::dbi &membersdb);
|
||||
|
@ -331,9 +331,6 @@ private:
|
|||
void saveInvites(lmdb::txn &txn,
|
||||
const std::map<std::string, mtx::responses::InvitedRoom> &rooms);
|
||||
|
||||
//! Remove any saved invites that are not found in the input.
|
||||
void removeStaleInvites(lmdb::txn &txn, const std::map<std::string, bool> &curr);
|
||||
|
||||
//! Sends signals for the rooms that are removed.
|
||||
void removeLeftRooms(lmdb::txn &txn,
|
||||
const std::map<std::string, mtx::responses::LeftRoom> &rooms)
|
||||
|
|
47
src/Cache.cc
47
src/Cache.cc
|
@ -390,31 +390,11 @@ Cache::saveState(const mtx::responses::Sync &res)
|
|||
|
||||
saveInvites(txn, res.rooms.invite);
|
||||
|
||||
std::map<std::string, bool> invites;
|
||||
for (const auto &invite : res.rooms.invite)
|
||||
invites.emplace(std::move(invite.first), true);
|
||||
|
||||
// removeStaleInvites(txn, invites);
|
||||
|
||||
removeLeftRooms(txn, res.rooms.leave);
|
||||
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
void
|
||||
Cache::removeStaleInvites(lmdb::txn &txn, const std::map<std::string, bool> &curr)
|
||||
{
|
||||
auto invitesCursor = lmdb::cursor::open(txn, invitesDb_);
|
||||
|
||||
std::string room_id, room_data;
|
||||
while (invitesCursor.get(room_id, room_data, MDB_NEXT)) {
|
||||
if (curr.find(room_id) == curr.end())
|
||||
lmdb::cursor_del(invitesCursor);
|
||||
}
|
||||
|
||||
invitesCursor.close();
|
||||
}
|
||||
|
||||
void
|
||||
Cache::saveInvites(lmdb::txn &txn, const std::map<std::string, mtx::responses::InvitedRoom> &rooms)
|
||||
{
|
||||
|
@ -554,32 +534,33 @@ Cache::getRoomInfo(const std::vector<std::string> &rooms)
|
|||
}
|
||||
|
||||
QMap<QString, RoomInfo>
|
||||
Cache::roomInfo()
|
||||
Cache::roomInfo(bool withInvites)
|
||||
{
|
||||
QMap<QString, RoomInfo> result;
|
||||
|
||||
auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY);
|
||||
auto roomsCursor = lmdb::cursor::open(txn, roomsDb_);
|
||||
auto invitesCursor = lmdb::cursor::open(txn, invitesDb_);
|
||||
auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY);
|
||||
|
||||
std::string room_id;
|
||||
std::string room_data;
|
||||
|
||||
// Gather info about the joined rooms.
|
||||
auto roomsCursor = lmdb::cursor::open(txn, roomsDb_);
|
||||
while (roomsCursor.get(room_id, room_data, MDB_NEXT)) {
|
||||
RoomInfo tmp = json::parse(room_data);
|
||||
RoomInfo tmp = json::parse(std::move(room_data));
|
||||
result.insert(QString::fromStdString(std::move(room_id)), std::move(tmp));
|
||||
}
|
||||
|
||||
// Gather info about the invites.
|
||||
while (invitesCursor.get(room_id, room_data, MDB_NEXT)) {
|
||||
RoomInfo tmp = json::parse(room_data);
|
||||
result.insert(QString::fromStdString(std::move(room_id)), std::move(tmp));
|
||||
}
|
||||
|
||||
invitesCursor.close();
|
||||
roomsCursor.close();
|
||||
|
||||
if (withInvites) {
|
||||
// Gather info about the invites.
|
||||
auto invitesCursor = lmdb::cursor::open(txn, invitesDb_);
|
||||
while (invitesCursor.get(room_id, room_data, MDB_NEXT)) {
|
||||
RoomInfo tmp = json::parse(room_data);
|
||||
result.insert(QString::fromStdString(std::move(room_id)), std::move(tmp));
|
||||
}
|
||||
invitesCursor.close();
|
||||
}
|
||||
|
||||
txn.commit();
|
||||
|
||||
return result;
|
||||
|
|
|
@ -624,6 +624,11 @@ ChatPage::updateOwnCommunitiesInfo(const QList<QString> &own_communities)
|
|||
void
|
||||
ChatPage::changeTopRoomInfo(const QString &room_id)
|
||||
{
|
||||
if (room_id.isEmpty()) {
|
||||
qWarning() << "can't switch to empty room_id";
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
auto room_info = cache_->getRoomInfo({room_id.toStdString()});
|
||||
|
||||
|
@ -640,12 +645,11 @@ ChatPage::changeTopRoomInfo(const QString &room_id)
|
|||
top_bar_->updateRoomAvatar(roomAvatars_[room_id].toImage());
|
||||
else
|
||||
top_bar_->updateRoomAvatarFromName(name);
|
||||
} catch (const lmdb::error &e) {
|
||||
qWarning() << "failed to change top bar room info"
|
||||
<< QString::fromStdString(e.what());
|
||||
}
|
||||
|
||||
current_room_ = room_id;
|
||||
current_room_ = room_id;
|
||||
} catch (const lmdb::error &e) {
|
||||
qWarning() << "failed to change top bar room info" << e.what();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -712,12 +716,11 @@ ChatPage::showQuickSwitcher()
|
|||
quickSwitcherModal_->setColor(QColor(30, 30, 30, 170));
|
||||
}
|
||||
|
||||
std::map<QString, QString> rooms;
|
||||
|
||||
try {
|
||||
auto info = cache_->roomInfo();
|
||||
std::map<QString, QString> rooms;
|
||||
auto info = cache_->roomInfo(false);
|
||||
for (auto it = info.begin(); it != info.end(); ++it)
|
||||
rooms.emplace(QString::fromStdString(it.value().name), it.key());
|
||||
rooms.emplace(QString::fromStdString(it.value().name).trimmed(), it.key());
|
||||
quickSwitcher_->setRoomList(rooms);
|
||||
quickSwitcherModal_->show();
|
||||
} catch (const lmdb::error &e) {
|
||||
|
|
Loading…
Reference in a new issue