diff --git a/src/RoomInfoListItem.cpp b/src/RoomInfoListItem.cpp index 8bebb0f5..77de8d5a 100644 --- a/src/RoomInfoListItem.cpp +++ b/src/RoomInfoListItem.cpp @@ -107,18 +107,6 @@ RoomInfoListItem::RoomInfoListItem(QString room_id, RoomInfo info, QWidget *pare , unreadHighlightedMsgCount_(0) { init(parent); - - QString emptyEventId; - - // HACK - // We use fake message info with an old date to pin - // the invite events to the top. - // - // State events in invited rooms don't contain timestamp info, - // so we can't use them for sorting. - if (roomType_ == RoomType::Invited) - lastMsgInfo_ = { - emptyEventId, "-", "-", "-", QDateTime::currentDateTime().addYears(10)}; } void diff --git a/src/RoomList.cpp b/src/RoomList.cpp index c5e05621..dfd4eff8 100644 --- a/src/RoomList.cpp +++ b/src/RoomList.cpp @@ -15,6 +15,8 @@ * along with this program. If not, see . */ +#include + #include #include #include @@ -191,6 +193,9 @@ RoomList::sync(const std::map &info) { for (const auto &room : info) updateRoom(room.first, room.second); + + if (!info.empty()) + sortRoomsByLastMessage(); } void @@ -270,7 +275,9 @@ RoomList::sortRoomsByLastMessage() continue; // Not a room message. - if (room->lastMessageInfo().userid.isEmpty()) + if (room->isInvite()) + times.emplace(std::numeric_limits::max(), room); + else if (room->lastMessageInfo().userid.isEmpty()) times.emplace(0, room); else times.emplace(room->lastMessageInfo().datetime.toMSecsSinceEpoch(), room);